platform/upstream/dotnet/runtime.git
2 years agoIncluding FastFloat in parsing process (#62301)
Carl Verret [Tue, 8 Feb 2022 19:33:46 +0000 (14:33 -0500)]
Including FastFloat in parsing process (#62301)

* Including FastFloat in parsing process

* PR step 1 - adjusting code in regards to received comments.

* DigitsToUInt64 : Parsing batches of 8 digits with SWAR

* Update src/libraries/System.Private.CoreLib/src/System/Number.NumberToFloatingPointBits.cs

Co-authored-by: Günther Foidl <gue@korporal.at>
* Update src/libraries/System.Private.CoreLib/src/System/Number.NumberToFloatingPointBits.cs

Co-authored-by: Günther Foidl <gue@korporal.at>
* MaxMantissaFastPath fix

* merge problem...

* Revert "merge problem..."

This reverts commit 1b5fd5136a5396c6439ffd47ef46d0c8b3134693.

* removing an extra comparison for fast path.

* According to PR review, all requested changes are in this commit.

* According to new serie of comments on this PR.

* Fixing formatting.

* fixing sentence ending in comments

* Update THIRD-PARTY-NOTICES.TXT

Adding license notice for FastFloat algorithm

* Update src/libraries/System.Private.CoreLib/src/System/Number.NumberToFloatingPointBits.cs

Co-authored-by: Tanner Gooding <tagoo@outlook.com>
* Identation of power of 5 table

* some adjustements according to reviewer's requests.

* Unnecessary assignment of a value to 'exponent'

* removing excedent path for total digits < 7

* removing path for totaldigits <7

* getting rid of unused power of 10 table

* Renaming FastFloat specific values
Specifying infinitePower param as hexa

* renaming some variables and adjusting comments.

* Handle endianness swapping for BigEndian systems.

Co-authored-by: Günther Foidl <gue@korporal.at>
Co-authored-by: Tanner Gooding <tagoo@outlook.com>
2 years agoTest and comment one-shot CFB8 with extra padding
Kevin Jones [Tue, 8 Feb 2022 19:11:34 +0000 (14:11 -0500)]
Test and comment one-shot CFB8 with extra padding

The CFB one shot decryption handled up to block-size padding intentionally. This adds a test and a comment to explain why.

2 years agoJIT: more stringent interference checks in forward sub (#64933)
Andy Ayers [Tue, 8 Feb 2022 19:05:09 +0000 (11:05 -0800)]
JIT: more stringent interference checks in forward sub (#64933)

Forward sub analysis was missing some cases of call arg interference and so
inviting/allowing morph to do unsafe arg reorderings.

Fix by considering all kinds of local nodes, not just GT_LCL_VAR, as sources
of interference.

Closes #64904.

2 years agoAdd JIT support for control-flow guard on x64 and arm64 (#63763)
Jakob Botsch Nielsen [Tue, 8 Feb 2022 17:20:12 +0000 (18:20 +0100)]
Add JIT support for control-flow guard on x64 and arm64 (#63763)

Add support for generating control-flow guard checks. The support is enabled by a JIT flag or by setting COMPlus_JitForceControlFlowGuard=1.

Co-authored-by: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
2 years agoJIT: fix containment safety check in LowerHWIntrinsicGetElement (#64960)
Andy Ayers [Tue, 8 Feb 2022 15:59:59 +0000 (07:59 -0800)]
JIT: fix containment safety check in LowerHWIntrinsicGetElement (#64960)

Missing call to IsSafeToContainMem was causing us to mistakenly think
an operand was going to be contained when it wasn't.

Fixes #64918

2 years agoJIT: fix morph's tree rethreading/recosting logic (#64954)
Andy Ayers [Tue, 8 Feb 2022 15:57:30 +0000 (07:57 -0800)]
JIT: fix morph's tree rethreading/recosting logic (#64954)

Morph might sometimes not rethread/recost changed trees, leading to asserts
downstream as ordered traversals ran across deleted operands.

Fixes #64892

2 years agoTake into account zero-offset field sequences when propagating locals (#64701)
SingleAccretion [Tue, 8 Feb 2022 15:30:28 +0000 (18:30 +0300)]
Take into account zero-offset field sequences when propagating locals (#64701)

* Add a test

* Fix the problem

LCL_VAR use VN != VN of its SSA def.

Using one for replacement can run afoul of substituting
into a LCL_VAR that has a zero-offset field sequence on
top and thus duplicate the sequence (as the replacement
def will already have this sequence incorporated into its
VN).

* Fix the same problem in local propagation

Just one diff, missing null check elimination: we propagated a field
sequence for an array address (PtrToArrElem) that later wasn't recognized
as implying non-nullness of another PtrToArrElem to the same array.

2 years agoDelete StructLayoutAttribute.Pack adjustment (#64965)
Jan Kotas [Tue, 8 Feb 2022 15:28:17 +0000 (07:28 -0800)]
Delete StructLayoutAttribute.Pack adjustment (#64965)

This adjustment was trying to minic adjustment performed by type loader, but the logic has been out-of-sync with the type loader evolution for years.
It does not make sense for custom attribute reading via reflection to perform this adjustment.

Fixes #12480

2 years ago[mono] Fix is_byreflike_set on big-endian platforms (#64903)
Ulrich Weigand [Tue, 8 Feb 2022 15:16:32 +0000 (16:16 +0100)]
[mono] Fix is_byreflike_set on big-endian platforms (#64903)

* Use int / gint32 types to avoid C# vs. native type mismatches

* Fixes s390x regression after https://github.com/dotnet/runtime/pull/63985

2 years agoReduce the cost of creating a MemoryMappedFile (#63790)
Adam Sitnik [Tue, 8 Feb 2022 09:17:51 +0000 (10:17 +0100)]
Reduce the cost of creating a MemoryMappedFile (#63790)

* don't fetch the file size more than once when creating a MemoryMappedFile

* use SafeFileHandle instead FileStream

* ensure the handle is disposed when fetching the file size fails

2 years agoImprove Directory.Move and DirectoryInfo.MoveTo (#63675)
Adam Sitnik [Tue, 8 Feb 2022 09:10:40 +0000 (10:10 +0100)]
Improve Directory.Move and DirectoryInfo.MoveTo (#63675)

* fix the tests: call the virtual Move method, which is overridden in DirectoryInfo_MoveTo class and allows for testing DirectoryInfo.MoveTo as well

* unify the Directory.Move and DirectoryInfo.MoveTo logic, move the common part to FileSystem.MoveDirectory

* remove duplicated check

* there is no need to perform the extra checks on Windows

* check for source file existence only once

* on WASM rename does not fail with ENOTDIR for files that end with /
so we need to handle it before rename is called

2 years agoFix card marking issue (#64748)
Peter Sollich [Tue, 8 Feb 2022 09:07:51 +0000 (10:07 +0100)]
Fix card marking issue (#64748)

Fix issue where we didn't clear cards at the ends of regions.

The problem is that when we reach the end of a region during card marking, we clear the cards between card and card_of (end). If card_of (end) is equal to card, we end up clearing nothing at all.

A similar problem occurs when cards happen to be set between end and the end of the reserved memory of the region - these cards would never be cleared.

Both issues don't affect correctness, but they do affect performance for regions with very few cross generation pointers.

Note this change affects only regions - for segments, we stay with code that is equivalent to what we had before.

2 years ago[Mono] Fix potential crash when handling image load event. (#64908)
Johan Lorensson [Tue, 8 Feb 2022 08:42:59 +0000 (09:42 +0100)]
[Mono] Fix potential crash when handling image load event. (#64908)

2 years agoAdd user-facing docs and samples for NativeAOT (#64894)
Michal Strehovský [Tue, 8 Feb 2022 07:39:55 +0000 (16:39 +0900)]
Add user-facing docs and samples for NativeAOT (#64894)

As of https://github.com/dotnet/runtimelab/commit/04b092003db5ba207d4fa3f3becb7f01828bf16c.

2 years agoFix runtime tests on Android (#64950)
Alexander Köplinger [Tue, 8 Feb 2022 05:50:06 +0000 (06:50 +0100)]
Fix runtime tests on Android (#64950)

In https://github.com/dotnet/runtime/pull/64744 I changed the name of the env variable used to store the test results directoy but I didn't notice that the runtime tests don't use the same runner.

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

2 years agoImprove SSL platform detection (#64923)
Tomas Weinfurt [Tue, 8 Feb 2022 04:49:55 +0000 (20:49 -0800)]
Improve SSL platform detection (#64923)

* CI matrix change: add Windows Server 2022

* Add registry check for ssl3 - tls1.2 tests

* Disable TLS1.3 on framework code

* Fix typo

* revert queue change

Co-authored-by: Jan Jahoda <jajahoda@microsoft.com>
2 years agoLocal heap optimizations on Arm64 (#64481)
Egor Chesakov [Tue, 8 Feb 2022 04:37:37 +0000 (20:37 -0800)]
Local heap optimizations  on Arm64 (#64481)

# Local heap optimizations on Arm64

1. When not required to zero the allocated space for local heap (for sizes up to 64 bytes) - do not emit zeroing sequence. Instead do stack probing and adjust stack pointer:

```diff
-            stp     xzr, xzr, [sp,#-16]!
-            stp     xzr, xzr, [sp,#-16]!
-            stp     xzr, xzr, [sp,#-16]!
-            stp     xzr, xzr, [sp,#-16]!
+            ldr     wzr, [sp],#-64
```

2. For sizes less than one `PAGE_SIZE` use `ldr wzr, [sp], #-amount` that does probing at `[sp]` and allocates the space at the same time. This saves one instruction for such local heap allocations:

```diff
-            ldr     wzr, [sp]
-            sub     sp, sp, #208
+            ldr     wzr, [sp],#-208
```

Use `ldp tmpReg, xzr, [sp], #-amount` when the offset not encodable by post-index variant of `ldr`:
```diff
-            ldr     wzr, [sp]
-            sub     sp, sp, #512
+            ldp     x0, xzr, [sp],#-512
```

3. Allow non-loop zeroing (i.e. unrolled sequence) for sizes up to 128 bytes (i.e. up to `LCLHEAP_UNROLL_LIMIT`). This frees up two internal integer registers for such cases:

```diff
-            mov     w11, #128
-                                               ;; bbWeight=0.50 PerfScore 0.25
-G_M44913_IG19:        ; gcrefRegs=00F9 {x0 x3 x4 x5 x6 x7}, byrefRegs=0000 {}, byref, isz
             stp     xzr, xzr, [sp,#-16]!
-            subs    x11, x11, #16
-            bne     G_M44913_IG19
+            stp     xzr, xzr, [sp,#-112]!
+            stp     xzr, xzr, [sp,#16]
+            stp     xzr, xzr, [sp,#32]
+            stp     xzr, xzr, [sp,#48]
+            stp     xzr, xzr, [sp,#64]
+            stp     xzr, xzr, [sp,#80]
+            stp     xzr, xzr, [sp,#96]
```

4. Do zeroing in ascending order of the effective address:

```diff
-            mov     w7, #96
-G_M49279_IG13:
             stp     xzr, xzr, [sp,#-16]!
-            subs    x7, x7, #16
-            bne     G_M49279_IG13
+            stp     xzr, xzr, [sp,#-80]!
+            stp     xzr, xzr, [sp,#16]
+            stp     xzr, xzr, [sp,#32]
+            stp     xzr, xzr, [sp,#48]
+            stp     xzr, xzr, [sp,#64]
```

In the example, the zeroing is done at `[initialSp-16], [initialSp-96], [initialSp-80], [initialSp-64], [initialSp-48], [initialSp-32]` addresses. The idea here is to allow a CPU to detect the sequential `memset` to `0` pattern and switch into write streaming mode.

2 years agoNativeAOT ARM64 libraries testing (#64373)
Michal Strehovský [Tue, 8 Feb 2022 04:33:47 +0000 (13:33 +0900)]
NativeAOT ARM64 libraries testing (#64373)

Enable ARM64 libraries testing for NativeAOT.

* Copy the crosstargeting build approach from crossgen2. We'll now build two ILC compilers when targeting ARM64 from x64: an arm64-hosted one that is useless on the build machine, and a x64-hosted one, that will work on the build machine. The `ILCompiler.csproj/props/_crossarch.csproj` projects mirror crossgen's approach.
* Limit the number of libraries tests to one. Hopefully it avoids the build races that we'd see until we can update the repo build to .NET 7 Preview 1.
* Create an ARM64 NativeAOT CI leg that sends the libraries tests to Helix to run.

2 years agoFix SymbolixRegexRunner handling of "beginning" (#64946)
Stephen Toub [Tue, 8 Feb 2022 04:02:40 +0000 (23:02 -0500)]
Fix SymbolixRegexRunner handling of "beginning" (#64946)

The Runner's Go implementation is loading the `runtext` but ignoring `runtextbeg`.  If a non-0 beginning were passed in, the matcher could end up evaluating beginning anchors incorrectly, as it always considers beginning == 0.  This fixes that by slicing the input to ensure the matcher is always called with a span representing the full beginning-end length, such that it's beginning==0 assumption is true.

2 years ago[main] Update dependencies from dotnet/linker (#64848)
dotnet-maestro[bot] [Tue, 8 Feb 2022 00:37:33 +0000 (01:37 +0100)]
[main] Update dependencies from dotnet/linker (#64848)

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
2 years agoRemove spin lock from SocketAsyncEventArgs on Windows (#64770)
Stephen Toub [Tue, 8 Feb 2022 00:16:20 +0000 (19:16 -0500)]
Remove spin lock from SocketAsyncEventArgs on Windows (#64770)

* Remove spin lock from SocketAsyncEventArgs on Windows

The Windows implementation of SocketAsyncEventArgs has a spin lock to help coordinate between the thread initiating the Winsock operation and the eventual overlapped completion callback.  There are some operations we delay (e.g. registering for cancellation) until after the operation has already been initiated and shown to complete asynchronously rather than synchronously, and as these are being set up after the Winsock call to perform the socket operation, it's possible for the overlapped completion to happen before or while we do that additional cleanup.  This condition was expected to be rare, and a spin lock is used to ensure that if the race condition does occur, the callback waits for the state set up to be complete before continuing.

However, it turns out for certain operations it's actually not that rare.  In particular, it appears that accepts when there's already a pending connection end up frequently completing asynchronously but immediately, which causes this race condition to manifest, and we've seen the spin lock spin so many times that it falls back to an actual sleep that causes unexpected delays.

We can instead just maintain a simple gate that describes whether the launching thread or the callback thread own completion.  The launcher sets up all the state and then tries to transition to set the gate.  Similarly, the first thing the callback does is set the gate (to a packed result in case the launcher needs it).  Whoever gets there second is responsible for handling completion.  If the launching thread is the one that gets there second, it essentially turns the asynchronous operation into a synchronous one, from the perspective of the caller, just as if the operation had completed synchronously.

* Avoid an Interlocked.Exchange in the common case

2 years agoIncrease default HostOptions.ShutdownTimeout to 30 seconds (#63712)
Reuben Bond [Mon, 7 Feb 2022 23:52:20 +0000 (15:52 -0800)]
Increase default HostOptions.ShutdownTimeout to 30 seconds (#63712)

2 years agoPreserve existing keys in dictionary (#63834)
Pavel Ivanov [Mon, 7 Feb 2022 23:50:12 +0000 (04:50 +0500)]
Preserve existing keys in dictionary (#63834)

* Binding to dictionary doesn't preserve existing keys of origin dictionary

* Attempt to bind existing instance if it is not null

* Remove redundant if-else statement

* Add test for binding to dictionary with enum as key type

* Don't use var unless it is obvious from the right hand side

Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
* Explicitly ignore result

Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
2 years ago[Group 2] Enable nullable annotations for `Microsoft.Extensions.Caching.Abstractions...
Maksym Koshovyi [Mon, 7 Feb 2022 23:47:05 +0000 (01:47 +0200)]
[Group 2] Enable nullable annotations for `Microsoft.Extensions.Caching.Abstractions` (#64018)

* Annotate things

* EvictionCallback is nullable

2 years agoAdd S.S.C.Cose with COSE Sign1 support (#64461)
David Cantú [Mon, 7 Feb 2022 23:21:03 +0000 (15:21 -0800)]
Add S.S.C.Cose with COSE Sign1 support (#64461)

* Add S.S.C.Cose

* Override Equals in CoseHeaderLabel

* Add SystemFormatsCborVersion to eng/Versions.props

* Address PR feedback

* Remove commented Debugger.Launch from test

* Src:
* Support signing with empty header maps
* Add HashAlgorithmName argument to the granular APIs
Tests:
* Make crypto keys ThreadStatic to avoid race conditions
* Exclude CoseMessage and CoseSign1Message from browser
* Define DefaultKey and DefaultHash to simplify tests
* Overall clean-up

* Use explicit type instead of var

* Tests: Add logic to verify expected headers

* Do not mutate the protectected map when alg header was not specified

* src: Address suggestions

* tests:
* Fix ThreadStatic properties
* Switch from SkipOnPlatformAttribute to IgnoreForCI in csproj

* src: Address style suggestions

* Use ProjectRef instead of PackageRef

* RequiresPreviewFeaturesAttribute must be internal in non-netcoreapp

* Address feedback on CoseHeaderLabel

* src: use RequiresPreviewFeatures as assembly level attribute
tests: add test project to exclusion list of local browser runs

2 years agoStreamline bool.TryParse/Format (#64782)
Stephen Toub [Mon, 7 Feb 2022 22:37:51 +0000 (17:37 -0500)]
Streamline bool.TryParse/Format (#64782)

* Streamline bool.TryParse/Format

* Factor out the failure path and add length checks

2 years agoDelete unnecessary entries from ApiCompatBaseline.netcoreapp.netstandard.txt (#64928)
Jan Kotas [Mon, 7 Feb 2022 22:28:19 +0000 (14:28 -0800)]
Delete unnecessary entries from ApiCompatBaseline.netcoreapp.netstandard.txt (#64928)

2 years ago[main] Update dependencies from 8 repositories (#64806)
dotnet-maestro[bot] [Mon, 7 Feb 2022 22:03:05 +0000 (23:03 +0100)]
[main] Update dependencies from 8 repositories (#64806)

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

Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.TargetFramework , 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.XUnitExtensions , Microsoft.DotNet.GenAPI , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.GenFacades , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.Helix.Sdk
 From Version 2.5.1-beta.22080.1 -> To Version 2.5.1-beta.22103.1

* Update dependencies from https://github.com/dotnet/xharness build 20220204.1

Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit
 From Version 1.0.0-prerelease.22101.2 -> To Version 1.0.0-prerelease.22104.1

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

Microsoft.DotNet.CilStrip.Sources , 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.Text.RegularExpressions.TestData , System.Windows.Extensions.TestData
 From Version 7.0.0-beta.22075.1 -> To Version 7.0.0-beta.22103.2

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

Microsoft.NET.Workload.Emscripten.Manifest-7.0.100
 From Version 7.0.0-alpha.2.22102.3 -> To Version 7.0.0-alpha.2.22103.4

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

Microsoft.DotNet.HotReload.Utils.Generator.BuildTool
 From Version 1.0.2-alpha.0.22081.2 -> To Version 1.0.2-alpha.0.22103.1

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

runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-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 , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools
 From Version 11.1.0-alpha.1.22081.2 -> To Version 11.1.0-alpha.1.22103.3

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

Microsoft.NETCore.Runtime.ICU.Transport
 From Version 7.0.0-preview.2.22101.1 -> To Version 7.0.0-preview.2.22103.1

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

Microsoft.NET.Workload.Emscripten.Manifest-7.0.100
 From Version 7.0.0-alpha.2.22102.3 -> To Version 7.0.0-alpha.2.22104.1

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

runtime.win-x64.Microsoft.NETCore.Runtime.ObjWriter , runtime.win-arm64.Microsoft.NETCore.Runtime.ObjWriter , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.ObjWriter , runtime.osx.11.0-arm64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-x64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-musl-x64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-arm64.Microsoft.NETCore.Runtime.ObjWriter
 From Version 1.0.0-alpha.1.22073.1 -> To Version 1.0.0-alpha.1.22104.2

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

Microsoft.NETCore.ILAsm , Microsoft.NETCore.DotNetHostPolicy , Microsoft.NETCore.DotNetHost , Microsoft.NETCore.App.Runtime.win-x64 , System.Runtime.CompilerServices.Unsafe , runtime.native.System.IO.Ports , Microsoft.NET.Sdk.IL , System.Text.Json
 From Version 7.0.0-preview.2.22080.2 -> To Version 7.0.0-preview.2.22103.2

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Přemek Vysoký <premek.vysoky@microsoft.com>
2 years agoConsole.Unix: fix missing terminal configuration on SIGINT/SIGQUIT/SIGCONT. (#64200)
Tom Deseyn [Mon, 7 Feb 2022 21:31:23 +0000 (22:31 +0100)]
Console.Unix: fix missing terminal configuration on SIGINT/SIGQUIT/SIGCONT. (#64200)

The introduction of the managed API for signal handling (PosixSignal)
inadvertently caused terminal configuration to no longer be performed
when no managed handlers are registered.

This adds back the unconditional registration for SIGINT/SIGQUIT/SIGCONT.

The missing registrations can cause the terminal to stop echoing when an
application terminates on Ctrl-C.

2 years agovtable setup fix for generic default interface methods in mono runtime (#64102)
Bill Holmes [Mon, 7 Feb 2022 21:29:49 +0000 (16:29 -0500)]
vtable setup fix for generic default interface methods in mono runtime (#64102)

* vtable setup fix for generic default interface methods in mono runtime

When processing the overrides from interface default methods we should
check if the interface class is a generic type definition first and
inflate with the interface class context.

Test case included.

* Update test to ensure that the correct context is used

2 years ago62606 Return fully qualified path from FileSystemEventArgs (#63051)
Liviu Mandras-Iura [Mon, 7 Feb 2022 21:16:42 +0000 (23:16 +0200)]
62606 Return fully qualified path from FileSystemEventArgs (#63051)

* FullPath property now returns fully qualified path

Gets the fully qualified path after combining the directory and name part
as per the thread discussion. Also added and updated tests for the new change.

Fix #62606

* OldFullPath returns fully qualified path

To be consistent with new behavior of FullPath from FileSystemEventArgs
same change was applied for RenamedEventArgs including updated tests.

Fix #62606

* Marked some test cases as Windows OS specific

In the context of using an actual full path
which can vary on Unix vs Windows

Fix #62606

* Using Path.Join instead of the custom Combine

Adjusted unit tests to match the new logic.

Fix #62606

* Account for corner case when fullPath matches root

The previous buggy implementation of RenamedEventArgs
produced a convenient side-effect for PhysicalFilesWatcher.

Without the trailing slash adde by RenamedEventArgs the root
was longer than the fullPath by a trailing slash.

Fix #62606

* Handle relative paths from CWD in given drive

Fix #62606

* Clearly separated unix and windows test cases

Implemented most of the code review suggestions.

Fix #62606

* Use EnsureTrailingSeparator instead of custom code

Also made unit tests more focused by
removing needless asserts from the tests

Fix #62606

* Keeping the old behavior with trailing separator

Reverted the changes to PhysicalFilesWatcher
and added back the trailing separator behavior
as per code review suggestion

Fix #62606

* Used Path.Combien vs PathInternalEnsureSeparator

As per code review suggestions.

Fix #62606

* Added blank line for readability

Pipeline retrigger. Some pipelines timed out, most probably transient issues.

Fix #62606

2 years agoMove one more 20H2 queue to server 2022 (#64919)
Sven Boemer [Mon, 7 Feb 2022 21:13:26 +0000 (13:13 -0800)]
Move one more 20H2 queue to server 2022 (#64919)

* Move one more 20H2 queue to server 2022

Fix one more instance not covered by https://github.com/dotnet/runtime/pull/64827.
This should fix the same failure in runtime-extra-platforms.

* Update IsIcuCompatiblePlatform

2 years agoSkip System.Net.NetworkInformation.Tests.PingTest.SendPingWithIPAddressAndBigSize...
Maxim Lipnin [Mon, 7 Feb 2022 19:01:56 +0000 (22:01 +0300)]
Skip System.Net.NetworkInformation.Tests.PingTest.SendPingWithIPAddressAndBigSize test on Android (#64897)

Addresses #64798

2 years agoTurn off flaky RapidJSON optimization on x64 (#64851)
Adeel Mujahid [Mon, 7 Feb 2022 17:30:00 +0000 (19:30 +0200)]
Turn off flaky RapidJSON optimization on x64 (#64851)

2 years agoTurn off -ffp-contract on Unix (#64847)
Adeel Mujahid [Mon, 7 Feb 2022 17:28:54 +0000 (19:28 +0200)]
Turn off -ffp-contract on Unix (#64847)

2 years agoImprove backport.yml to only check start of line and instructions for team visibility...
Alexander Köplinger [Mon, 7 Feb 2022 17:24:52 +0000 (18:24 +0100)]
Improve backport.yml to only check start of line and instructions for team visibility (#64915)

Before the bot reacted to the /backport command anywhere in the comment, now it needs to be at the start of the line.

Additionally, if the check for repo collaborator fails print a link to the Microsoft team on GitHub to change visibility (most common failure case).

2 years ago[wasm][debugger] Fixing race condition (#64394)
Thays Grazia [Mon, 7 Feb 2022 17:24:29 +0000 (14:24 -0300)]
[wasm][debugger] Fixing race condition (#64394)

* Fixing race condition.

* Completely avoid race condition as @lewing suggested.

* keeping old name

* Addressing @radical comments

* Addressing @lewing comments.

* fix unrelated change

* Addressing @lewing comment offline.

2 years agoExplicit test for injecting scoped IServiceProvider (#63225) (#64558)
lord-executor [Mon, 7 Feb 2022 16:35:33 +0000 (17:35 +0100)]
Explicit test for injecting scoped IServiceProvider (#63225) (#64558)

2 years ago[mono] Remove OP_FCONV_TO_U opcode (#64618)
Ulrich Weigand [Mon, 7 Feb 2022 16:06:20 +0000 (17:06 +0100)]
[mono] Remove OP_FCONV_TO_U opcode (#64618)

* Emit OP_FCONV_TO_U8/U4 instead of OP_FCONV_TO_U.

* Remove OP_FCONV_TO_U implementations across all back ends.

* Remove duplicated mono_fconv_u8/u4 icall wrappers.

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

2 years agoBump coverlet version to 3.1.2 (#64875)
Marco Rossignoli [Mon, 7 Feb 2022 14:49:00 +0000 (15:49 +0100)]
Bump coverlet version to 3.1.2 (#64875)

2 years ago[mobile] Add extra HttpClientHandler linker substitution (#64818)
Steve Pfister [Mon, 7 Feb 2022 12:08:48 +0000 (04:08 -0800)]
[mobile] Add extra HttpClientHandler linker substitution (#64818)

Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
Co-authored-by: Steve Pfister <steve.pfister@microsoft.com>
2 years agoNormalize returns after optimizing returned indirs (#64881)
Jakob Botsch Nielsen [Mon, 7 Feb 2022 12:04:49 +0000 (13:04 +0100)]
Normalize returns after optimizing returned indirs (#64881)

This ensures we normalize returned indirs of locals, even when we fold
it into an access of a promoted local's field. This may change a signed
indir into access of an unsigned field, which may need a sign-extending
cast to be inserted.

It is not ideal that fgMorphRetInd can 'lose' this information, but
given that it is a specialized optimization it seems the simplest
solution is to just rely on the follow-up normalization.

Fix #61359

2 years agoImprovements for SpanHelpers.IndexOf (#64872)
Egor Bogatov [Mon, 7 Feb 2022 11:35:12 +0000 (14:35 +0300)]
Improvements for SpanHelpers.IndexOf (#64872)

2 years agoPropagate exception sets for assignments (#64882)
SingleAccretion [Mon, 7 Feb 2022 09:45:37 +0000 (12:45 +0300)]
Propagate exception sets for assignments (#64882)

* Propagate exception sets for block assignments

* Propagate exception sets for simple assignments

* Fix fgValueNumberCastHelper

To not rely on VNs of setup/placeholder args.

* Enable the checker

2 years agoDelete ReflectionModule::m_pCreatingAssembly and PEAssembly::m_creator (#64865)
Jan Kotas [Mon, 7 Feb 2022 06:53:40 +0000 (22:53 -0800)]
Delete ReflectionModule::m_pCreatingAssembly and PEAssembly::m_creator (#64865)

2 years agoJIT: clear lvMustInit from dependent locals (#64877)
Andy Ayers [Mon, 7 Feb 2022 04:59:24 +0000 (20:59 -0800)]
JIT: clear lvMustInit from dependent locals (#64877)

Their initialization is handled by the parent local.

Closes #64808.

2 years agoFix operator precedence consistency in ASCIIUtility.GetIndexOfFirstNonAsciiByte ...
Alexander Köplinger [Sun, 6 Feb 2022 22:04:17 +0000 (23:04 +0100)]
Fix operator precedence consistency in ASCIIUtility.GetIndexOfFirstNonAsciiByte (#64814)

The `&&` operator takes precedence over `||`, make it explicit by wrapping in parenthesis which also makes it consistent with other usages like https://github.com/dotnet/runtime/blob/57bfe474518ab5b7cfe6bf7424a79ce3af9d6657/src/libraries/System.Private.CoreLib/src/System/Text/Unicode/Utf8Utility.Transcoding.cs#L887

Sse2 implies little endian so the check only needs to apply to AdvSimd.

2 years agoMark promoted SIMD locals used by HWIs as DNER (#64855)
SingleAccretion [Sun, 6 Feb 2022 18:59:35 +0000 (21:59 +0300)]
Mark promoted SIMD locals used by HWIs as DNER (#64855)

As the added comment states, we must do this to get dependent
promotion, as otherwise the compiler does not support independent
promotion of structs not fully eliminated from the IR, save some
special cases (such as multi-reg structs).

We will only need to do this very rarely, as otherwise we mark
SIMD locals used by SIMDs/HWIs specially when creating those
nodes so as not to promote them.

This issue was revealed by forward substituion, where we had:

SIMD a = OBJ(ADDR(b)) // b is SIMD too
HWI(a)

And forward-substituted the promoted "b" into "HWI". Notably,
by the time we are forward-substituting, "we cannot really do
anything about it", as struct promotion has already run, and
by the time we get to morph, we too cannot do much save some
gymnastics with conjuring up a tree of inserts from individual
fields.

2 years agoFix link in readytorun-format.md (#64878)
Austin Wise [Sun, 6 Feb 2022 18:39:55 +0000 (10:39 -0800)]
Fix link in readytorun-format.md (#64878)

The link was not rendering correctly, as the link text and target were on separate lines.

2 years agoAdd support for `TYP_BYREF` `LCL_FLD`s to VN (#64501)
SingleAccretion [Sun, 6 Feb 2022 14:48:36 +0000 (17:48 +0300)]
Add support for `TYP_BYREF` `LCL_FLD`s to VN (#64501)

* Do not add a zero-offset FldSeq to LCL_FLD directly

"fgAddFieldSeqForZeroOffset"'s contract is that it is passed
an *address*. If that address is a LCL_FLD, we must use the
"zero-offset sequence map", not the sequence of LCL_FLD itself,
as that represents LCL_FLD's own value, not the value it produces
(LCL_FLD == IND(LCL_FLD_ADDR), and LCL_FLD's sequence is the one
attached to LCL_FLD_ADDR, not IND).

* Fix the same issue in "ChangeOper"

* Read zero-offset FldSeqs on LclFld in VN

2 years ago[mono] Add an 'allow-errors' AOT option. (#64640)
Zoltan Varga [Sun, 6 Feb 2022 11:59:44 +0000 (06:59 -0500)]
[mono] Add an 'allow-errors' AOT option. (#64640)

This can be used to avoid aborting the AOT process if a loader
error occurs. The methods which fail to load will not be AOTed and
the failures will happen at runtime.

Related:
https://github.com/dotnet/runtime/issues/63654

2 years agoJIT: contained memory safety analysis fixes and improvements (#64843)
Andy Ayers [Sun, 6 Feb 2022 06:42:03 +0000 (22:42 -0800)]
JIT: contained memory safety analysis fixes and improvements (#64843)

Fixes a couple of issues exposed by forward sub, where containment analysis
was allowing unsafe reordering of operands.

Closes #64828.

Generalize the safety check so that a store to a local not live into a handler
can be reordered with respect to node causing exceptions. Happily this leads
to almost uniformly better code despite the more stringent checking added above.

Add a workaround for the late callbacks into the containment checker made on
unlinked nodes. Assume these are always safe.

Also add extra checks; fast path early out; assertion in MakeSrcContained.

2 years ago[mono] Allow missing assemblies in llvmonly+interp mode. (#64294)
Zoltan Varga [Sun, 6 Feb 2022 06:23:48 +0000 (01:23 -0500)]
[mono] Allow missing assemblies in llvmonly+interp mode. (#64294)

Part of the fix for https://github.com/dotnet/runtime/issues/51961.

Co-authored-by: Ankit Jain <radical@gmail.com>
2 years agofix broken outerloop test (#64858)
Andy Ayers [Sat, 5 Feb 2022 23:25:50 +0000 (15:25 -0800)]
fix broken outerloop test (#64858)

2 years agoAdd ActivitySource support to DiagnosticsHandler (#64753)
Marie Píchová [Sat, 5 Feb 2022 20:17:17 +0000 (21:17 +0100)]
Add ActivitySource support to DiagnosticsHandler (#64753)

* Brought back changes from https://github.com/dotnet/runtime/pull/54437

* Fixed tests

* feedback

2 years agoSet up an analyzer exception filter to make intermittent failures more actionable...
Jeremy Koritzinsky [Sat, 5 Feb 2022 17:58:42 +0000 (09:58 -0800)]
Set up an analyzer exception filter to make intermittent failures more actionable. (#64836)

Update the Roslyn Testing SDK version and update the DllImportGenerator unit tests to crash in a way that produces a dump for some of our intermittent issues (https://github.com/dotnet/runtime/issues/60909, https://github.com/dotnet/runtime/issues/62223). This mechanism will crash the process during the "exception filter" phase, so it will still have the throwing frame on the stack (no unwinding). Hopefully this will enable us to get more actionable dumps to investigate these issues and determine if they're Roslyn bugs or GC holes.

2 years ago[wasm] Fix scenario specific tests (#64800)
Marek Fišera [Sat, 5 Feb 2022 09:44:06 +0000 (10:44 +0100)]
[wasm] Fix scenario specific tests (#64800)

- Fix including additional scenario test folders as HelixWorkItems.
- Disable `System.Net.WebSockets.Client.Tests` on NodeJS, before we fix NodeJS.
- Fix paths to echo and remote loop servers.

Co-authored-by: Ankit Jain <radical@gmail.com>
2 years agoMove 20H2 queues to server 2022 (#64827)
Santiago Fernandez Madero [Fri, 4 Feb 2022 23:38:38 +0000 (15:38 -0800)]
Move 20H2 queues to server 2022 (#64827)

2 years agoDelete Statement::m_compilerAdded . (#64506)
Sergey Andreenko [Fri, 4 Feb 2022 20:14:56 +0000 (15:14 -0500)]
Delete Statement::m_compilerAdded . (#64506)

2 years ago[wasm] Some cleanup of wasm jobs in runtime-extra-platforms (#64766)
Ankit Jain [Fri, 4 Feb 2022 19:18:01 +0000 (14:18 -0500)]
[wasm] Some cleanup of wasm jobs in runtime-extra-platforms (#64766)

* [wasm] Remove WBT from extra-platforms, as it runs in runtime, and runtime-staging

* [wasm] Run library tests on NodeJS for windows too

.. in `runtime-extra-platforms`.

* [wasm] runtime-extra-platforms: always run the helix step

2 years agomake sure failed SSL does not impact other sessions (#64256)
Tomas Weinfurt [Fri, 4 Feb 2022 18:52:04 +0000 (10:52 -0800)]
make sure failed SSL does not impact other sessions (#64256)

* make sure failed SSL does not imapct other sessions

* move innerError

* feedback from review

* remove try

* feedback from review

2 years agoImprove perf of Enumerable.Sum/Average/Max/Min for arrays and lists (#64624)
Stephen Toub [Fri, 4 Feb 2022 18:49:34 +0000 (13:49 -0500)]
Improve perf of Enumerable.Sum/Average/Max/Min for arrays and lists (#64624)

* Improve perf of Enumerable.Sum/Average/Max/Min for arrays and lists

It's very common to use these terminal functions for quick stats on arrays and lists of values.  Just the overhead of enumerating as an enumerable (involving multiple interface dispatch) per iteration is significant, and it's much faster to directly enumerate the contents of the array or the list.  In some cases, we can further use vectorization to speed up the processing.

This change:
- Adds a helper that does a fast check to see if it can extract a span from an enumerable that's actually an array or a list.  It could be augmented to detect other interesting types, but `T[]` and `List<T>` are the most relevant from the data I've seen, and we can fairly quickly do type checks to get the most benefit for a small amount of cost.
- Uses that helper in the int/long/float/double/decimal overloads of Sum/Average/Min/Max to add a span-based path.
- Vectorizes Sum for float and double
- Vectorizes Average for int, float, and double (the latter two via use of Sum)

* Address PR feedback

2 years agoHandle ((IAsyncResult)task).AsyncWaitHandle.Dispose better in task completion (#64627)
Stephen Toub [Fri, 4 Feb 2022 18:48:28 +0000 (13:48 -0500)]
Handle ((IAsyncResult)task).AsyncWaitHandle.Dispose better in task completion (#64627)

Task's IAsyncResult.AsyncWaitHandle implementation lazily creates a ManualResetEventSlim, which is then set as part of the Task completing.  That AsyncWaitHandle is exposed publicly out of the surface area.  If code (arguably erroneously) Dispose's of that WaitHandle before the Task has completed, the task's completion routine will incur an ObjectDisposedException, which will propagate out and potentially disrupt caller logic or even crash the process if allowed to propagate on a thread without user code to catch it.

This just adds a catch (ObjectDisposedException) block to eat such an exception in order to make the system more reliable in the face of such spooky action at a distance.

2 years agoTrack local var ranges for "interfering writes" LIR check (#64804)
Jakob Botsch Nielsen [Fri, 4 Feb 2022 18:00:25 +0000 (19:00 +0100)]
Track local var ranges for "interfering writes" LIR check (#64804)

For LIR we verify that we can really consider locals to be used at their
user by having a checker that looks for interfering stores to the same
locals. However, in some cases we may have "interfering"
GT_LCL_FLD/GT_STORE_LCL_FLD, in the sense that they work on the same
local but on a disjoint range of bytes. Add support to validate this.

This fixes #57919 which made the fuzzer jobs very noisy and made it easy
to miss actual new examples (e.g. #63720 was just merged even though
there were real examples found there).

Fix #57919

2 years ago[wasm] pass ExitStatus when calling quit_ (#64734)
Pavel Savara [Fri, 4 Feb 2022 17:42:30 +0000 (18:42 +0100)]
[wasm] pass ExitStatus when calling quit_ (#64734)

* pass ExitStatus when calling quit_
* set noExitRuntime
* fix double throw
* enable 64727 tests

2 years agoFix outerloop AcceptAsync_WithTooSmallReceiveBuffer_Failure test (#64758)
Stephen Toub [Fri, 4 Feb 2022 16:18:14 +0000 (11:18 -0500)]
Fix outerloop AcceptAsync_WithTooSmallReceiveBuffer_Failure test (#64758)

* Fix outerloop AcceptAsync_WithTooSmallReceiveBuffer_Failure test

* Remove [Outerloop] per PR feedback

2 years agomono_get_generic_info_from_stack_frame fix for default interface methods (#64566)
Bill Holmes [Fri, 4 Feb 2022 15:19:13 +0000 (10:19 -0500)]
mono_get_generic_info_from_stack_frame fix for default interface methods (#64566)

The context is a MonoMethodRuntimeGenericContext when the method is a
default interface method.

Also re-enable broken DIM tests.

Fixes dotnet/runtime #62334

2 years agoSplit out clr.tools unit tests (#64788)
Michal Strehovský [Fri, 4 Feb 2022 08:03:09 +0000 (17:03 +0900)]
Split out clr.tools unit tests (#64788)

Don't even build them as part of the clr subset, only on demand.

2 years ago[wasm] Disable failing tests (#64759)
Ankit Jain [Fri, 4 Feb 2022 06:26:40 +0000 (01:26 -0500)]
[wasm] Disable failing tests (#64759)

* [wasm][aot] Disable failing tests

`Microsoft.Extensions.HostFactoryResolver.Tests`: https://github.com/dotnet/runtime/issues/64724
`Microsoft.Extensions.Logging.Tests`: https://github.com/dotnet/runtime/issues/64725

* [wasm][aot] Disable `System.Text.Json.SourceGeneration.Roslyn3.11.Unit.Tests`

.. on linux.

Fixes https://github.com/dotnet/runtime/issues/64762 .
Real issue being tracked in https://github.com/dotnet/runtime/issues/61339

* disable failing nodejs samples

* [wasm] Disable more failing tests

System.Linq.Tests: https://github.com/dotnet/runtime/issues/64774
System.Text.Json.Tests: https://github.com/dotnet/runtime/issues/64775

* Disable System.Text.RegularExpressions.Tests due to issue#64769

2 years agoExpose Comment in ZipArchive and ZipArchiveEntry (#59442)
Carlos Sanchez [Fri, 4 Feb 2022 03:35:38 +0000 (19:35 -0800)]
Expose Comment in ZipArchive and ZipArchiveEntry (#59442)

Co-authored-by: Adam Sitnik <adam.sitnik@gmail.com>
2 years agofix some test for FreeBSD (#64426)
Tomas Weinfurt [Fri, 4 Feb 2022 01:40:45 +0000 (17:40 -0800)]
fix some test for FreeBSD (#64426)

* fix some test for FreeBSD

* remove changes in IPGlobalPropertiesTest

* disable AddLongHeader_DoesNotThrow

* update description for skip

2 years agoFix issue in r2rdump where conflicting generic instantiations can cause the r2rdump...
David Wrighton [Fri, 4 Feb 2022 00:56:51 +0000 (16:56 -0800)]
Fix issue in r2rdump where conflicting generic instantiations can cause the r2rdump process to fail (#64772)

- This fix ignores the problem, and will produce somewhat wrong results when looking at the PGO data of an R2R binary, but it will at least permit the R2R file to be looked at

Fixes #64291

2 years agoJIT: simple forward substitution pass (#63720)
Andy Ayers [Fri, 4 Feb 2022 00:45:07 +0000 (16:45 -0800)]
JIT: simple forward substitution pass (#63720)

Extend ref counting done by local morph so that we can determine
single-def single-use locals.

Add a phase that runs just after local morph that will attempt to
forward single-def single-use local defs to uses when they are in
adjacent statements.

Fix or work around issues uncovered elsewhere:
* `gtFoldExprCompare` might fold "identical" volatile subtrees
* `fgGetStubAddrArg` cannot handle complex trees
* some simd/hw operations can lose struct handles
* some calls cannot handle struct local args
* morph expects args not to interfere
* fix arm; don't forward sub no return calls
* update debuginfo test (we may want to revisit this)
* handle subbing past normalize on store assignment
* clean up nullcheck of new helper

Addresses #6973 and related issues. Still sorting through exactly
which ones are fixed, so list below may need revising.

Fixes #48605.
Fixes #51599.
Fixes #55472.

Improves some but not all cases in #12280 and #62064.

Does not fix #33002, #47082, or #63116; these require handling multiple
uses or bypassing statements.

2 years agoMitigate #60154 (#63357)
Egor Chesakov [Thu, 3 Feb 2022 22:14:29 +0000 (14:14 -0800)]
Mitigate #60154 (#63357)

Disable intrinsics tests that throw NotSupportedPlatformException on the corresponding platforms:

* Add JIT/HardwareIntrinsics/** to ExcludeList on Arm32 in src/tests/issues.targets

* Add JIT/HardwareIntrinsics/General/Vector256/** to ExcludeList on Arm64 in src/tests/issues.targets

* Add JIT/HardwareIntrinsics/X86/** to ExcludeList on Arm64 in src/tests/issues.targets

* Add JIT/HardwareIntrinsics/General/Vector64/** to ExcludeList on X64 in src/tests/issues.targets

* Add JIT/HardwareIntrinsics/Arm/** to ExcludeList on X64 in src/tests/issues.targets

* Add JIT/HardwareIntrinsics/General/Vector64/** to ExcludeList on X86 in src/tests/issues.targets

* Add JIT/HardwareIntrinsics/Arm/** to ExcludeList on X86 in src/tests/issues.targets

2 years ago[wasm][debugger] Fix some racy tests (#64712)
Ankit Jain [Thu, 3 Feb 2022 21:39:47 +0000 (16:39 -0500)]
[wasm][debugger] Fix some racy tests (#64712)

* re-enable some tests

* [wasm][debugger] Fix racy test - ExceptionTestAllWithReload

This test is set up to pause on all exceptions. So, it has some code to
hit `Debugger.resume` 100 times, hoping to skip all the non-user code
exceptions. But this can sometimes not be enough, and you might have
more exceptions which breaks rest of the test.

Instead, we try to resume till we won't get paused for a period of
10secs. And after that, we can call the user code, and execute rest of
the test.

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

* [wasm][debugger] Fix racy tests that use late loaded assemblies

`DebuggerTests.MiscTests.DebugLazyLoadedAssemblyWithEmbeddedPdb`
`DebuggerTests.BreakpointTests.BreakpointInAssemblyUsingTypeFromAnotherAssembly_BothDynamicallyLoaded`

These tests load assemblies dynamically, and depend on breakpoints in
those assemblies being resolved. But the tests don't wait for that to
happen. So, they can some times fail when the managed method is invoked
before the breakpoint being resolved.

Fixes https://github.com/dotnet/runtime/issues/62823
Fixes https://github.com/dotnet/runtime/issues/62667

2 years agoDeduplicate class names under JIT/Methodical/cctor (#64710)
Tomáš Rylek [Thu, 3 Feb 2022 21:35:34 +0000 (22:35 +0100)]
Deduplicate class names under JIT/Methodical/cctor (#64710)

In this particular class of tests deduplicating tests via
namespace names is not useful as they use common modules
expecting the namespaces to match.

Thanks

Tomas

2 years agoUse ordinal comparison for known header values (#64702)
Miha Zupan [Thu, 3 Feb 2022 21:33:02 +0000 (13:33 -0800)]
Use ordinal comparison for known header values (#64702)

* Use ordinal comparison for known header values

* Match 'text/html; charset=UTF-8' again

2 years agoDeduplicate single-assembly vs. multi-assembly stringintern tests (#64709)
Tomáš Rylek [Thu, 3 Feb 2022 21:32:36 +0000 (22:32 +0100)]
Deduplicate single-assembly vs. multi-assembly stringintern tests (#64709)

This is an interesting special example of deduplication where each of the tests (Test1, Test2, Test4)
runs alternatively in a single-assembly or multiple-assembly mode (compiled together with the
dependent source files teststr.cs / testgenstr.cs vs. using them via dependent projects
teststr.csproj / testgenstr.csproj).

As the actual content of the test source code is the same in both cases and just Roslyn-compiles
slightly differently based on the project structure, I have come to the conclusion that in this particular
case the least amount of churn can be achieved via a preprocessor define that is used to variate the
class name in the main test source files.

The tests were originally building in three flavors - "in-assembly", "cross-assembly" and "cross-module".
I have deleted the "cross-module" variants as I believe that they are identical to "cross-assembly".

Thanks

Tomas

2 years agoMove explicit coverage entry points into separate public classes (#64708)
Tomáš Rylek [Thu, 3 Feb 2022 21:31:34 +0000 (22:31 +0100)]
Move explicit coverage entry points into separate public classes (#64708)

Previously I refactored these tests by moving the entrypoints from
the shared body_xxx source files into the test-specific expl_*
and seq_* source files but I didn't realize I'd also need to put
them into new uniquely named classes as we clearly cannot distinguish
30 methods named AA.TestEntrypoint().

Thanks

Tomas

2 years agoClean up remaining tests under JIT/Methodical using Environment.Exit (#64706)
Tomáš Rylek [Thu, 3 Feb 2022 21:28:38 +0000 (22:28 +0100)]
Clean up remaining tests under JIT/Methodical using Environment.Exit (#64706)

2 years agoUpdate mac Helix queues (#64565)
Andy Gocke [Thu, 3 Feb 2022 20:57:20 +0000 (12:57 -0800)]
Update mac Helix queues (#64565)

* Update mac Helix queues

* Adjust test to account for Mac RID changes

* Disable DllImport probing test on Mac

* Disable profiler.multiple on Mac

2 years agoRefactor fgValueNumberBlockAssignment (#64110)
SingleAccretion [Thu, 3 Feb 2022 20:56:38 +0000 (23:56 +0300)]
Refactor fgValueNumberBlockAssignment (#64110)

"fgValueNumberBlockAssignment" had a very interesting oddity:
it re-VNs the source tree of the assignment. This is unnecessary,
and is in fact a pessimization, as it means we will fail to VN
assignments from sources it does not understand. This change
fixes that, bringing along some positive diffs from numbering
stores from field indirections.

"fgValueNumberBlockAssignment" also needs to maintaint the
invariant that a location's VN will always match its type.
It was failing to do that in cases where the assignment's
source was not local. This change fixes that.

Finally, this change unifies the code common to numbering
"CopyBlk" and "InitBlk" cases. There is no need for them to
be different.

2 years agoBump up visibility for several helper types under JIT/Methodical (#64716)
Tomáš Rylek [Thu, 3 Feb 2022 19:51:14 +0000 (20:51 +0100)]
Bump up visibility for several helper types under JIT/Methodical (#64716)

This change converts a small number of special tests to use the
[Fact] style. These tests are atypical in using various internal
types declared in their source code as fields in the test class;
bumping up test class visibility to public requires transitive
modifications to visibility of the helper types.

Thanks

Tomas

2 years agoPass IV through cipher resets for OpenSSL and Android
Kevin Jones [Thu, 3 Feb 2022 19:13:55 +0000 (14:13 -0500)]
Pass IV through cipher resets for OpenSSL and Android

2 years agoValidate behavior of ProcessInfo command before and after suspension point (#63382)
John Salem [Thu, 3 Feb 2022 18:12:18 +0000 (10:12 -0800)]
Validate behavior of ProcessInfo command before and after suspension point (#63382)

This only applies to CoreCLR Unix processes.

2 years agoLogging Source Generator - Adds support to `@` signed prefixed parameters (#64663)
Maryam Ariyan [Thu, 3 Feb 2022 17:58:47 +0000 (09:58 -0800)]
Logging Source Generator - Adds support to `@` signed prefixed parameters (#64663)

* Adds support to `@` signed prefixed parameters

Fixes #60968

* Move repetitive logic to a new property

* Remove NeedsAtSign

2 years agoUpdate dependencies from https://github.com/dotnet/linker build 20220131.3 (#64615)
dotnet-maestro[bot] [Thu, 3 Feb 2022 17:52:28 +0000 (18:52 +0100)]
Update dependencies from https://github.com/dotnet/linker build 20220131.3 (#64615)

Microsoft.NET.ILLink.Tasks
 From Version 7.0.100-1.22078.1 -> To Version 7.0.100-1.22081.3

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
2 years ago[main] Update dependencies from dotnet/icu dotnet/arcade dotnet/emsdk dotnet/roslyn...
dotnet-maestro[bot] [Thu, 3 Feb 2022 17:48:21 +0000 (18:48 +0100)]
[main] Update dependencies from dotnet/icu dotnet/arcade dotnet/emsdk dotnet/roslyn-analyzers (#64678)

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

Microsoft.NETCore.Runtime.ICU.Transport
 From Version 7.0.0-preview.2.22081.1 -> To Version 7.0.0-preview.2.22101.1

* Update dependencies from https://github.com/dotnet/roslyn-analyzers build 20220201.5

Microsoft.CodeAnalysis.NetAnalyzers
 From Version 7.0.0-preview1.22081.3 -> To Version 7.0.0-preview1.22101.5

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

Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.Build.Tasks.Templating , 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.XUnitExtensions , Microsoft.DotNet.GenAPI , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.GenFacades , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.Helix.Sdk
 From Version 2.5.1-beta.22075.6 -> To Version 2.5.1-beta.22080.1

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

Microsoft.NET.Workload.Emscripten.Manifest-7.0.100
 From Version 7.0.0-alpha.2.22078.1 -> To Version 7.0.0-alpha.2.22102.3

* Update dependencies from https://github.com/dotnet/roslyn-analyzers build 20220202.1

Microsoft.CodeAnalysis.NetAnalyzers
 From Version 7.0.0-preview1.22081.3 -> To Version 7.0.0-preview1.22102.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
2 years agoDisable some library tests on ARMv6 architecture due to failures (#64733)
Maxim Lipnin [Thu, 3 Feb 2022 17:13:52 +0000 (20:13 +0300)]
Disable some library tests on ARMv6 architecture due to failures (#64733)

Related issues:

[mono][arm6][linux] System.Net.Ping.Functional.Tests failed #64673
[mono][arm6][linux] System.Net.Tests.ServicePointManagerTest.FindServicePoint_Collectible failed. #64674
[mono][arm6][linux] System.Reflection.Tests.ModuleTests.GetField failed #64675

Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
2 years agoThrow PNSE if insufficient privileges when custom Ping payload was specified (#64625)
Radek Zikmund [Thu, 3 Feb 2022 16:53:52 +0000 (17:53 +0100)]
Throw PNSE if insufficient privileges when custom Ping payload was specified (#64625)

2 years agoUpdate Maui Workload Install Process for Perf (#64692)
Parker Bibus [Thu, 3 Feb 2022 16:34:33 +0000 (10:34 -0600)]
Update Maui Workload Install Process for Perf  (#64692)

*  Add dotnet install and run to test if new dotnet version can be installed similar to how it is done in the Maui repo.

* Download and use local dotnet version.

* Use updated dotnet for more of the pipeline.

* Test with made runtime packs and and add ios arm pack substitution.

* Try building instead of publishing.

* Reenable everything for full test run.

* Package name now seems to default to lower case, at least for maui.

2 years agoWorkaround permission issue on Android API30 emulators when pulling test results...
Alexander Köplinger [Thu, 3 Feb 2022 15:52:54 +0000 (16:52 +0100)]
Workaround permission issue on Android API30 emulators when pulling test results (#64744)

See https://github.com/dotnet/xharness/issues/385, we use the cache dir instead on API 30.

Also add `a:exported="true"` which is required when targetting a newer minSdkVersion.

2 years agoPrefer "mov reg, wzr" over "mov reg, #0" (#64740)
Egor Bogatov [Thu, 3 Feb 2022 15:41:01 +0000 (18:41 +0300)]
Prefer "mov reg, wzr" over "mov reg, #0" (#64740)

2 years agoConsume renamed TargetFramework package (#64670)
Viktor Hofer [Thu, 3 Feb 2022 14:32:50 +0000 (15:32 +0100)]
Consume renamed TargetFramework package (#64670)

* Consume renamed TargetFramework package

* Rename CoreLibs generator parent dir

Projects under src/libraries/ which are located under a "gen" directory
are automatically treated as source generator projects. Because the
CoreLib generator was placed under a different directory "generators",
it was treated as a RuntimeAssembly which gets binplaced into the
runtime path. The runtime tests then take the assemblies from there and
copy them into their CORE_ROOT directory.

Renaming the CoreLib source generators parent directory fixes that so
that it is treated as source generator and it brings consistency into
src/libraries.

2 years ago#55822 Disable CanRecurseFrom root for andoid (#64682)
Meri Khamoyan [Thu, 3 Feb 2022 13:33:37 +0000 (17:33 +0400)]
#55822 Disable CanRecurseFrom root for andoid (#64682)

2 years agoJIT: Import string.Empty as "" (#64530)
Egor Bogatov [Thu, 3 Feb 2022 12:07:51 +0000 (15:07 +0300)]
JIT: Import string.Empty as "" (#64530)

Co-authored-by: Jakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>
2 years agoFix test build command in docs/workflow/building/coreclr/nativeaot.md (#64690)
Michał Zegan [Thu, 3 Feb 2022 11:35:43 +0000 (12:35 +0100)]
Fix test build command in docs/workflow/building/coreclr/nativeaot.md (#64690)

The command `src/tests/build[.cmd|.sh] nativeaot [Debug|Release] tree nativeaot` seems not to work as expected.
Namely it seems to build not only the nativeaot smoke tests.
Fixed to be `src\tests\build[.cmd|.sh] -nativeaot [Debug|Release] -tree:nativeaot`

2 years agoCheck for multicast delegate before comparing invocation lists (#64729)
Michal Strehovský [Thu, 3 Feb 2022 10:52:34 +0000 (19:52 +0900)]
Check for multicast delegate before comparing invocation lists (#64729)

Fixes issue discovered in https://github.com/dotnet/runtime/pull/64404#discussion_r797220167.

The existing code worked but there is an off chance that a different kind of delegate (not multicast) could be storing a number in `m_extraFunctionPointerOrData` that matches the length of this delegate (length is stored in `m_extraFunctionPointerOrData`), making us fail with `InvalidCast`. We should only compare invocation lists once we know both delegates are multicast.

2 years agoAdd `--jitpath` parameter to ILC (#64731)
Michal Strehovský [Thu, 3 Feb 2022 10:50:38 +0000 (19:50 +0900)]
Add `--jitpath` parameter to ILC (#64731)

Matches crossgen2.

2 years agofixup more helix pools (#64718)
Larry Ewing [Thu, 3 Feb 2022 07:42:52 +0000 (01:42 -0600)]
fixup more helix pools (#64718)