platform/upstream/dotnet/runtime.git
3 years agoFix length check for Regex BOL FindFirstChar optimization (#55574)
Stephen Toub [Tue, 13 Jul 2021 21:10:18 +0000 (17:10 -0400)]
Fix length check for Regex BOL FindFirstChar optimization (#55574)

For a beginning-of-line anchor, in FindFirstChar we use IndexOf to quickly skip ahead to the next \n.  But we neglected to check to see whether that brought us past an explicitly specified end position.  This just adds the missing check.

3 years agoRemove IL2050 in System.Management (#54810)
Andrii Kurdiumov [Tue, 13 Jul 2021 20:47:02 +0000 (02:47 +0600)]
Remove IL2050 in System.Management (#54810)

* Remove IL2050 in System.Management
Remove unused functions which trigger IL2050
As per discussed in #54317

* Fix location of variables

3 years agoRemove IL205 warning for System.Data.Odbc (#54809)
Andrii Kurdiumov [Tue, 13 Jul 2021 20:44:03 +0000 (02:44 +0600)]
Remove IL205 warning for System.Data.Odbc (#54809)

Function which produce warning not used anywhere

3 years ago[mono] Fix loader incompatibility w.r.t. Resolving event (#54815)
Ulrich Weigand [Tue, 13 Jul 2021 20:42:47 +0000 (22:42 +0200)]
[mono] Fix loader incompatibility w.r.t. Resolving event (#54815)

* When loading a non-satellite assembly into a non-default ALC,
  invoke the Resolving event in the default ALC first.

* Fixes https://github.com/dotnet/runtime/issues/54814

3 years ago[QUIC] Move ByteMixingOrNativeAVE_MinimalFailingTest to OuterLoop (#55595)
Natalia Kondratyeva [Tue, 13 Jul 2021 20:38:24 +0000 (22:38 +0200)]
[QUIC] Move ByteMixingOrNativeAVE_MinimalFailingTest to OuterLoop (#55595)

Fixes #55588

3 years agoAdd runtime property HOSTFXR_PATH (#55369)
Mateo Torres-Ruiz [Tue, 13 Jul 2021 20:16:29 +0000 (13:16 -0700)]
Add runtime property HOSTFXR_PATH (#55369)

* Add property HOSTFXR_PATH

* Comment

* PR feedback

* Use get_own_module_path since we are on hostfxr

* Dispose FileStream

3 years agoRemove EventSourceActivity (#55575)
hrrrrustic [Tue, 13 Jul 2021 19:53:12 +0000 (22:53 +0300)]
Remove EventSourceActivity (#55575)

* remove file

* remove a few references to deleted file

* fix corelib

3 years agoSimplify PosixSignalRegistration implementation on Unix (#55552)
Stephen Toub [Tue, 13 Jul 2021 19:39:47 +0000 (15:39 -0400)]
Simplify PosixSignalRegistration implementation on Unix (#55552)

* Simplify PosixSignalRegistration implementation on Unix

Bring it onto the same scheme as the Windows implementation.

* Address PR feedback

* Delete more dead code

* Update PosixSignalRegistration.Unix.cs

3 years agoDisable some PosixSignalRegistration tests on mobile targets (#55569)
Stephen Toub [Tue, 13 Jul 2021 19:39:29 +0000 (15:39 -0400)]
Disable some PosixSignalRegistration tests on mobile targets (#55569)

xunit doesn't like the fact that some of these MemberDatas were yielding 0 entries on these platforms.

3 years agoDisable Http2_MultipleConnectionsEnabled_InfiniteRequestsCompletelyBlockOneConnection...
Alexander Nikolaev [Tue, 13 Jul 2021 19:10:16 +0000 (21:10 +0200)]
Disable Http2_MultipleConnectionsEnabled_InfiniteRequestsCompletelyBlockOneConnection_RemaningRequestsAreHandledByNewConnection (#55593)

3 years agoAdd leeway to revocation timeout tests.
Kevin Jones [Tue, 13 Jul 2021 18:37:00 +0000 (14:37 -0400)]
Add leeway to revocation timeout tests.

3 years ago[wasm][http] Improve compatibility of abort and cancelation of BrowserHttpHandler...
Pavel Savara [Tue, 13 Jul 2021 18:20:10 +0000 (20:20 +0200)]
[wasm][http] Improve compatibility of abort and cancelation of BrowserHttpHandler (#55084)

* fixed handling of cancelation and abots exceptions to match unit test expectations

added [ActiveIssue("https://github.com/dotnet/runtime/issues/55083", TestPlatforms.Browser)] for redirect outerloop tests

* more

* code review feedback

3 years ago[main] Update dependencies from 7 repositories (#55565)
dotnet-maestro[bot] [Tue, 13 Jul 2021 18:13:22 +0000 (20:13 +0200)]
[main] Update dependencies from 7 repositories (#55565)

* Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-optimization build 20210712.2

optimization.linux-x64.MIBC.Runtime , optimization.windows_nt-x64.MIBC.Runtime , optimization.windows_nt-x86.MIBC.Runtime , optimization.PGO.CoreCLR
 From Version 1.0.0-prerelease.21361.3 -> To Version 1.0.0-prerelease.21362.2

* Update dependencies from https://github.com/dotnet/arcade build 20210709.3

Microsoft.DotNet.XUnitExtensions , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.ApiCompat , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.GenFacades , Microsoft.DotNet.GenAPI , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SharedFramework.Sdk
 From Version 6.0.0-beta.21357.3 -> To Version 6.0.0-beta.21359.3

* Update dependencies from https://github.com/dotnet/icu build 20210712.1

Microsoft.NETCore.Runtime.ICU.Transport
 From Version 6.0.0-preview.7.21328.1 -> To Version 6.0.0-preview.7.21362.1

* Update dependencies from https://github.com/dotnet/llvm-project build 20210712.1

runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools
 From Version 11.1.0-alpha.1.21357.1 -> To Version 11.1.0-alpha.1.21362.1

* Update dependencies from https://github.com/mono/linker build 20210712.3

Microsoft.NET.ILLink.Tasks
 From Version 6.0.100-preview.6.21358.3 -> To Version 6.0.100-preview.6.21362.3

* Update dependencies from https://github.com/dotnet/hotreload-utils build 20210712.1

Microsoft.DotNet.HotReload.Utils.Generator.BuildTool
 From Version 1.0.1-alpha.0.21361.1 -> To Version 1.0.1-alpha.0.21362.1

* Update dependencies from https://github.com/dotnet/emsdk build 20210713.1

Microsoft.NET.Workload.Emscripten.Manifest-6.0.100
 From Version 6.0.0-preview.7.21362.2 -> To Version 6.0.0-preview.7.21363.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
3 years agoAdd one-shot CFB encrypt/decrypt to SymmetricAlgorithm
Kevin Jones [Tue, 13 Jul 2021 18:01:31 +0000 (14:01 -0400)]
Add one-shot CFB encrypt/decrypt to SymmetricAlgorithm

Adds the CFB versions similar to the already-added ECB and CBC versions.

Co-authored-by: Jeremy Barton <jbarton@microsoft.com>
3 years agoFix Tizen ARMEL Build Failure (#55545)
Dong-Heon Jung [Tue, 13 Jul 2021 18:01:19 +0000 (03:01 +0900)]
Fix Tizen ARMEL Build Failure (#55545)

* Fix Tizen ARMEL Build Failure

* Check with MFD_CLOEXEC instead of ARM_SOFTFP

3 years agoRemove C# dynamic support from JsonNode (#55430)
Steve Harter [Tue, 13 Jul 2021 17:57:48 +0000 (12:57 -0500)]
Remove C# dynamic support from JsonNode (#55430)

3 years agoDelayed client certificate (#54692)
Jan Jahoda [Tue, 13 Jul 2021 17:45:59 +0000 (19:45 +0200)]
Delayed client certificate (#54692)

* initial prototype

* Restore TLS 1.2 renegotiation

* First windows functionality merge

* reenable client certificate

* Add more renegotiate tests

* Remove client certificates

* Cleanup

* add test log

* Apply PR comments

* Add Data frame test

* Add drain buffer test

* Fix tls 1.3 incomming app data frame

* Restore verify callback

* Remove debug log

* Remove keylog callback and unused method

* Fix test build

* Attempt to fix openssl version api difference

* Sort shim

* fix build

* CI log

* Restore mac tests

* Add logs

* fix test runs on old openssl

* fix tests

* fix w7 condition

* feedback from review

Co-authored-by: wfurt <tweinfurt@yahoo.com>
3 years agoAdd ConfigurationManager(#55338)
Stephen Halter [Tue, 13 Jul 2021 17:26:42 +0000 (10:26 -0700)]
Add ConfigurationManager(#55338)

* ConfigurationManager : IConfigurationRoot, IConfigurationBuilder

3 years agoH/3 Server Cert validation callback exception fix (#55526)
Marie Píchová [Tue, 13 Jul 2021 17:18:26 +0000 (19:18 +0200)]
H/3 Server Cert validation callback exception fix (#55526)

* Fix and test.

* MsQuicConnection now call the cert validation callback only once, removed code duplication

3 years agoAdd AttributeTargets.Interface to JsonConverterAttribute (#54922)
Eirik Tsarpalis [Tue, 13 Jul 2021 16:57:45 +0000 (19:57 +0300)]
Add AttributeTargets.Interface to JsonConverterAttribute (#54922)

* Allow JsonConverterAttribute usage on interfaces.

Fix #33112

* update ApiCompat baseline

3 years agoQUIC read pipeline changes (#55505)
Natalia Kondratyeva [Tue, 13 Jul 2021 16:49:47 +0000 (18:49 +0200)]
QUIC read pipeline changes (#55505)

This brings changes to read states and behavior done initially in #52929 with my fixes to it to make all tests work

3 years agoImport `cgt.un(op, 0)` as `NE(op, 0)` (#54539)
SingleAccretion [Tue, 13 Jul 2021 16:39:21 +0000 (19:39 +0300)]
Import `cgt.un(op, 0)` as `NE(op, 0)` (#54539)

* Some minor code modernization

Use "genActualType" directly as it is now a templated method.

Don't create casts to TYP_ULONG - they are identical to casts
to TYP_LONG. TYP_ULONG is only relevant for checked casts.

Add a TODO on addressing the duplicated logic that upcasts to
native int from int32 on 64 bit.

Use modern comments.

Zero diffs.

* Normalize GT_UN(op, 0) early in importer

Normalizing this idiom helps downstream optimizations.

* Solve most of the regressions

In morph, when narrowing the AND operand, only
insert casts if necessary - prefer to use "optNarrowTree".
Otherwise we end up with redundant register shuffling.

3 years agoExpose nullability info (#54985)
Buyaa Namnan [Tue, 13 Jul 2021 16:34:34 +0000 (09:34 -0700)]
Expose nullability info (#54985)

* Expose nullability info from Reflection

3 years agoAugment tests for FileMode.Append (#55513)
Stephen Toub [Tue, 13 Jul 2021 16:05:31 +0000 (12:05 -0400)]
Augment tests for FileMode.Append (#55513)

To validate that seeking and writing are valid in the region of the file since its initial length.

3 years agoRename TextMapPropagator to DistributedContextPropagator (#55539)
Tarek Mahmoud Sayed [Tue, 13 Jul 2021 16:00:40 +0000 (09:00 -0700)]
Rename TextMapPropagator to DistributedContextPropagator (#55539)

3 years agoUpdate spin-wait pause/yield normalization (#55295)
Koundinya Veluri [Tue, 13 Jul 2021 15:59:20 +0000 (08:59 -0700)]
Update spin-wait pause/yield normalization (#55295)

Update spin-wait pause/yield normalization

- Modified the measurement to use much less time and to remeasure periodically to reduce CPU usage during startup
- Each measurement does a low-microsecond-level measurement of pause/yield times
- Some small amount of history of recent measurements is retained and used to for now take the lowest measurement for normalization
- Measurements are done lazily, and at most every few seconds another measurement is taken
- Added a profiling event that includes info about a measurement and the established value from recent measurements that is used for normalization

3 years agoImprove resolving runtime pack in WasmApp targets (#55258)
Alexander Köplinger [Tue, 13 Jul 2021 15:12:28 +0000 (17:12 +0200)]
Improve resolving runtime pack in WasmApp targets (#55258)

Use similar logic to `eng/targetingpacks.targets` in `WasmApp.InTree.targets` and `WasmApp.LocalBuild.targets`.

Also set `UseMonoRuntime=true` to make sure we get the Mono-based runtime pack.

3 years agoDo not eliminate casts from FP types (#53667)
SingleAccretion [Tue, 13 Jul 2021 15:10:39 +0000 (18:10 +0300)]
Do not eliminate casts from FP types (#53667)

An optimization in morph was deleting casts
on the RHS of a narrow store if the cast-to-type
was wider than the type being stored. This is only
valid for casts from integral types, as the backend
does not handle "STOREIND(byte*, double)", nor is there
an instruction to go from an XMM register to a narrow
memory location on x86/x64.

The issue is not reproducible right now because
fgMorphCast wraps the casts in question, but it is
an invalid IR transformation nonetheless, and similar
code in fgMorphSmpOpOptional guards against non-integral sources.

3 years agooptimize adding unwind info entries by hashtable (#55398)
Dzmitry Konanka [Tue, 13 Jul 2021 15:02:43 +0000 (18:02 +0300)]
optimize adding unwind info entries by hashtable (#55398)

3 years agoUse interpolated strings in more places
Stephen Toub [Mon, 12 Jul 2021 10:30:34 +0000 (06:30 -0400)]
Use interpolated strings in more places

3 years agoFix LangVersion on several test projects
Stephen Toub [Sat, 10 Jul 2021 14:09:23 +0000 (10:09 -0400)]
Fix LangVersion on several test projects

3 years agoAdd Debug.Assert/Write{Line}If interpolated overloads
Stephen Toub [Fri, 18 Jun 2021 21:57:11 +0000 (17:57 -0400)]
Add Debug.Assert/Write{Line}If interpolated overloads

3 years agoAdd Span.TryWrite, StringBuilder.Append, and String.Create interpolated strings support
Stephen Toub [Wed, 26 May 2021 00:41:54 +0000 (20:41 -0400)]
Add Span.TryWrite, StringBuilder.Append, and String.Create interpolated strings support

3 years agoFix for a couple of Microsoft.XmlSerializer.Generator issues (#55427)
Hong Li [Tue, 13 Jul 2021 13:44:22 +0000 (06:44 -0700)]
Fix for a couple of Microsoft.XmlSerializer.Generator issues (#55427)

* Fix for a couple of Microsoft.XmlSerializer.Generator issues

* fix the name of the AssemblyInfo.cs file

3 years agoProcess.Unix: consider executable permission while searching PATH. (#55504)
Tom Deseyn [Tue, 13 Jul 2021 13:43:49 +0000 (15:43 +0200)]
Process.Unix: consider executable permission while searching PATH. (#55504)

3 years agoFix exception (#55324)
Stefan [Tue, 13 Jul 2021 13:27:54 +0000 (15:27 +0200)]
Fix exception (#55324)

3 years agoUse ReflectionOnly as data contract serializer option for iOS/tvOS/MacCatalyst (...
Maxim Lipnin [Tue, 13 Jul 2021 13:16:17 +0000 (16:16 +0300)]
Use ReflectionOnly as data contract serializer option for iOS/tvOS/MacCatalyst (#55503)

An attempt to address #47114 by making the System.Runtime.Serialization.DataContractSerializer.Option property return ReflectionOnly value when RuntimeFeature.IsDynamicCodeSupported is true.

3 years agoFix UMThunkMarshInfo delete (#55559)
Jan Vorlicek [Tue, 13 Jul 2021 13:04:15 +0000 (15:04 +0200)]
Fix UMThunkMarshInfo delete (#55559)

There was a forgotten call to c++ delete that should have been converted
to LoaderHeap::BackoutMem in a code path invoked only if two threads
raced for allocating the UMThunkMarshInfo and the one that lost the race
needed to delete it.

3 years agoFix nullable warning in AssemblyLoadContext30Extensions.cs
Stephen Toub [Tue, 13 Jul 2021 01:37:58 +0000 (21:37 -0400)]
Fix nullable warning in AssemblyLoadContext30Extensions.cs

3 years agoAvoid obscuring failure by ODE thrown from Dispose
Stephen Toub [Mon, 12 Jul 2021 19:18:29 +0000 (15:18 -0400)]
Avoid obscuring failure by ODE thrown from Dispose

3 years agoWorkaround eventpipe deadlock due to ArrayPool usage
Stephen Toub [Mon, 12 Jul 2021 18:32:36 +0000 (14:32 -0400)]
Workaround eventpipe deadlock due to ArrayPool usage

3 years agoTemporarily remove string interpolation from NetCoreServer test helper
Stephen Toub [Mon, 12 Jul 2021 16:54:46 +0000 (12:54 -0400)]
Temporarily remove string interpolation from NetCoreServer test helper

3 years agoFix async method builder override tests for compiler constraint
Stephen Toub [Sat, 10 Jul 2021 13:56:43 +0000 (09:56 -0400)]
Fix async method builder override tests for compiler constraint

3 years agoUpdate pinned C# compiler version
Stephen Toub [Fri, 9 Jul 2021 19:25:19 +0000 (15:25 -0400)]
Update pinned C# compiler version

3 years agoAdjust crypto shim for functions renamed for OSSL3 beta1
Jeremy Barton [Tue, 13 Jul 2021 08:38:33 +0000 (01:38 -0700)]
Adjust crypto shim for functions renamed for OSSL3 beta1

3 years agoAllow multiple private key references in Unix PFXes
Jeremy Barton [Tue, 13 Jul 2021 08:37:09 +0000 (01:37 -0700)]
Allow multiple private key references in Unix PFXes

Windows has a complicated state for when a PFX contains two certificates that link to the same private key:

* EphemeralKeySet: The PFX load fails.
* PersistKeySet: Things probably work.
* (normal): "It's complicated".

When the Unix PFX loader was written it was based on the EphemeralKeySet behavior,
because that's what the tests used (to avoid disk penalties and problems).

Trying to maintain a balance between Herculean efforts of bug-for-bug compatibility
and OS variability, this change takes a simpler approach:

* EphemeralKeySet: The PFX load fails, like it will on Windows.
* Otherwise: Let it work (but always with cloned keys, so some of the subtle Windows undesirable states are lost).

3 years agoFix bad folding (#54722)
SingleAccretion [Tue, 13 Jul 2021 08:35:10 +0000 (11:35 +0300)]
Fix bad folding (#54722)

* Always sign-extend from int32 in gtFoldExprConst

GT_CNS_INT of TYP_INT on 64 hosts has an implicit contract:
the value returned by IconValue() must "fit" into 32 bit
signed integer, i. e. "static_cast<int>(IconValue()) == IconValue()".
gtFoldExprConst was failing to uphold this contract when the target
was 32 bit and the host was 64 bit.

Fix this by always truncating before calling SetIconValue().

* Add a simple test that reproduces bad codegen

3 years agoLast set of ILLink annotations related to System.Data.Common (#55507)
Krzysztof Wicher [Tue, 13 Jul 2021 08:05:43 +0000 (10:05 +0200)]
Last set of ILLink annotations related to System.Data.Common (#55507)

* Last set of ILLink annotations related to System.Data.Common

* apply feedback

3 years agoChange server paths to use LOCALHOST (#55523)
David Cantú [Tue, 13 Jul 2021 07:50:00 +0000 (00:50 -0700)]
Change server paths to use LOCALHOST (#55523)

3 years agoKeep looking up derived chain for Property.Get if it doesn't exist. (#52509)
Steve Molloy [Tue, 13 Jul 2021 07:27:06 +0000 (00:27 -0700)]
Keep looking up derived chain for Property.Get if it doesn't exist. (#52509)

3 years agoUse scopes to resolve array naming issue. (#55451)
Steve Molloy [Tue, 13 Jul 2021 07:18:55 +0000 (00:18 -0700)]
Use scopes to resolve array naming issue. (#55451)

* Use scope to avoid using duplicate names for arrays in ILGen serializer.

* Remove comment.

3 years agoHandle nullable primitives before passing them to WritePrimitive which expects non...
Steve Molloy [Tue, 13 Jul 2021 07:18:13 +0000 (00:18 -0700)]
Handle nullable primitives before passing them to WritePrimitive which expects non-null values. (#54800)

3 years agoEnreg structs x86 windows. (#55535)
Sergey Andreenko [Tue, 13 Jul 2021 06:18:32 +0000 (23:18 -0700)]
Enreg structs x86 windows. (#55535)

* Mark more cases as DoNotEnreg before CSE.

There are CSE metrics that take into account how many potential enreg locals
do we have.

* enable for x86.

3 years agoEnable property visibility tests in source-gen mode (#54526)
Layomi Akinrinade [Tue, 13 Jul 2021 04:11:25 +0000 (21:11 -0700)]
Enable property visibility tests in source-gen mode (#54526)

* Enable property visibility tests in source-gen mode

* Address feedback

* Fix S.N.H.Json tests

* Fix S.T.J tests

* Fix S.N.H.J tests ii

3 years agoDisable GetHostEntry tests on SLES. (#55543)
Juan Hoyos [Tue, 13 Jul 2021 03:05:15 +0000 (20:05 -0700)]
Disable GetHostEntry tests on SLES. (#55543)

3 years agoswitch to using CSTRMarshaller instead of AnsiBSTR (#55032)
Manish Godse [Tue, 13 Jul 2021 02:48:55 +0000 (19:48 -0700)]
switch to using CSTRMarshaller instead of AnsiBSTR (#55032)

* switch to using CSTRMarshaller instead of AnsiBSTR

* cleanup

* Add CleanupManaged back

Updated the cleanup logic to the one implemented in ILOptimizedAllocMarshaler::EmitClearNative

* update MAX_LOCAL_BUFFER_LENGTH

* CR feedback

3 years ago[main] Update dependencies from 6 repositories (#55395)
dotnet-maestro[bot] [Tue, 13 Jul 2021 02:40:24 +0000 (21:40 -0500)]
[main] Update dependencies from 6 repositories (#55395)

* Update dependencies from https://github.com/dotnet/runtime-assets build 20210708.1

System.ComponentModel.TypeConverter.TestData , System.Drawing.Common.TestData , System.IO.Compression.TestData , System.IO.Packaging.TestData , System.Net.TestData , System.Private.Runtime.UnicodeData , System.Runtime.Numerics.TestData , System.Runtime.TimeZoneData , System.Security.Cryptography.X509Certificates.TestData , System.Windows.Extensions.TestData
 From Version 6.0.0-beta.21356.1 -> To Version 6.0.0-beta.21358.1

* Update dependencies from https://github.com/mono/linker build 20210708.3

Microsoft.NET.ILLink.Tasks
 From Version 6.0.100-preview.6.21357.1 -> To Version 6.0.100-preview.6.21358.3

* Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-optimization build 20210709.4

optimization.linux-x64.MIBC.Runtime , optimization.windows_nt-x64.MIBC.Runtime , optimization.windows_nt-x86.MIBC.Runtime , optimization.PGO.CoreCLR
 From Version 1.0.0-prerelease.21357.3 -> To Version 1.0.0-prerelease.21359.4

* Update dependencies from https://github.com/dotnet/hotreload-utils build 20210709.1

Microsoft.DotNet.HotReload.Utils.Generator.BuildTool
 From Version 1.0.1-alpha.0.21355.1 -> To Version 1.0.1-alpha.0.21359.1

* Update dependencies from https://github.com/dotnet/hotreload-utils build 20210710.1

Microsoft.DotNet.HotReload.Utils.Generator.BuildTool
 From Version 1.0.1-alpha.0.21355.1 -> To Version 1.0.1-alpha.0.21360.1

* Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-optimization build 20210711.3

optimization.linux-x64.MIBC.Runtime , optimization.windows_nt-x64.MIBC.Runtime , optimization.windows_nt-x86.MIBC.Runtime , optimization.PGO.CoreCLR
 From Version 1.0.0-prerelease.21357.3 -> To Version 1.0.0-prerelease.21361.3

* Update dependencies from https://github.com/dotnet/runtime build 20210711.10

Microsoft.NETCore.DotNetHost , Microsoft.NETCore.DotNetHostPolicy , Microsoft.NETCore.ILAsm , runtime.native.System.IO.Ports , Microsoft.NET.Sdk.IL , System.Runtime.CompilerServices.Unsafe , System.Text.Json
 From Version 6.0.0-preview.7.21355.1 -> To Version 6.0.0-preview.7.21361.10

* Update dependencies from https://github.com/dotnet/hotreload-utils build 20210711.1

Microsoft.DotNet.HotReload.Utils.Generator.BuildTool
 From Version 1.0.1-alpha.0.21355.1 -> To Version 1.0.1-alpha.0.21361.1

* Update dependencies from https://github.com/dotnet/emsdk build 20210712.1

Microsoft.NET.Workload.Emscripten.Manifest-6.0.100
 From Version 6.0.0-preview.7.21358.1 -> To Version 6.0.0-preview.7.21362.1

* Update dependencies from https://github.com/dotnet/emsdk build 20210712.2

Microsoft.NET.Workload.Emscripten.Manifest-6.0.100
 From Version 6.0.0-preview.7.21358.1 -> To Version 6.0.0-preview.7.21362.2

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
3 years agoMove the "do not zero-extend setcc" optimization to lower (#53778)
SingleAccretion [Tue, 13 Jul 2021 00:38:46 +0000 (03:38 +0300)]
Move the "do not zero-extend setcc" optimization to lower (#53778)

* Strongly type StoreInd lowering

* Improve clarity of code through the use of helpers

* Move the "do not zero-extend setcc" to lowering

It is XARCH-specific and moving it eliminates questionable code
that is trying to compensate for CSE changing the store.

* Delete now unnecessary copying of the relop type

3 years ago[mono][debugger] Support debug after hot-reload (#55220)
Thays Grazia [Tue, 13 Jul 2021 00:27:30 +0000 (21:27 -0300)]
[mono][debugger] Support debug after hot-reload  (#55220)

* Add test case for debug after hot reload.

* Implementing debug after hot reload, on runtime side, and on client side for wasm.

* Reuse some code.

* Remove unrelated comment.

* Reuse code.

* Refactor new code.

* Fix log.

* Apply suggestions from code review

Co-authored-by: Aleksey Kliger (λgeek) <akliger@gmail.com>
* Fixing hot reload without debug information.

* replacing spaces with tabs.

* Fixing CI.

Co-authored-by: Aleksey Kliger (λgeek) <akliger@gmail.com>
3 years agoChange RandomAccess.Write* methods to be void-returning (#55490)
Stephen Toub [Mon, 12 Jul 2021 23:39:21 +0000 (19:39 -0400)]
Change RandomAccess.Write* methods to be void-returning (#55490)

3 years agoImprove perf of Utf8Parser.TryParse(out [u]long, default) (#52423)
Levi Broderick [Mon, 12 Jul 2021 23:14:26 +0000 (16:14 -0700)]
Improve perf of Utf8Parser.TryParse(out [u]long, default) (#52423)

3 years agoFix more alloc-dealloc mismatches and use-after-scopes (#55420)
Jeremy Koritzinsky [Mon, 12 Jul 2021 22:55:26 +0000 (15:55 -0700)]
Fix more alloc-dealloc mismatches and use-after-scopes (#55420)

* Fix another dynamically-sized allocation to use new/delete instead of the mismatched new[]/delete.

* Fix use-after-scope

* Fix another alloc-dealloc mismatch

* Update src/coreclr/vm/threadstatics.cpp

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
* Use standard size_t instead of custom SIZE_T typedef.

* Fix formatting.

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
3 years agoLook up the ICustomMarshaler implementation methods based on runtime type (#55439)
Jeremy Koritzinsky [Mon, 12 Jul 2021 21:47:52 +0000 (14:47 -0700)]
Look up the ICustomMarshaler implementation methods based on runtime type (#55439)

3 years agoFile.Unix: Replace: increase Windows compatibility (#50234)
Tom Deseyn [Mon, 12 Jul 2021 21:22:17 +0000 (23:22 +0200)]
File.Unix: Replace: increase Windows compatibility (#50234)

* File.Unix: Replace: increase Windows compatibility

- When source and destination are not a file throw UnauthorizedAccessException.
- When source and destination are the same file throw IOException.

* Include paths in exception message

Co-authored-by: Jeff Handley <jeff.handley@microsoft.com>
3 years agoExpose the platform directly for apple products (#55381)
Larry Ewing [Mon, 12 Jul 2021 20:37:40 +0000 (15:37 -0500)]
Expose the platform directly for apple products (#55381)

Co-authored-by: Steve Pfister <steve.pfister@microsoft.com>
3 years agoPrevent AV in processinfo2 while suspended (#55379)
John Salem [Mon, 12 Jul 2021 20:02:28 +0000 (13:02 -0700)]
Prevent AV in processinfo2 while suspended (#55379)

3 years agoImplement part of SslCertificateTrust (#55104)
Tomas Weinfurt [Mon, 12 Jul 2021 19:57:21 +0000 (12:57 -0700)]
Implement part of SslCertificateTrust  (#55104)

* snatpshot

* snapshot

* add csproj'

* update

* more ckeanup

* more cleanup

* feedback from review

* fix mail tests

* feedabck from review

* feedback from review

* make constructor private

3 years agoRemove NuGet config in HTTP stress (#55519)
Juan Hoyos [Mon, 12 Jul 2021 19:24:17 +0000 (12:24 -0700)]
Remove NuGet config in HTTP stress (#55519)

3 years ago[mono] Add some WASM AOT documention. (#55498)
Zoltan Varga [Mon, 12 Jul 2021 17:59:13 +0000 (13:59 -0400)]
[mono] Add some WASM AOT documention. (#55498)

3 years agoUse inline Vector{128|256}.Create for constants (#54827)
Günther Foidl [Mon, 12 Jul 2021 16:53:50 +0000 (18:53 +0200)]
Use inline Vector{128|256}.Create for constants (#54827)

* Used VectorXYZ.Create for constants in Base64

* Used VectorXYZ.Create for constants in BitArray

* Remove conditional compilation

It's only built for NetCoreAppCurrent, so no need to special case older runtimes.

3 years ago[hot_reload] Add support for row modifications; CustomAttribute updates (#55445)
Aleksey Kliger (λgeek) [Mon, 12 Jul 2021 16:40:16 +0000 (12:40 -0400)]
[hot_reload] Add support for row modifications; CustomAttribute updates (#55445)

This fixes https://github.com/dotnet/runtime/issues/55097 - which allows us to support C# nullability analysis once again in hot reload deltas.

Specifically we allow EnC deltas to include modifications of existing rows in the CustomAttribute table as long as the Parent and Type columns stay the same (that is: a custom attribute modification that still applies to the same element - and uses the same custom attribute constructor, but may have a different value).

To support this, we add a new BaselineInfo:any_modified_rows array that keeps track for each table whether any rows have been modified (as opposed to added) by any EnC delta. When the runtime calls mono_metadata_decode_row, if there have been any deltas that modified a row in the requested table, we call hot_reload_effective_table_slow which find the latest delta that modified that row. If there have only been additions, we stop at the first delta that added the row we're looking for, if there are modifications, we look through all the deltas and return the latest one.

* [hot_reload] Add test for updating custom attribute ctor values

   Just changing the arguments of a custom attribute constructor should generate an update to the CustomAttributes table with the same parent and .ctor.  That kind of change should be allowed by Mono and CoreCLR

* [hot_reload] Allow custom attribute row modifications if Parent and Type unchanged.

   Allows updates to the constructor arguments (or property values)

* [hot_reload] Implement table lookup of modified rows

   Add a bool array on the base image to keep track of whether each table had any row modifications (as opposed to row additions) in any generation.

   If there was a modification, take the slow path in mono_image_effective_table even if the index we're looking at is in the base image.

   Update hot_reload_effective_table_slow so that if there was a modified row, we look at all the deltas to see if there's an even later update to that row.  (When there are only additions, keep same behavior as before - only look
as far as the generation that added the row we wanted to find).

   Also refine the assertion in hot_reload_relative_delta_index to properly account for EnCMap entries that correspond to modifications - in that case we might stop searching a metadata delta before we hit the end of the table if the
EnCmap entries start pointing to rows that are past the one we wanted to look up.

* Update the CustomAttributeUpdates test to check attribute value

   Check that we get the updated custom attribute string property value.

* Re-enable nullability for hot reload tests

   Mono can now deal with the custom attributes modifications that Roslyn emits

3 years agoAdd crash report to createdump for Linux Watson (#55438)
Mike McLaughlin [Mon, 12 Jul 2021 15:55:14 +0000 (08:55 -0700)]
Add crash report to createdump for Linux Watson  (#55438)

Add crash report to createdump for Linux Watson

For Linux Watson the crash report will contains the .NET Core version, the faulting process name (the module/assembly containing Main) and the managed exception info (including the exception HRESULT) and thread stack trace of the thread the caused the crash.

Add the CLRDATA_MODULE_IS_MAIN_MODULE flag to the DAC's IXCLRDataModule::GetFlags API.

Add code to get the managed method name and write it out as "method_name" (even on MacOS).

Add native frame symbolization (unmanaged_name) using dladdr.

Only get the image info once and save in a global

Demangle the stack frame symbols

Only write PH_HDR_CANARY section if neccessary

3 years ago[wasm] WebSocket is already disposed by after abort. (#55075)
Pavel Savara [Mon, 12 Jul 2021 15:43:53 +0000 (17:43 +0200)]
[wasm] WebSocket is already disposed by after abort. (#55075)

_innerWebSocket is already disposed by after abort.

3 years agoQUIC logging update (#55500)
Natalia Kondratyeva [Mon, 12 Jul 2021 15:22:18 +0000 (17:22 +0200)]
QUIC logging update (#55500)

Together with #55483 this updates all logging to use msquic handles instead of hash code - for listeners, connections and streams. The format of handle is the same as msquic one.

3 years agoEnable CA1419 (SafeHandle public parameterless ctor) (#55460)
Stephen Toub [Mon, 12 Jul 2021 14:18:04 +0000 (10:18 -0400)]
Enable CA1419 (SafeHandle public parameterless ctor) (#55460)

3 years agoFix android uninstall command and add validations (#55431)
Fan Yang [Mon, 12 Jul 2021 13:24:55 +0000 (09:24 -0400)]
Fix android uninstall command and add validations (#55431)

3 years agoExpose a global switch to disable IPV6 (#55012)
Anton Firszov [Mon, 12 Jul 2021 12:24:54 +0000 (14:24 +0200)]
Expose a global switch to disable IPV6 (#55012)

Fixes #47583. Resolves #52287, #54807 and similar issues, without changing customer application code.

Introduces an AppContext switch `System.Net.DisableIPv6` and environment variable `DOTNET_SYSTEM_NET_DISABLEIPV6` to emulate the lack of OS-level IPv6 support. This is useful to workaround dual-stack socket issues when the OS reports support of IPv6, but some other underlying infrastructure element (typically VPN) doesn't function well with IPv6 request.

For consistency, this switch also impacts NameResolution and Ping, not only Sockets.

3 years agoMinor QUIC test improvements (#55494)
Geoff Kizer [Mon, 12 Jul 2021 09:06:32 +0000 (02:06 -0700)]
Minor QUIC test improvements (#55494)

* reduce timeout in SetListenerTimeoutWorksWithSmallTimeout

* replace AssertArrayEqual with AssertExtensions.SequenceEqual

Co-authored-by: Geoffrey Kizer <geoffrek@windows.microsoft.com>
3 years agoUpdate tag references to dotnet-buildtools/prereqs (#55426)
Matt Thalman [Mon, 12 Jul 2021 08:30:10 +0000 (01:30 -0700)]
Update tag references to dotnet-buildtools/prereqs (#55426)

Updating Docker image tag references that are obsolete and replaced by references to mcr.microsoft.com/dotnet-buildtools/prereqs. See dotnet/dotnet-docker#2848.

3 years agoremove waiting on start event (#55442)
Geoff Kizer [Mon, 12 Jul 2021 05:29:04 +0000 (22:29 -0700)]
remove waiting on start event (#55442)

Co-authored-by: Geoffrey Kizer <geoffrek@windows.microsoft.com>
3 years agomake quic tracing easir to correlate with MsQuic (#55483)
Tomas Weinfurt [Mon, 12 Jul 2021 03:32:52 +0000 (20:32 -0700)]
make quic tracing easir to correlate with MsQuic (#55483)

3 years agouse updated fedora image with msquic (#55424)
Tomas Weinfurt [Mon, 12 Jul 2021 03:17:19 +0000 (20:17 -0700)]
use updated fedora image with msquic (#55424)

* use updated fedora image with msquic

* fix ping

3 years agodisable Quic AcceptStream_ConnectionAborted_ByClient_Throws on Linux (#55481)
Tomas Weinfurt [Mon, 12 Jul 2021 02:27:46 +0000 (19:27 -0700)]
disable Quic AcceptStream_ConnectionAborted_ByClient_Throws on Linux (#55481)

3 years agoFix mono CORDBI build (#55482)
Juan Hoyos [Mon, 12 Jul 2021 01:59:57 +0000 (18:59 -0700)]
Fix mono CORDBI build (#55482)

3 years agoUse init rather than ms extension syntax (#55475)
Adeel Mujahid [Mon, 12 Jul 2021 01:07:13 +0000 (04:07 +0300)]
Use init rather than ms extension syntax (#55475)

3 years agoImprove MetricsEventSource error handling (#55466)
Noah Falk [Mon, 12 Jul 2021 00:30:04 +0000 (17:30 -0700)]
Improve MetricsEventSource error handling (#55466)

Previously exceptions that escaped user provided callbacks for observable instruments would have terminated all further metric collection. Now those exceptions are caught and reported, only potentially interfering with other observable instruments in the same collection interval.

3 years ago[mono] Improve aot code generation for isinst for sealed classes. (#55450)
Zoltan Varga [Sun, 11 Jul 2021 19:59:37 +0000 (15:59 -0400)]
[mono] Improve aot code generation for isinst for sealed classes. (#55450)

Generate the same code as in the non-aot case, i.e. compare
the vtable with a constant.

3 years agoMove PosixSignalRegistration to corelib (#55433)
Stephen Toub [Sun, 11 Jul 2021 18:13:35 +0000 (14:13 -0400)]
Move PosixSignalRegistration to corelib (#55433)

* Move PosixSignalRegistration to corelib

* Fix trimming issue on mobile targets

3 years agoAdding more tests for the generic math feature (#55377)
Tanner Gooding [Sun, 11 Jul 2021 15:24:08 +0000 (08:24 -0700)]
Adding more tests for the generic math feature (#55377)

* Fixing some issues in the generic math implementation

* Adding generic math tests for integer types

3 years agoW^X support (#54954)
Jan Vorlicek [Sun, 11 Jul 2021 14:46:53 +0000 (16:46 +0200)]
W^X support (#54954)

* W^X support

This change is the last part of enabling the W^X support. It adds the
actual executable allocator that handles all double mapped memory
allocations and creating the writeable mappings.

The platform specific functionality is placed in a new minipal that is
going to be a basis for future removal of Windows APIs usage from the
native runtime.

The last state of the change was tested on all the platforms that we
support using coreclr pri 1 tests with both the W^X enabled and disabled
using the COMPlus_EnableWriteXorExecute variable.

The debugger changes were tested using the managed debugger testing
suite on Windows x64, x86 and on Apple Silicon so far. Further testing
on other platforms is in progress.

* Replace LeafLock in UMEntryThunkFreeList by a new lock

* Also allocate LoaderHeapFreeBlock from regular heap.

* Set the W^X default to disabled

3 years agoRelax SystemTrustCertificateWithCustomRootTrust test
Jeremy Barton [Sun, 11 Jul 2021 04:04:54 +0000 (21:04 -0700)]
Relax SystemTrustCertificateWithCustomRootTrust test

3 years agoFixing MetricEventSource tests (#55385)
Noah Falk [Sun, 11 Jul 2021 00:10:48 +0000 (17:10 -0700)]
Fixing MetricEventSource tests (#55385)

* Fixing MetricEventSource tests

I've seen two recent non-deterministic failures:
1. After starting the EventListener there is a delay of one collection
interval (previously 0.3 seconds) where we expect calls to counter.Add
and Histogram.Record() to update stats. On a fast machine this code
would run in under a millisecond but in some test runs it still wasn't
happening fast enough.
2. We were seeing error events from a previous test get observed in a
later test because session id was being ignored for error events.

Fixes:
1. Added an initial collection interval where no counter APIs will be
invoked and the test will delay up to 60 seconds waiting for this.
Hopefully this delay makes it more likely that the Add/Record APIs
are ready to execute promptly once the 2nd interval begins. I
also increased the intervals to 1 second. If that still isn't sufficient
we can either further increase the collection intervals or disable the
tests. I also moved these tests to outerloop because
they are slow and noisy on the console, but it may have a side
benefit lessening the impact if there are future timing related failures.
2. Tightened up the session id matching so only error events with
empty id or the expected id are allowed.

3 years agoPropagators Support (#55419)
Tarek Mahmoud Sayed [Sat, 10 Jul 2021 22:55:27 +0000 (15:55 -0700)]
Propagators Support (#55419)

3 years agoSupport filtering ObjectAllocated callback for pinned object heap allocation only...
Yauk [Sat, 10 Jul 2021 22:23:25 +0000 (15:23 -0700)]
Support filtering ObjectAllocated callback for pinned object heap allocation only (#55448)

* Prototype allocation profiler

* Add callback for pinned objects

* Fix the build issue caused by corprof.idl change

* Improve the test

* Misc changes for the tests

Co-authored-by: Andrew Au <andrewau@microsoft.com>
Co-authored-by: Yauk Jia <yaujia@microsoft.com>
3 years agoDisable tests blocking CI (#55446)
Juan Hoyos [Sat, 10 Jul 2021 20:01:37 +0000 (13:01 -0700)]
Disable tests blocking CI (#55446)

* Turn off test FlushAsync_ThrowsIfWriterReaderWithException
* Turn off System.Net.NameResolution.Tests.GetHost* tests for SLES

3 years agouse O_TRUNC when file locking is disabled, avoid ftruncate syscall (#55456)
Adam Sitnik [Sat, 10 Jul 2021 18:38:44 +0000 (20:38 +0200)]
use O_TRUNC when file locking is disabled, avoid ftruncate syscall  (#55456)

* add test project with file locking disabled via config file

* use O_TRUNC when file locking is disabled, avoid ftruncate syscall

* Apply suggestions from code review

Co-authored-by: Stephen Toub <stoub@microsoft.com>
3 years agoFix erroneous "globalizationMode" local naming in PlatformDetection (#55457)
Stephen Toub [Sat, 10 Jul 2021 17:49:58 +0000 (13:49 -0400)]
Fix erroneous "globalizationMode" local naming in PlatformDetection (#55457)

3 years agoadd newly added label (#55462)
Jeff Schwartz [Sat, 10 Jul 2021 17:29:01 +0000 (10:29 -0700)]
add newly added label (#55462)

3 years agoImprove loop cloning, with debugging improvements (#55299)
Bruce Forstall [Sat, 10 Jul 2021 17:17:54 +0000 (10:17 -0700)]
Improve loop cloning, with debugging improvements (#55299)

When loop cloning was creating cloning conditions, it was creating unnecessary bounds checks in some multi-dimensional array index cases. When creating a set of cloning conditions, first a null check is done, then an array length check is done, etc. Thus, the array length expression itself won't fault because we've already done a null check. And a subsequent array index expression won't fault (or need a bounds check) because we've already checked the array length (i.e., we've done a manual bounds check). So, stop creating the unnecessary bounds checks, and mark the appropriate instructions as non-faulting by clearing the GTF_EXCEPT bit.

Note that I did not turn on the code to clear GTF_EXCEPT for array length checks because it leads to negative downstream effects in CSE. Namely, there end up being array length expressions that are identical except for the exception bit. When CSE sees this, it gives up on creating a CSE, which leads to regressions in some cases where we don't CSE the array length expression.

Also, for multi-dimension jagged arrays, when optimizing the fast path, we were not removing as many bounds checks as we could. In particular, we weren't removing outer bounds checks, only inner ones. Add code to handle all the bounds checks.

There are some runtime improvements (measured via BenchmarkDotNet on the JIT microbenchmarks), but also some regressions, due, as far as I can tell, to the Intel jcc erratum performance impact. In particular, benchmark ludcmp shows up to a 9% regression due to a `jae` instruction in the hot loop now crossing a 32-byte boundary due to code changes earlier in the function affecting instruction alignment. The hot loop itself is exactly the same (module register allocation differences). As there is nothing that can be done (without mitigating the jcc erratum) -- it's "bad luck".

In addition to those functional changes, there are a number of debugging-related improvements:
1. Loop cloning: (a) Improved dumping of cloning conditions and other things, (b) remove an unnecessary member to `LcOptInfo`, (c) convert the `LoopCloneContext` raw arrays to `jitstd::vector` for easier debugging, as clrjit.natvis can be taught to understand them.
2. CSE improvements: (a) Add `getCSEAvailBit` and `getCSEAvailCrossCallBit` functions to avoid multiple hard-codings of these expresions, (b) stop printing all the details of the CSE dataflow to JitDump; just print the result, (c) add `optPrintCSEDataFlowSet` function to print the CSE dataflow set in symbolic form, not just the raw bits, (d) added `FMT_CSE` string to use for formatting CSE candidates, (e) added `optOptimizeCSEs` to the phase structure for JitDump output, (f) remove unused `optCSECandidateTotal` (remnant of Valnum + lexical CSE)
3. Alignment: (a) Moved printing of alignment boundaries from `emitIssue1Instr` to `emitEndCodeGen`, to avoid the possibility of reading an instruction beyond the basic block. Also, improved the Intel jcc erratum criteria calculations, (b) Change `align` instructions of zero size to have a zero PerfScore throughput number (since they don't generate code), (c) Add `COMPlus_JitDasmWithAlignmentBoundaries` to force disasm output to display alignment boundaries.
4. Codegen / Emitter: (a) Added `emitLabelString` function for constructing a string to display for a bound emitter label. Created `emitPrintLabel` to directly print the label, (b) Add `genInsDisplayName` function to create a string for use when outputting an instruction. For xarch, this prepends the "v" for SIMD instructions, as necessary. This is preferable to calling the raw `genInsName` function, (c) For each insGroup, created a debug-only list of basic blocks that contributed code to that insGroup. Display this set of blocks in the JitDump disasm output, with block ID. This is useful for looking at an IG, and finding the blocks in a .dot flow graph visualization that contributed to it, (d) remove unused `instDisp`
5. Clrjit.natvis: (a) add support for `jitstd::vector`, `JitExpandArray<T>`, `JitExpandArrayStack<T>`, `LcOptInfo`.
6. Misc: (a) When compacting an empty loop preheader block with a subsequent block, clear the preheader flag.

## benchmarks.run.windows.x64.checked.mch:

```

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 25504
Total bytes of diff: 25092
Total bytes of delta: -412 (-1.62% of base)
Total relative delta: -0.31
    diff is an improvement.
    relative diff is an improvement.
```
<details>

<summary>Detail diffs</summary>

```

Top file improvements (bytes):
         -92 : 14861.dasm (-2.57% of base)
         -88 : 2430.dasm (-0.77% of base)
         -68 : 12182.dasm (-3.82% of base)
         -48 : 24678.dasm (-1.61% of base)
         -31 : 21598.dasm (-5.13% of base)
         -26 : 21601.dasm (-4.57% of base)
         -21 : 25069.dasm (-7.14% of base)
         -16 : 14859.dasm (-1.38% of base)
         -11 : 14862.dasm (-1.35% of base)
          -6 : 21600.dasm (-1.83% of base)
          -5 : 25065.dasm (-0.58% of base)

11 total files with Code Size differences (11 improved, 0 regressed), 1 unchanged.

Top method improvements (bytes):
         -92 (-2.57% of base) : 14861.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
         -88 (-0.77% of base) : 2430.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
         -68 (-3.82% of base) : 12182.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
         -48 (-1.61% of base) : 24678.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
         -31 (-5.13% of base) : 21598.dasm - Benchstone.BenchI.Array2:Bench(int):bool
         -26 (-4.57% of base) : 21601.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
         -21 (-7.14% of base) : 25069.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)
         -16 (-1.38% of base) : 14859.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
         -11 (-1.35% of base) : 14862.dasm - LUDecomp:lubksb(System.Double[][],int,System.Int32[],System.Double[])
          -6 (-1.83% of base) : 21600.dasm - Benchstone.BenchI.Array2:Initialize(System.Int32[][][])
          -5 (-0.58% of base) : 25065.dasm - Benchstone.BenchF.InProd:Test():bool:this

Top method improvements (percentages):
         -21 (-7.14% of base) : 25069.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)
         -31 (-5.13% of base) : 21598.dasm - Benchstone.BenchI.Array2:Bench(int):bool
         -26 (-4.57% of base) : 21601.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
         -68 (-3.82% of base) : 12182.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
         -92 (-2.57% of base) : 14861.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
          -6 (-1.83% of base) : 21600.dasm - Benchstone.BenchI.Array2:Initialize(System.Int32[][][])
         -48 (-1.61% of base) : 24678.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
         -16 (-1.38% of base) : 14859.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
         -11 (-1.35% of base) : 14862.dasm - LUDecomp:lubksb(System.Double[][],int,System.Int32[],System.Double[])
         -88 (-0.77% of base) : 2430.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
          -5 (-0.58% of base) : 25065.dasm - Benchstone.BenchF.InProd:Test():bool:this

11 total methods with Code Size differences (11 improved, 0 regressed), 1 unchanged.

```

</details>

--------------------------------------------------------------------------------

```

Summary of Perf Score diffs:
(Lower is better)

Total PerfScoreUnits of base: 38374.96
Total PerfScoreUnits of diff: 37914.07000000001
Total PerfScoreUnits of delta: -460.89 (-1.20% of base)
Total relative delta: -0.12
    diff is an improvement.
    relative diff is an improvement.
```
<details>

<summary>Detail diffs</summary>

```

Top file improvements (PerfScoreUnits):
     -220.67 : 24678.dasm (-1.74% of base)
      -99.27 : 14861.dasm (-2.09% of base)
      -66.30 : 21598.dasm (-1.41% of base)
      -18.73 : 2430.dasm (-0.28% of base)
      -18.40 : 21601.dasm (-1.37% of base)
       -9.73 : 25065.dasm (-0.56% of base)
       -9.05 : 14859.dasm (-0.77% of base)
       -5.51 : 21600.dasm (-0.77% of base)
       -4.15 : 12182.dasm (-0.17% of base)
       -3.92 : 14860.dasm (-0.32% of base)
       -3.46 : 25069.dasm (-2.31% of base)
       -1.70 : 14862.dasm (-0.20% of base)

12 total files with Perf Score differences (12 improved, 0 regressed), 0 unchanged.

Top method improvements (PerfScoreUnits):
     -220.67 (-1.74% of base) : 24678.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
      -99.27 (-2.09% of base) : 14861.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
      -66.30 (-1.41% of base) : 21598.dasm - Benchstone.BenchI.Array2:Bench(int):bool
      -18.73 (-0.28% of base) : 2430.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
      -18.40 (-1.37% of base) : 21601.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
       -9.73 (-0.56% of base) : 25065.dasm - Benchstone.BenchF.InProd:Test():bool:this
       -9.05 (-0.77% of base) : 14859.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
       -5.51 (-0.77% of base) : 21600.dasm - Benchstone.BenchI.Array2:Initialize(System.Int32[][][])
       -4.15 (-0.17% of base) : 12182.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
       -3.92 (-0.32% of base) : 14860.dasm - LUDecomp:DoLUIteration(System.Double[][],System.Double[],System.Double[][][],System.Double[][],int):long
       -3.46 (-2.31% of base) : 25069.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)
       -1.70 (-0.20% of base) : 14862.dasm - LUDecomp:lubksb(System.Double[][],int,System.Int32[],System.Double[])

Top method improvements (percentages):
       -3.46 (-2.31% of base) : 25069.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)
      -99.27 (-2.09% of base) : 14861.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
     -220.67 (-1.74% of base) : 24678.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
      -66.30 (-1.41% of base) : 21598.dasm - Benchstone.BenchI.Array2:Bench(int):bool
      -18.40 (-1.37% of base) : 21601.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
       -9.05 (-0.77% of base) : 14859.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
       -5.51 (-0.77% of base) : 21600.dasm - Benchstone.BenchI.Array2:Initialize(System.Int32[][][])
       -9.73 (-0.56% of base) : 25065.dasm - Benchstone.BenchF.InProd:Test():bool:this
       -3.92 (-0.32% of base) : 14860.dasm - LUDecomp:DoLUIteration(System.Double[][],System.Double[],System.Double[][][],System.Double[][],int):long
      -18.73 (-0.28% of base) : 2430.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
       -1.70 (-0.20% of base) : 14862.dasm - LUDecomp:lubksb(System.Double[][],int,System.Int32[],System.Double[])
       -4.15 (-0.17% of base) : 12182.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])

12 total methods with Perf Score differences (12 improved, 0 regressed), 0 unchanged.

```

</details>

--------------------------------------------------------------------------------

## coreclr_tests.pmi.windows.x64.checked.mch:

```

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 25430
Total bytes of diff: 24994
Total bytes of delta: -436 (-1.71% of base)
Total relative delta: -0.42
    diff is an improvement.
    relative diff is an improvement.
```
<details>

<summary>Detail diffs</summary>

```

Top file improvements (bytes):
         -92 : 194668.dasm (-2.57% of base)
         -68 : 194589.dasm (-3.82% of base)
         -48 : 248565.dasm (-1.61% of base)
         -32 : 249053.dasm (-3.58% of base)
         -31 : 251012.dasm (-5.13% of base)
         -26 : 251011.dasm (-4.57% of base)
         -19 : 248561.dasm (-6.76% of base)
         -16 : 194667.dasm (-1.38% of base)
         -15 : 252241.dasm (-0.72% of base)
         -12 : 252242.dasm (-0.81% of base)
         -11 : 194669.dasm (-1.35% of base)
          -9 : 246308.dasm (-1.06% of base)
          -9 : 246307.dasm (-1.06% of base)
          -9 : 246245.dasm (-1.06% of base)
          -9 : 246246.dasm (-1.06% of base)
          -6 : 228622.dasm (-0.77% of base)
          -6 : 251010.dasm (-1.83% of base)
          -5 : 248557.dasm (-0.61% of base)
          -4 : 249054.dasm (-0.50% of base)
          -4 : 249052.dasm (-0.47% of base)

22 total files with Code Size differences (22 improved, 0 regressed), 1 unchanged.

Top method improvements (bytes):
         -92 (-2.57% of base) : 194668.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
         -68 (-3.82% of base) : 194589.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
         -48 (-1.61% of base) : 248565.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
         -32 (-3.58% of base) : 249053.dasm - SimpleArray_01.Test:BadMatrixMul2()
         -31 (-5.13% of base) : 251012.dasm - Benchstone.BenchI.Array2:Bench(int):bool
         -26 (-4.57% of base) : 251011.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
         -19 (-6.76% of base) : 248561.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)
         -16 (-1.38% of base) : 194667.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
         -15 (-0.72% of base) : 252241.dasm - Complex_Array_Test:Main(System.String[]):int
         -12 (-0.81% of base) : 252242.dasm - Simple_Array_Test:Main(System.String[]):int
         -11 (-1.35% of base) : 194669.dasm - LUDecomp:lubksb(System.Double[][],int,System.Int32[],System.Double[])
          -9 (-1.06% of base) : 246308.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagVarAry(System.Object[][][],int,int):this
          -9 (-1.06% of base) : 246307.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagAry(System.Object[][][],int,int):this
          -9 (-1.06% of base) : 246245.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagAry(System.Object[][][],int,int):this
          -9 (-1.06% of base) : 246246.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagVarAry(System.Object[][][],int,int):this
          -6 (-0.77% of base) : 228622.dasm - SciMark2.LU:solve(System.Double[][],System.Int32[],System.Double[])
          -6 (-1.83% of base) : 251010.dasm - Benchstone.BenchI.Array2:Initialize(System.Int32[][][])
          -5 (-0.61% of base) : 248557.dasm - Benchstone.BenchF.InProd:Bench():bool
          -4 (-0.50% of base) : 249054.dasm - SimpleArray_01.Test:BadMatrixMul3()
          -4 (-0.47% of base) : 249052.dasm - SimpleArray_01.Test:BadMatrixMul1()

Top method improvements (percentages):
         -19 (-6.76% of base) : 248561.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)
         -31 (-5.13% of base) : 251012.dasm - Benchstone.BenchI.Array2:Bench(int):bool
         -26 (-4.57% of base) : 251011.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
         -68 (-3.82% of base) : 194589.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
         -32 (-3.58% of base) : 249053.dasm - SimpleArray_01.Test:BadMatrixMul2()
         -92 (-2.57% of base) : 194668.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
          -6 (-1.83% of base) : 251010.dasm - Benchstone.BenchI.Array2:Initialize(System.Int32[][][])
         -48 (-1.61% of base) : 248565.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
         -16 (-1.38% of base) : 194667.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
         -11 (-1.35% of base) : 194669.dasm - LUDecomp:lubksb(System.Double[][],int,System.Int32[],System.Double[])
          -3 (-1.11% of base) : 249057.dasm - SimpleArray_01.Test:Test2()
          -9 (-1.06% of base) : 246308.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagVarAry(System.Object[][][],int,int):this
          -9 (-1.06% of base) : 246307.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagAry(System.Object[][][],int,int):this
          -9 (-1.06% of base) : 246245.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagAry(System.Object[][][],int,int):this
          -9 (-1.06% of base) : 246246.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagVarAry(System.Object[][][],int,int):this
         -12 (-0.81% of base) : 252242.dasm - Simple_Array_Test:Main(System.String[]):int
          -6 (-0.77% of base) : 228622.dasm - SciMark2.LU:solve(System.Double[][],System.Int32[],System.Double[])
         -15 (-0.72% of base) : 252241.dasm - Complex_Array_Test:Main(System.String[]):int
          -5 (-0.61% of base) : 248557.dasm - Benchstone.BenchF.InProd:Bench():bool
          -4 (-0.50% of base) : 249054.dasm - SimpleArray_01.Test:BadMatrixMul3()

22 total methods with Code Size differences (22 improved, 0 regressed), 1 unchanged.

```

</details>

--------------------------------------------------------------------------------

```

Summary of Perf Score diffs:
(Lower is better)

Total PerfScoreUnits of base: 161610.68999999997
Total PerfScoreUnits of diff: 160290.10999999996
Total PerfScoreUnits of delta: -1320.58 (-0.82% of base)
Total relative delta: -0.20
    diff is an improvement.
    relative diff is an improvement.
```
<details>

<summary>Detail diffs</summary>

```

Top file improvements (PerfScoreUnits):
     -639.25 : 252241.dasm (-0.97% of base)
     -220.67 : 248565.dasm (-1.74% of base)
     -132.59 : 252242.dasm (-0.26% of base)
      -99.27 : 194668.dasm (-2.09% of base)
      -66.30 : 251012.dasm (-1.41% of base)
      -62.20 : 249053.dasm (-2.74% of base)
      -18.40 : 251011.dasm (-1.37% of base)
       -9.33 : 248557.dasm (-0.54% of base)
       -9.05 : 194667.dasm (-0.77% of base)
       -8.32 : 249054.dasm (-0.42% of base)
       -5.85 : 246308.dasm (-0.52% of base)
       -5.85 : 246307.dasm (-0.52% of base)
       -5.85 : 246245.dasm (-0.52% of base)
       -5.85 : 246246.dasm (-0.52% of base)
       -5.51 : 251010.dasm (-0.77% of base)
       -4.36 : 249052.dasm (-0.22% of base)
       -4.16 : 253363.dasm (-0.21% of base)
       -4.15 : 194589.dasm (-0.17% of base)
       -3.92 : 194666.dasm (-0.32% of base)
       -3.41 : 248561.dasm (-2.29% of base)

23 total files with Perf Score differences (23 improved, 0 regressed), 0 unchanged.

Top method improvements (PerfScoreUnits):
     -639.25 (-0.97% of base) : 252241.dasm - Complex_Array_Test:Main(System.String[]):int
     -220.67 (-1.74% of base) : 248565.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
     -132.59 (-0.26% of base) : 252242.dasm - Simple_Array_Test:Main(System.String[]):int
      -99.27 (-2.09% of base) : 194668.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
      -66.30 (-1.41% of base) : 251012.dasm - Benchstone.BenchI.Array2:Bench(int):bool
      -62.20 (-2.74% of base) : 249053.dasm - SimpleArray_01.Test:BadMatrixMul2()
      -18.40 (-1.37% of base) : 251011.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
       -9.33 (-0.54% of base) : 248557.dasm - Benchstone.BenchF.InProd:Bench():bool
       -9.05 (-0.77% of base) : 194667.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
       -8.32 (-0.42% of base) : 249054.dasm - SimpleArray_01.Test:BadMatrixMul3()
       -5.85 (-0.52% of base) : 246308.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagVarAry(System.Object[][][],int,int):this
       -5.85 (-0.52% of base) : 246307.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagAry(System.Object[][][],int,int):this
       -5.85 (-0.52% of base) : 246245.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagAry(System.Object[][][],int,int):this
       -5.85 (-0.52% of base) : 246246.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagVarAry(System.Object[][][],int,int):this
       -5.51 (-0.77% of base) : 251010.dasm - Benchstone.BenchI.Array2:Initialize(System.Int32[][][])
       -4.36 (-0.22% of base) : 249052.dasm - SimpleArray_01.Test:BadMatrixMul1()
       -4.16 (-0.21% of base) : 253363.dasm - MatrixMul.Test:MatrixMul()
       -4.15 (-0.17% of base) : 194589.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
       -3.92 (-0.32% of base) : 194666.dasm - LUDecomp:DoLUIteration(System.Double[][],System.Double[],System.Double[][][],System.Double[][],int):long
       -3.41 (-2.29% of base) : 248561.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)

Top method improvements (percentages):
      -62.20 (-2.74% of base) : 249053.dasm - SimpleArray_01.Test:BadMatrixMul2()
       -3.41 (-2.29% of base) : 248561.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)
      -99.27 (-2.09% of base) : 194668.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
     -220.67 (-1.74% of base) : 248565.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
       -2.70 (-1.71% of base) : 249057.dasm - SimpleArray_01.Test:Test2()
      -66.30 (-1.41% of base) : 251012.dasm - Benchstone.BenchI.Array2:Bench(int):bool
      -18.40 (-1.37% of base) : 251011.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
     -639.25 (-0.97% of base) : 252241.dasm - Complex_Array_Test:Main(System.String[]):int
       -9.05 (-0.77% of base) : 194667.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
       -5.51 (-0.77% of base) : 251010.dasm - Benchstone.BenchI.Array2:Initialize(System.Int32[][][])
       -9.33 (-0.54% of base) : 248557.dasm - Benchstone.BenchF.InProd:Bench():bool
       -5.85 (-0.52% of base) : 246308.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagVarAry(System.Object[][][],int,int):this
       -5.85 (-0.52% of base) : 246307.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagAry(System.Object[][][],int,int):this
       -5.85 (-0.52% of base) : 246245.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagAry(System.Object[][][],int,int):this
       -5.85 (-0.52% of base) : 246246.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagVarAry(System.Object[][][],int,int):this
       -8.32 (-0.42% of base) : 249054.dasm - SimpleArray_01.Test:BadMatrixMul3()
       -3.92 (-0.32% of base) : 194666.dasm - LUDecomp:DoLUIteration(System.Double[][],System.Double[],System.Double[][][],System.Double[][],int):long
     -132.59 (-0.26% of base) : 252242.dasm - Simple_Array_Test:Main(System.String[]):int
       -1.89 (-0.22% of base) : 228622.dasm - SciMark2.LU:solve(System.Double[][],System.Int32[],System.Double[])
       -4.36 (-0.22% of base) : 249052.dasm - SimpleArray_01.Test:BadMatrixMul1()

23 total methods with Perf Score differences (23 improved, 0 regressed), 0 unchanged.

```

</details>

--------------------------------------------------------------------------------

## libraries.crossgen2.windows.x64.checked.mch:

```

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 10828
Total bytes of diff: 10809
Total bytes of delta: -19 (-0.18% of base)
Total relative delta: -0.00
    diff is an improvement.
    relative diff is an improvement.
```
<details>

<summary>Detail diffs</summary>

```

Top file improvements (bytes):
         -19 : 72504.dasm (-0.18% of base)

1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
         -19 (-0.18% of base) : 72504.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this

Top method improvements (percentages):
         -19 (-0.18% of base) : 72504.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this

1 total methods with Code Size differences (1 improved, 0 regressed), 0 unchanged.

```

</details>

--------------------------------------------------------------------------------

```

Summary of Perf Score diffs:
(Lower is better)

Total PerfScoreUnits of base: 6597.12
Total PerfScoreUnits of diff: 6586.31
Total PerfScoreUnits of delta: -10.81 (-0.16% of base)
Total relative delta: -0.00
    diff is an improvement.
    relative diff is an improvement.
```
<details>

<summary>Detail diffs</summary>

```

Top file improvements (PerfScoreUnits):
      -10.81 : 72504.dasm (-0.16% of base)

1 total files with Perf Score differences (1 improved, 0 regressed), 0 unchanged.

Top method improvements (PerfScoreUnits):
      -10.81 (-0.16% of base) : 72504.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this

Top method improvements (percentages):
      -10.81 (-0.16% of base) : 72504.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this

1 total methods with Perf Score differences (1 improved, 0 regressed), 0 unchanged.

```

</details>

--------------------------------------------------------------------------------

* Increase loop cloning max allowed condition blocks

Allows inner loop of 3-nested loops (e.g., Array2 benchmark)
to be cloned.

* Clear GTF_INX_RNGCHK bit on loop cloning created index nodes

to avoid unnecessary bounds checks.

Revert max cloning condition blocks to 3; allowing more doesn't
seem to improve performance (probably too many conditions before
a not-sufficiently-executed loop, at least for the Array2 benchmark)

* Remove outer index bounds checks

* Convert loop cloning data structures to `vector` for better debugging

* Improve CSE dump output

1. "#if 0" the guts of the CSE dataflow; that's not useful to most people.
2. Add readable CSE number output to the CSE dataflow set output
3. Add FMT_CSE to commonize CSE number output.
4. Add PHASE_OPTIMIZE_VALNUM_CSES to the pre-phase output "allow list"
and stop doing its own blocks/trees output.
5. Remove unused optCSECandidateTotal
6. Add functions `getCSEAvailBit` and `getCSEAvailCrossCallBit` to avoid
hand-coding these bit calculations in multiple places, for the CSE dataflow set bits.

* Mark cloned array indexes as non-faulting

When generating loop cloning conditions, mark array index expressions
as non-faulting, as we have already null- and range-checked the array
before generating an index expression.

I also added similary code to mark array length expressions as non-faulting,
for the same reason. However, that leads to CQ losses because of downstream
CSE effects.

* Don't count zero-sized align instructions in PerfScore

* Add COMPlus_JitDasmWithAlignmentBoundaries

This outputs the alignment boundaries without requiring outputting the actual addresses.
It makes it easier to diff changes.

* Improve bounds check output

* Improve emitter label printing

Create function for printing bound emitter labels.

Also, add debug code to associate a BasicBlock with an insGroup, and
output the block number and ID with the emitter label in JitDump, so it's easier
to find where a group of generated instructions came from.

* Formatting

* Clear BBF_LOOP_PREHEADER bit when compacting empty pre-header block

* Keep track of all basic blocks that contribute code to an insGroup

* Update display of Intel jcc erratum branches in dump

For instructions or instruction sequences which match the Intel jcc
erratum criteria, note that in the alignment boundary dump.

Also, a few fixes:
1. Move the alignment boundary dumping from `emitIssue1Instr` to
`emitEndCodeGen` to avoid the possibility of reading the next instruction in
a group when there is no next instruction.
2. Create `IsJccInstruction` and `IsJmpInstruction` functions for use by the
jcc criteria detection, and fix that detection to fix a few omissions/errors.
3. Change the jcc criteria detection to be hard-coded to 32 byte boundaries
instead of assuming `compJitAlignLoopBoundary` is 32.

An example:
```
    cmp      r11d, dword ptr [rax+8]
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (cmp: 0 ; jcc erratum) 32B boundary ...............................
    jae      G_M42486_IG103
```
In this case, the `cmp` doesn't cross the boundary, it is adjacent (the zero indicates the number of bytes
of the instruction which cross the boundary), followed by the `jae` which starts after the boundary.

Indicating the jcc erratum criteria can help point out potential performance issues due to unlucky
alignment of these instructions in asm diffs.

* Display full instruction name in alignment and other messages

XArch sometimes prepends a "v" to the instructions names from the instruction
table. Add a function `genInsDisplayName` to create the full instruction name
that should be displayed, and use that in most places an instruction name will
be displayed, such as in the alignment messages, and normal disassembly. Use
this instead of the raw `genInsName`.

This could be extended to handle arm32 appending an "s", but I didn't want to
touch arm32 with this change.

* Fix build

* Code review feedback

1. Rename GTF_INX_NONFAULTING to GTF_INX_NOFAULT to increase clarity compared
to existing GTF_IND_NONFAULTING.
2. Minor cleanup in getInsDisplayName.

* Formatting

3 years ago[interp] Fix open delegates used with virtual methods of valuetypes (#55354)
Vlad Brezae [Sat, 10 Jul 2021 17:00:38 +0000 (20:00 +0300)]
[interp] Fix open delegates used with virtual methods of valuetypes (#55354)

* [interp] Fix open delegates used with virtual methods of valuetypes

We were trying to resolve the virtual method on the this pointer (which is a managed pointer and not an object). If the delegate target method is declared on a valuetype, the method does not need resolving.

Fixes https://github.com/dotnet/runtime/issues/49839

* Re-enable tests