platform/upstream/dotnet/runtime.git
22 months agoAdd reflection path for ActivatorUtilities.CreateFactory (#81262)
James Newton-King [Mon, 30 Jan 2023 08:57:02 +0000 (16:57 +0800)]
Add reflection path for ActivatorUtilities.CreateFactory (#81262)

Co-authored-by: Stephen Toub <stoub@microsoft.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Fixes https://github.com/dotnet/runtime/issues/81258

22 months agoChange Nullability annotation on `ISelectionService.PrimarySelection` (#81254)
Lachlan Ennis [Mon, 30 Jan 2023 03:23:56 +0000 (13:23 +1000)]
Change Nullability annotation on `ISelectionService.PrimarySelection` (#81254)

* Change Nullability on ISelectionService.PrimarySelection

* Add nullability to ref ISelectionService interface

22 months agoDisable function pointer test for crossgen due to a bug (#81286)
Fan Yang [Mon, 30 Jan 2023 01:22:46 +0000 (20:22 -0500)]
Disable function pointer test for crossgen due to a bug (#81286)

22 months agoEliminate a bounds check in `NumberBuffer` (#81039)
xtqqczze [Mon, 30 Jan 2023 01:22:17 +0000 (01:22 +0000)]
Eliminate a bounds check in `NumberBuffer` (#81039)

* Eliminate a bounds check in `NumberBuffer`

* Add AggressiveInlining

22 months ago[main] Update dependencies from dotnet/icu dotnet/roslyn-analyzers (#81265)
dotnet-maestro[bot] [Mon, 30 Jan 2023 01:16:51 +0000 (20:16 -0500)]
[main] Update dependencies from dotnet/icu dotnet/roslyn-analyzers (#81265)

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

Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers
 From Version 3.3.5-beta1.23076.1 -> To Version 3.3.5-beta1.23076.2

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

Microsoft.NETCore.Runtime.ICU.Transport
 From Version 8.0.0-alpha.1.23076.1 -> To Version 8.0.0-alpha.1.23077.1

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
22 months agoFixing a comment attached to DEFAULT_UNROLL_LOOP_MAX_ITERATION_COUNT (#81300)
Tanner Gooding [Sun, 29 Jan 2023 17:12:48 +0000 (09:12 -0800)]
Fixing a comment attached to DEFAULT_UNROLL_LOOP_MAX_ITERATION_COUNT (#81300)

* Fixing a comment attached to DEFAULT_UNROLL_LOOP_MAX_ITERATION_COUNT

* Update src/coreclr/jit/compiler.h

Co-authored-by: Bruce Forstall <brucefo@microsoft.com>
---------

Co-authored-by: Bruce Forstall <brucefo@microsoft.com>
22 months agoUse IndexOf in RsaPaddingProcessor.FillNonZeroBytes (#81327)
Stephen Toub [Sun, 29 Jan 2023 16:03:01 +0000 (11:03 -0500)]
Use IndexOf in RsaPaddingProcessor.FillNonZeroBytes (#81327)

22 months agoPublish `UpDownCounter` and `ObservableUpDownCounter` Events for System.Diagnostics...
kkeirstead [Sun, 29 Jan 2023 00:56:15 +0000 (16:56 -0800)]
Publish `UpDownCounter` and `ObservableUpDownCounter` Events for System.Diagnostics.Metrics (#81041)

Add support for publishing UpDownCounter (and Observable...) - also added in the missing testing for this.

22 months ago[wasm] Update emsdk dependency to `8.0.0-alpha.1.23077.4` (#81312)
Ankit Jain [Sat, 28 Jan 2023 20:08:27 +0000 (15:08 -0500)]
[wasm] Update emsdk dependency to `8.0.0-alpha.1.23077.4` (#81312)

Added this with `darc add-dependency` this time, instead of a manual
edit.

22 months agoFix use-after-free in EventPipe (#81135)
Jeremy Koritzinsky [Sat, 28 Jan 2023 19:32:52 +0000 (11:32 -0800)]
Fix use-after-free in EventPipe (#81135)

Co-authored-by: Aaron Robinson <arobins@microsoft.com>
Co-authored-by: Elinor Fung <elfung@microsoft.com>
22 months agoRemove `printf` implementation (#81243)
Aaron Robinson [Sat, 28 Jan 2023 16:43:56 +0000 (08:43 -0800)]
Remove `printf` implementation (#81243)

* Remove PAL_printf and PAL_vprintf

Replace implementation of file related printfs using the
platform implementation (PAL_fprintf and PAL_vfprintf).

Remove tests for PAL_printf, PAL_vprintf, PAL_fprintf and
PAL_vfprintf since they are all now supplied by the platform.

* Remove underlying printf impl

Left _vsnprintf_s tests to ensure the _TRUNCATE
logic is validated.

22 months agoPropagate cancellation tokens to TrySetCanceled in Dataflow (#80978)
Stephen Toub [Sat, 28 Jan 2023 16:04:49 +0000 (11:04 -0500)]
Propagate cancellation tokens to TrySetCanceled in Dataflow (#80978)

* Propagate cancellation tokens to TrySetCanceled in Dataflow

When the System.Threading.Tasks.Dataflow library was originally written, CancellationTokenSource's TrySetCanceled didn't have an overload that allowed passing in the CancellationToken that was the cause of the cancellation. Now it does, and we no longer build for target platforms that lack the needed overload.  Thus we can update the library to propagate it everywhere that's relevant.  In some cases, to do this well we do need to rely on a newer CancellationToken.Register overload that accepts a delegate which accepts a token, so there's a little bit of ifdef'ing involved still.

While doing this, I also took the opportunity to sprinkle some `static`s onto lambdas, since I was already doing so for some lambdas as part of this fix.

* Fix pipelines handling of cancellation token

Flush operations were synchronously throwing an exception if cancellation was requested prior to the operation.  Cancellation exceptions should always be propagated out through the returned task.

* Fix pre-cancellation in QuicStream.WriteAsync

Cancellation exceptions should flow out through the returned task, not synchronously.

22 months ago[wasm][mt] Don't call Module.removeRunDependency in workers (#81311)
Aleksey Kliger (λgeek) [Sat, 28 Jan 2023 13:22:52 +0000 (08:22 -0500)]
[wasm][mt] Don't call Module.removeRunDependency in workers (#81311)

Fixes a sporadic hang that depends on the order in which webworkers get initialized.

The way `removeRunDependency` works is that it decrements a counter (incremented by `addRunDependency`) and when the counter hits 0 it runs a callback that runs `run`.

The problem is that on workers there are no other dependencies, so `removeRunDependency("wasm_pre_init_essential")` ticks the counter down to 0 and calls `run`.

The second problem is that `run` on a worker short-circuits most of the logic and just calls `readyPromiseResolve`, `initRuntime` and `postMessage` and returns.

So the worker posts a message back to the main thread that it is loaded.

Then the main body of dotnet.js in the worker calls `run` a second time. And we send a second `postMessage`.

So the main thread receives 2 "loaded" message for each worker in the pool.

That messes up the counter in `instantiateWasmPThreadWorkerPool` which is waiting for every fresh worker to send just 1 message before allowing the main thread to continue.

As a result, by the time the main thread runs some user code, only half the workers have loaded.

Depending on the timing, that could mean that if the main thread attempts to start a new pthread, that pthread might be in a worker that hasn't loaded the runtime yet.  In that case, the pthread start function doesn't get called, and the main thread hangs in Mono's `create_thread()` helper waiting for the `start_info->registered` semaphore that will never be posted.

22 months ago[mono][wasm] Avoid passing the icall name/c function name to mono_register_jit_icall_...
Zoltan Varga [Sat, 28 Jan 2023 09:54:07 +0000 (04:54 -0500)]
[mono][wasm] Avoid passing the icall name/c function name to mono_register_jit_icall_info () on wasm. (#81293)

It creates unused string literals.

22 months ago[mono] Clean up StackTrace/StackFrame icalls. (#81303)
Zoltan Varga [Sat, 28 Jan 2023 09:53:46 +0000 (04:53 -0500)]
[mono] Clean up StackTrace/StackFrame icalls. (#81303)

* Register them normally in icall-def.h instead of calling
  mono_add_internal_call ().
* Remove unused Mono.Runtime::mono_runtime_install_handlers
  icall registration.
* Use ObjectHandleOnStack to pass/return objects.
* Move some of the logic to icall.c.

22 months ago[mono] Use mono_is_sre functions instead of checking class names in more places....
Zoltan Varga [Sat, 28 Jan 2023 04:01:39 +0000 (23:01 -0500)]
[mono] Use mono_is_sre functions instead of checking class names in more places. (#81305)

22 months agoFix the error condition for objcopy (#81304)
Adeel Mujahid [Sat, 28 Jan 2023 03:14:08 +0000 (05:14 +0200)]
Fix the error condition for objcopy (#81304)

22 months ago[workloads] Add Current to the name of the workload manifest (#80401)
Steve Pfister [Sat, 28 Jan 2023 02:32:42 +0000 (21:32 -0500)]
[workloads] Add Current to the name of the workload manifest (#80401)

https://github.com/dotnet/sdk/commit/f5cb7e3c3eb631d13a1bdc6033f399cf8a1ceadb introduced a change that would make `microsoft.net.workload.mono.toolchain` an outdated id in order to work around manifest errors when older previews of the .NET 7 SDK were installed. The unfortunate side effect of this change meant the name of the runtime manifest needs to be changed.

On the main branch, the manifest id will now contain current in the name for the .net version being developed.

Co-authored-by: Ankit Jain <radical@gmail.com>
22 months agoForbid creation of non-faulting null-check nodes. (#77078)
Julie Lee [Sat, 28 Jan 2023 02:02:21 +0000 (18:02 -0800)]
Forbid creation of non-faulting null-check nodes. (#77078)

* Forbid creation of non-faulting null-check nodes.

* Skip null check if op1 cannot be null.

* x86 bug fix for Skip gtChangeOperToNullCheck if it cannot be null.

* Fix Arm64 AVE: Do not lower indir when NOP.

* formatting fix.

* Arm64 regression bug fix that removes const bool for a variable.

* Preserve const and shorten expression.

* Fix format.

* Addressed code review feedback

* Forbid creation of non-faulting nullcheck node: Addressed feedback

* Forbid creation of non-faulting null-check nodes: Remove duplicate codes that was supposed to be deleted.

22 months ago[mono][jit] Improve handling of the ldtoken+ltoken+Type::op_Equal optimization. ...
Zoltan Varga [Sat, 28 Jan 2023 01:41:56 +0000 (20:41 -0500)]
[mono][jit] Improve handling of the ldtoken+ltoken+Type::op_Equal optimization. (#81277)

Previously, only comparisons with gshared types were handled, but if gsharing
is disabled, its possible to run into cases where both ldtoken calls product
a concrete type.

22 months agoFix x86 clrgc loading (#81176)
Andrew Au [Fri, 27 Jan 2023 23:43:56 +0000 (15:43 -0800)]
Fix x86 clrgc loading (#81176)

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
22 months agoReduce the size of HttpRequestMessage and HttpRequestHeaders (#81251)
Miha Zupan [Fri, 27 Jan 2023 23:04:39 +0000 (15:04 -0800)]
Reduce the size of HttpRequestMessage and HttpRequestHeaders (#81251)

* Reduce the size of HttpRequestMessage and HttpRequestHeaders

* Assert that the request message can't transition from Disposed to non-Disposed

22 months ago[wasm] Pin the sdk version to avoid a regression (#81301)
Ankit Jain [Fri, 27 Jan 2023 22:56:38 +0000 (17:56 -0500)]
[wasm] Pin the sdk version to avoid a regression (#81301)

.. in manifest ordering in `IncludedWorkloadManifests.txt` caused by
https://github.com/dotnet/installer/pull/15346/commits/717f422202f5fb3494e8f79f96e3a27e83fc72c0
, which the workload causing relinking to break in WBT.

The version with the bug is : 8.0.100-alpha.1.23077.4

22 months agoRevert "Fix generic parameter data flow validation in NativeAOT (#80956)" (#81259)
Michal Strehovský [Fri, 27 Jan 2023 21:55:33 +0000 (06:55 +0900)]
Revert "Fix generic parameter data flow validation in NativeAOT (#80956)" (#81259)

This reverts commit aa5e31310ef892995e7832f30acf8d78bfd0f5c2.

22 months ago[browser][MT] conditional revert of wasm imports optimization (#81275)
Pavel Savara [Fri, 27 Jan 2023 21:32:00 +0000 (22:32 +0100)]
[browser][MT] conditional revert of wasm imports optimization (#81275)

* conditional revert of https://github.com/dotnet/runtime/pull/79466

* feedback

22 months agoJIT: Switch tailcall implicit byref optimization to use last use information (#81033)
Jakob Botsch Nielsen [Fri, 27 Jan 2023 20:52:04 +0000 (21:52 +0100)]
JIT: Switch tailcall implicit byref optimization to use last use information (#81033)

The last use information is more general in most cases (for example, the
old logic cannot allow the optimization when there are previous field
writes to the implicit byref). In addition the old logic can interact
with the new last-use copy elision optimization in an incorrect way.

Fix #81019

22 months agoChange the default loop unroll limit to 4 (#80353)
Tanner Gooding [Fri, 27 Jan 2023 20:46:26 +0000 (12:46 -0800)]
Change the default loop unroll limit to 4 (#80353)

* Change the default loop unroll limit to 4

* Remove verification testing for two complex tests involving both loop unrolling and large amounts of dead code elimination

22 months agoEnsure various scalar cross platform helper APIs are handled directly as intrinsic...
Tanner Gooding [Fri, 27 Jan 2023 20:46:04 +0000 (12:46 -0800)]
Ensure various scalar cross platform helper APIs are handled directly as intrinsic (#80789)

* Ensure various scalar cross platform helper APIs are handled directly as intrinsic

* Small refactoring to lookupNamedIntrinsic and impIntrinsic to improve TP

22 months agoMake System.Reflection.Emit public types abstract (#78544)
Buyaa Namnan [Fri, 27 Jan 2023 20:35:56 +0000 (12:35 -0800)]
Make System.Reflection.Emit public types abstract (#78544)

* Add abstract AssemblyBuilder

* Create managed RuntimeAssemblyBuilder

* Add RuntimeAssemblyBuilder to the build

* Boilerplate for RuntimeAssemblyBuilder

* Emit Assembly record

* Fixups after rebase

* Add temporary ReflectionEmitLoadContext

* Factor out RuntimeModuleBuilder

* Abstract TypeBuilder and EventBuilder

* Refactor PropertyBuilder

* Refactor EnumBuilder

* Refactor FieldBuilder

* Refactor ConstructorBuilder and MethodBuilder

* Move suppressions into the common file

---------

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
22 months agoTarget lower glibc for Linux arm64 (#80939)
Sven Boemer [Fri, 27 Jan 2023 20:31:02 +0000 (12:31 -0800)]
Target lower glibc for Linux arm64 (#80939)

This uses new cross-build images that target Ubuntu 16.04,
lowering the glibc requirements. The initial change is only for
Linux arm64, to match what we plan to do in .NET 7. The 8.0
change will let us validate the PGO instrumentation, which
happens in official builds, but not in PR jobs.

22 months agoAdd MemoryExtensions.Count (#80662)
Sandro Bollhalder [Fri, 27 Jan 2023 20:24:05 +0000 (21:24 +0100)]
Add MemoryExtensions.Count (#80662)

* Add MemoryExtensions.Count

* add test cases

* fix implementation

* fix review comments part I

* more tests

* return 0 if value is Empty

* Address PR feedback

---------

Co-authored-by: Stephen Toub <stoub@microsoft.com>
22 months agoMake sure we specify arguments only when the test ask for it (#80947)
Andrew Au [Fri, 27 Jan 2023 20:10:51 +0000 (12:10 -0800)]
Make sure we specify arguments only when the test ask for it (#80947)

22 months agoAvoid using a null heap to decommit the mark array (#80640)
Andrew Au [Fri, 27 Jan 2023 20:06:58 +0000 (12:06 -0800)]
Avoid using a null heap to decommit the mark array (#80640)

22 months ago[wasm] Force partial trim mode for browser bench (#81284)
Radek Doulik [Fri, 27 Jan 2023 19:12:54 +0000 (20:12 +0100)]
[wasm] Force partial trim mode for browser bench (#81284)

Before we fix json [de]serialization to work with full trim

22 months agoJIT: update `fgReplaceJumpTarget` to maintain pred lists (#81246)
Andy Ayers [Fri, 27 Jan 2023 19:08:30 +0000 (11:08 -0800)]
JIT: update `fgReplaceJumpTarget` to maintain pred lists (#81246)

This is used some early phases; make it pred list aware.

Contributes to #80193.

22 months agoAvoid allocations in 'Transfer-Encoding: Chunked' check (#81253)
Miha Zupan [Fri, 27 Jan 2023 18:43:06 +0000 (10:43 -0800)]
Avoid allocations in 'Transfer-Encoding: Chunked' check (#81253)

22 months agoUse IndexOf in StringBuilder.Replace(string, string, ...) (#81098)
Stephen Toub [Fri, 27 Jan 2023 18:15:27 +0000 (13:15 -0500)]
Use IndexOf in StringBuilder.Replace(string, string, ...) (#81098)

* Use IndexOf in StringBuilder.Replace

StringBuilder.Replace(string, string, ...) currently walks character-by-character to find the next location of the oldValue.  This change adds the use of MemoryExtensions.IndexOf to search for the oldValue, and only falls back to the character-by-character walk when it nears and needs to account for a chunk boundary.  It also switches to track replacement indices using more stack space and the array pool (via ValueListBuilder) rather than less stack space and array allocations.

* Fix faulty assert

22 months agoUpdate dependencies from https://github.com/dotnet/arcade build 20230126.1 (#81263)
dotnet-maestro[bot] [Fri, 27 Jan 2023 17:45:17 +0000 (11:45 -0600)]
Update dependencies from https://github.com/dotnet/arcade build 20230126.1 (#81263)

Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
 From Version 8.0.0-beta.23075.2 -> To Version 8.0.0-beta.23076.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
22 months agoDisposed change token registration should not raise consumer (#79966)
Pavel Ivanov [Fri, 27 Jan 2023 17:43:20 +0000 (22:43 +0500)]
Disposed change token registration should not raise consumer (#79966)

22 months agoUpdate analyzers.md (#79768)
Youssef Victor [Fri, 27 Jan 2023 15:53:39 +0000 (17:53 +0200)]
Update analyzers.md (#79768)

* Update analyzers.md

* Apply suggestions from code review

* Update analyzers.md

* Apply suggestions from code review

Co-authored-by: Stephen Toub <stoub@microsoft.com>
* Apply suggestions from code review

---------

Co-authored-by: Stephen Toub <stoub@microsoft.com>
22 months agoFixed CA1854 occurrences (#80996)
Miizukii [Fri, 27 Jan 2023 15:51:06 +0000 (16:51 +0100)]
Fixed CA1854 occurrences (#80996)

22 months ago[mono] Re-enable System.Threading.Tasks tests for desktop interp (#81046)
Steve Pfister [Fri, 27 Jan 2023 15:50:14 +0000 (10:50 -0500)]
[mono] Re-enable System.Threading.Tasks tests for desktop interp (#81046)

Co-authored-by: Steve Pfister <steve.pfister@microsoft.com>
22 months agoJIT: consolidate inlining code in fgInline.cpp (#81198)
Andy Ayers [Fri, 27 Jan 2023 15:46:13 +0000 (07:46 -0800)]
JIT: consolidate inlining code in fgInline.cpp (#81198)

When I reorganized and split up the flowgraph.cpp a while back I created
fgInline.cpp to hold all the inlining related methods, but didn't move
the inlining related methods from morph.cpp. Now I am moving them.

22 months ago[NativeAOT] Objective-C exception propagation (#80334)
Austin Wise [Fri, 27 Jan 2023 15:26:52 +0000 (07:26 -0800)]
[NativeAOT] Objective-C exception propagation (#80334)

* [NativeAOT] Objective-C exception interception

* Fix Windows build

* Add back UnwoundReversePInvoke flag after re-initing.

* Switch to preemptive mode before jumping to propagation callback

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
* Fix windows AMD64 offsets.

22 months ago[mono][interp] Reduce redundant moves with calls (#79905)
Vlad Brezae [Fri, 27 Jan 2023 14:26:56 +0000 (16:26 +0200)]
[mono][interp] Reduce redundant moves with calls (#79905)

We were marking INTERP_LOCAL_FLAG_NO_CALL_ARGS for source vars of non calls. With further optimizations, the var could end up being used only for the call but we never unset the flag. Reuse the ref count data, which is kept updated following optimizations, to achieve same thing. If cprop is not run then we always duplicate the args, but this is an unused scenario.

22 months ago[mono][interp] Fix type pushed by mkrefanytype (#81261)
Vlad Brezae [Fri, 27 Jan 2023 13:57:58 +0000 (15:57 +0200)]
[mono][interp] Fix type pushed by mkrefanytype (#81261)

This instruction pushes a RuntimeTypeHandle.

22 months ago[mono][aot] Emit native-to-managed wrappers for [UnmanagedCallersOnly] methods in...
Zoltan Varga [Fri, 27 Jan 2023 13:25:34 +0000 (08:25 -0500)]
[mono][aot] Emit native-to-managed wrappers for [UnmanagedCallersOnly] methods in non-full aot mode as well. (#80918)

22 months agoAdd additional bool-only ToFrozenDictionary/Set overloads (#81256)
Stephen Toub [Fri, 27 Jan 2023 11:36:27 +0000 (06:36 -0500)]
Add additional bool-only ToFrozenDictionary/Set overloads (#81256)

API review decided to include additional overloads to enable only specifying the bool.

22 months agoMono musl support (#76500)
Antoine Martin [Fri, 27 Jan 2023 11:22:27 +0000 (06:22 -0500)]
Mono musl support (#76500)

Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
Fixes https://github.com/dotnet/runtime/issues/76805

22 months agoSkip tests that need RemoteExecutor (#81231)
Šimon Rozsíval [Fri, 27 Jan 2023 10:11:26 +0000 (11:11 +0100)]
Skip tests that need RemoteExecutor (#81231)

22 months agoMake a number of improvements to the System.Text.Json source generator (#81239)
Eirik Tsarpalis [Fri, 27 Jan 2023 09:35:03 +0000 (09:35 +0000)]
Make a number of improvements to the System.Text.Json source generator (#81239)

* Ensure singleton JsonTypeInfo instances are preconfigured using JsonSerializerOptions.

* Fix indentation & whitespace issues in the source generator.

* Fix #76829.

* Fix nullability annotations in GetTypeInfo gen.

* Add clarifying comment.

* Add testing for types without metadata or fast-path generation.

22 months ago[mono][interp] Add @kotlarmilos as code owner (#81209)
Vlad Brezae [Fri, 27 Jan 2023 08:22:39 +0000 (10:22 +0200)]
[mono][interp] Add @kotlarmilos as code owner (#81209)

22 months agoReplace successive "ldr" and "str" instructions with "ldp" and "stp" (#77540)
AndyJGraham [Fri, 27 Jan 2023 08:07:09 +0000 (08:07 +0000)]
Replace successive "ldr" and "str" instructions with "ldp" and "stp" (#77540)

* Replace successive "ldr" and "str" instructions with "ldp" and "stp"

This change serves to address the following four Github tickets:

    1. ARM64: Optimize pair of "ldr reg, [fp]" to ldp #35130
    2. ARM64: Optimize pair of "ldr reg, [reg]" to ldp #35132
    3. ARM64: Optimize pair of "str reg, [reg]" to stp #35133
    4. ARM64: Optimize pair of "str reg, [fp]" to stp  #35134

A technique was employed that involved detecting an optimisation
opportunity as instruction sequences were being generated.
The optimised instruction was then generated on top of the previous
instruction, with no second instruction generated. Thus, there were no
changes to instruction group size at “emission time” and no changes to
jump instructions.

* No longer use a temporary buffer to build the optimized instruction.

* Addressed assorted review comments.

* Now optimizes ascending locations and decending locations with
consecutive STR and LDR instructions.

* Modification to remove last instructions.

* Ongoing improvements to remove previously-emitted instruction
during ldr / str optimization.

* Stopped optimization of consecutive instructions that straddled an instruction group boundary.

* Addressed code change requests in GitHub.

* Various fixes to ldp/stp optimization

Add code to update IP mappings when an instruction is removed.

* Delete unnecessary and incorrect assert

* Diagnostic change only, to confirm whether a theory is correct or
not when chasing an error.

* Revert "Diagnostic change only, to confirm whether a theory is correct or"

This reverts commit 4b0e51e87af44cbef5b9e643f9c5bf7aff48b548.

* Do not merge. Temporarily removed calls to
"codeGen->genIPmappingUpdateForRemovedInstruction()".

Also, corrected minor bug in instruction numbering
when removing instructions during optimization.

* Modifications to better update the IP mapping table for a replaced instruction.

* Minor formatting change.

* Check for out of range offsets

* Don't optimise during prolog/epilog

* Fix windows build error

* IGF_HAS_REMOVED_INSTR is ARM64 only

* Add OptimizeLdrStr function

* Fix formatting

* Ensure local variables are tracked

* Don't peephole local variables

Co-authored-by: Bruce Forstall <brucefo@microsoft.com>
Co-authored-by: Alan Hayward <alan.hayward@arm.com>
Co-authored-by: Alan Hayward <a74nh@users.noreply.github.com>
22 months agoProduce crashreport.json and use llvm-symbolizer to create stack trace (#77578)
Kunal Pathak [Fri, 27 Jan 2023 07:44:23 +0000 (23:44 -0800)]
Produce crashreport.json and use llvm-symbolizer to create stack trace (#77578)

* add DOTNET_EnableCrashReport

* Enable JitStress and JitStressRegs by default to see some test failures

* Enable stress switches only for JIT

* fix the build errors

* Revert "Set DNER for all local fields (#77341)"

This reverts commit 4e85471628214a3e6257132cadd8f7fd33299eb0.

* Set EnableCrashReport in testenvironment.proj

* Pass --crashReport to capture for hangs

* Comment bunch of jobs to trigger

* Comment all runs except Linux_x64

* Stop running libraries job

* Fix the tag in testenvironment.proj

* Use keepnativesymbols

* Update JitStress/JitStressRegs

* Embed native_image_offset field in crashreport.json

* Add TryPrintStackTraceFromCrashReport()

* Call TryPrintStackTraceFromCrashReport() even for crashes

* Add newtonsoft in CoreCLRTestLibrary.csproj

* Fix the crash dump folder

* Add random failure in jit

* Add some logging around TryPrintStackTraceFromCrashReport

* Move the error randomization to GetLayout() that has compiler object access

* Seach for crashreport.json files

* Switch to System.Text.Json

* fix the json path

* Add some logging

* Fix the clrjit symbols

* Add a comment

* Add few more commnets

* chown

* ls -l, chmod

* Change to chown

* USER environment variable

* update runtime.yml

* fix runtime.yml

* add logging

* Add llvm-symbolizer -h

* Skip superpmi pipelines

* read contents before process exit

* Add error output also

* fix some parameters for llvm-symbolizer

* Also enable OSX_x64 runs

* Remove the debugging code:

* Revert "Revert "Set DNER for all local fields (#77341)""

This reverts commit 5cfff119dbd8dd7a925a5db6fdb33f4f6487cb3a.

* Undo JIT changes to trigger assert

* Undo some yml changes

* Review feedback

* Undo runtime.yml changes

* Add some comments

* Address review feedback

22 months agoTemporarily disable eventsourceerror test for Windows ARM32 (#81244)
Anton Lapounov [Fri, 27 Jan 2023 07:29:29 +0000 (23:29 -0800)]
Temporarily disable eventsourceerror test for Windows ARM32 (#81244)

23 months ago[JIT] - X64 - Peephole optimization to possibly skip emitting `and reg, -1` (#80468)
Will Smith [Fri, 27 Jan 2023 03:43:27 +0000 (19:43 -0800)]
[JIT] - X64 - Peephole optimization to possibly skip emitting `and reg, -1` (#80468)

* Optimize 'x & -1' to a cast

* Check for small type

* Update gentree.cpp

* Use peephole optimization instead as it catches more cases

* Simplify logic

* Fix comment. Added test case.

* Update IntAnd.cs

* Check for set flags

* Check explicitly for TYP_INT

23 months agoImprove -static-pie support (#81163)
Adeel Mujahid [Fri, 27 Jan 2023 00:48:15 +0000 (02:48 +0200)]
Improve -static-pie support (#81163)

23 months agoImprove error for missing Python (#81202)
Dan Moseley [Fri, 27 Jan 2023 00:44:46 +0000 (17:44 -0700)]
Improve error for missing Python (#81202)

* add error

* Fix a case were missing VC components didn't error

* handle non empty stdout

* Remove self assignment

23 months agoRemove defensive Task[] copy from non-generic Task.WhenAll (#81065)
Stephen Toub [Thu, 26 Jan 2023 23:31:54 +0000 (18:31 -0500)]
Remove defensive Task[] copy from non-generic Task.WhenAll (#81065)

When calling it with a `Task[]` or `List<Task>`, we'll no longer generate a temporary array; the only allocation in those cases will be for the returned Task itself, at least if it completes successfully (if multiple of the constituent tasks fail or are canceled, we'll end up with an additional list allocation beyond what we had before).  If you call it with an enumerable that's not an `ICollection<Task>`, we'll also save a `Task[]`.

23 months ago[wasm] Add Vector.Normalize measurement (#81237)
Radek Doulik [Thu, 26 Jan 2023 23:02:13 +0000 (00:02 +0100)]
[wasm] Add Vector.Normalize measurement (#81237)

23 months agoJIT: build pred lists before patchpoint expansion (#81196)
Andy Ayers [Thu, 26 Jan 2023 22:44:00 +0000 (14:44 -0800)]
JIT: build pred lists before patchpoint expansion (#81196)

Move pred list building 3 phases earlier. It now happens just after
instrumentation (or importation if we're not instrumenting) and just before
expanding patchpoints.

Revise the patchpoint, indirect call, and post importer cleanup phases
to do proper pred list maintenance.

Update the flow checker to handle cases we see when we haven't yet run
the post importer cleanup.

Contributes to #80193.

23 months agoUse RunContinuationsAsynchronously for block completion tasks (#81013)
Stephen Toub [Thu, 26 Jan 2023 21:55:10 +0000 (16:55 -0500)]
Use RunContinuationsAsynchronously for block completion tasks (#81013)

* Use RunContinuationsAsynchronously for block completion tasks

* Tweak test

Co-authored-by: Petr Onderka <gsvick@gmail.com>
23 months agoFix Configuration Binding with Instantiated Objects (#81050)
Tarek Mahmoud Sayed [Thu, 26 Jan 2023 20:50:40 +0000 (12:50 -0800)]
Fix Configuration Binding with Instantiated Objects (#81050)

23 months ago[mono][wasm] Avoid saving the result of OP_AOTCONST into the gc pin area, its not...
Zoltan Varga [Thu, 26 Jan 2023 19:55:58 +0000 (14:55 -0500)]
[mono][wasm] Avoid saving the result of OP_AOTCONST into the gc pin area, its not needed. (#81179)

23 months agoDisable the /JIT/opt/ObjectStackAllocation/ObjectStackAllocationTests (#81195)
Jan Vorlicek [Thu, 26 Jan 2023 19:41:12 +0000 (20:41 +0100)]
Disable the /JIT/opt/ObjectStackAllocation/ObjectStackAllocationTests (#81195)

* Disable the /JIT/opt/ObjectStackAllocation/ObjectStackAllocationTests

Disable the test until a dotnet with a fix of the issue #81103 is used
in the runtime repo to build / run tests.

* Moving the disabling to crossgen2 specific section

23 months agoFix a variety of issues in FrozenCollections (#81194)
Stephen Toub [Thu, 26 Jan 2023 19:23:25 +0000 (14:23 -0500)]
Fix a variety of issues in FrozenCollections (#81194)

- Add the new ToFrozenDictionary/Set methods that take optimizedForReading and make the existing overloads cheaper for construction.  This makes construction time and allocation by default much closer to that of a normal dictionary or set while also enabling more of the implementation to be trimmed away by default.
- Fixed the use of FrozenSet/Dictionary.Empty such that we only use the singleton when its comparer matches; otherwise, we could end up handing back an instance with the wrong comparer.
- Avoided passing both a dictionary/set and a comparer down through constructors, as the dictionary/set contains the comparer and we don't want to accidentally end up in a situation where we pass through the wrong one.
- Condensed some of the construction code to be a bit less verbose
- Removed unused locals from ToFrozenDictionary (the min/max/range were no longer being used)
- Remove unnecessary array allocations from PickIntegerDictionary
- Delete the sparse range integer sets, which are rarely needed and are broken for TryGetValue
- Fix CheckUniqueAndUnfoundElements to slice down to only the relevant size prior to clearing

23 months agoUpdate dependencies from https://github.com/dotnet/arcade build 20230125.2 (#81213)
dotnet-maestro[bot] [Thu, 26 Jan 2023 19:14:43 +0000 (13:14 -0600)]
Update dependencies from https://github.com/dotnet/arcade build 20230125.2 (#81213)

Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
 From Version 8.0.0-beta.23074.2 -> To Version 8.0.0-beta.23075.2

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
23 months ago[main] Update dependencies from 9 repositories (#80916)
dotnet-maestro[bot] [Thu, 26 Jan 2023 19:14:17 +0000 (13:14 -0600)]
[main] Update dependencies from 9 repositories (#80916)

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

Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers
 From Version 3.3.5-beta1.23068.2 -> To Version 3.3.5-beta1.23070.1

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

Microsoft.NET.Workload.Emscripten.net7.Manifest-8.0.100
 From Version 8.0.0-alpha.1.23066.1 -> To Version 8.0.0-alpha.1.23070.1

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

Microsoft.NET.Sdk.IL , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.ILAsm , runtime.native.System.IO.Ports , System.Text.Json
 From Version 8.0.0-alpha.1.23065.5 -> To Version 8.0.0-alpha.1.23072.5

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

runtime.linux-arm64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.linux-arm64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-musl-x64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.linux-musl-x64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-x64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.linux-x64.Microsoft.NETCore.Runtime.ObjWriter , runtime.osx.11.0-arm64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.osx.11.0-arm64.Microsoft.NETCore.Runtime.ObjWriter , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.ObjWriter , runtime.win-arm64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.win-arm64.Microsoft.NETCore.Runtime.ObjWriter , runtime.win-x64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.ObjWriter
 From Version 1.0.0-alpha.1.23066.1 -> To Version 1.0.0-alpha.1.23073.1

* Update Versions.props

fix previos merge

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

Microsoft.NETCore.Runtime.ICU.Transport
 From Version 8.0.0-alpha.1.23066.1 -> To Version 8.0.0-alpha.1.23073.1

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

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

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

Microsoft.DotNet.CilStrip.Sources , System.ComponentModel.TypeConverter.TestData , System.Drawing.Common.TestData , System.Formats.Tar.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 8.0.0-beta.23066.2 -> To Version 8.0.0-beta.23073.1

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

Microsoft.NET.Workload.Emscripten.net7.Manifest-8.0.100
 From Version 8.0.0-alpha.1.23066.1 -> To Version 8.0.0-alpha.1.23073.2

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

Microsoft.DotNet.HotReload.Utils.Generator.BuildTool
 From Version 1.1.0-alpha.0.23066.1 -> To Version 1.1.0-alpha.0.23073.1

* Update dependencies from https://github.com/dotnet/cecil build 20230123.1

Microsoft.DotNet.Cecil , Microsoft.DotNet.Cecil.Pdb
 From Version 0.11.4-alpha.23067.1 -> To Version 0.11.4-alpha.23073.1

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

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-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools
 From Version 14.0.0-alpha.1.23066.2 -> To Version 14.0.0-alpha.1.23074.1

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

Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers
 From Version 3.3.5-beta1.23068.2 -> To Version 3.3.5-beta1.23074.3

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

Microsoft.NETCore.Runtime.ICU.Transport
 From Version 8.0.0-alpha.1.23066.1 -> To Version 8.0.0-alpha.1.23076.1

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

Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers
 From Version 3.3.5-beta1.23068.2 -> To Version 3.3.5-beta1.23076.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Larry Ewing <lewing@microsoft.com>
23 months agoFix max chunk size limiting (#81192)
Jan Vorlicek [Thu, 26 Jan 2023 16:17:33 +0000 (17:17 +0100)]
Fix max chunk size limiting (#81192)

When the new stub heaps were implemented, the chunk size needed to be
limited so that all precodes for a chunk fit into a single memory page.
That was done in `MethodDescChunk::CreateChunk`. But it was discovered
now that there is another place where it needs to be limited, the
`MethodTableBuilder::AllocAndInitMethodDescChunk`. The
JIT\opt\ObjectStackAllocation\ObjectStackAllocationTests started to fail
in the outerloop due to too long chunk. The failure happens in crossgen2
as it is using a separate build of runtime in release and only that
uncovers the problem. And only when DOTNET_TieredCompilation=0 and
DOTNET_ProfApi_RejitOnAttach=0.

This change fixes the problem. With this change applied to the dotnet
runtime version used by the crossgen2 and patching it in place in the
.dotnet/shared/.... directory, the issue doesn't occur.

Close #81103

23 months ago[mono] Fix missing simd mul/div case (#81201)
Larry Ewing [Thu, 26 Jan 2023 15:43:28 +0000 (09:43 -0600)]
[mono] Fix missing simd mul/div case (#81201)

* Test missing case

* Update src/mono/mono/mini/simd-intrinsics.c

* Update src/mono/mono/mini/simd-intrinsics.c

23 months ago[wasm] Always allocate when computing temp file name (#81085)
Marek Fišera [Thu, 26 Jan 2023 14:31:13 +0000 (15:31 +0100)]
[wasm] Always allocate when computing temp file name (#81085)

The wasm implementation of __randname uses pointer address as another entry into the randomness.

23 months ago[mono][interp] Extract code outside of interp main loop (#81208)
Vlad Brezae [Thu, 26 Jan 2023 13:49:07 +0000 (15:49 +0200)]
[mono][interp] Extract code outside of interp main loop (#81208)

23 months agoAdd SYSLIB* analyzers to global configs (#80930)
Stephen Toub [Thu, 26 Jan 2023 13:25:39 +0000 (08:25 -0500)]
Add SYSLIB* analyzers to global configs (#80930)

* Add SYSLIB* analyzers to global configs

* Address PR feedback

23 months agoAdd Lerp to IFloatingPointIeee754 (#81186)
Tanner Gooding [Thu, 26 Jan 2023 10:17:57 +0000 (02:17 -0800)]
Add Lerp to IFloatingPointIeee754 (#81186)

* Add Lerp to IFloatingPointIeee754

* Add tests covering Lerp

* Fix build error

* Handle negative zero

23 months agoFix GC interfaces versioning (#81188)
Jan Vorlicek [Thu, 26 Jan 2023 09:34:16 +0000 (10:34 +0100)]
Fix GC interfaces versioning (#81188)

* Fix GC interfaces versioning

The change that introduced GC interfaces versioning had a bug preventing
it from using .NET 8 GC being used with .NET 7 runtime. The
GC_VersionInfo return value should have been the minimum supported
version, not the current one. But more importantly there was also
some confusion on what interface the GC_INTERFACE_MAJOR_VERSION
represents. While the change considered it to be a version of the
IGCToCLR interface, it really means the version of the IGCHeap
interface. This change creates a separate version,
EE_INTERFACE_MAJOR_VERSION for versioning o the IGCToCLR interface to
rectify that.
@Maoni0 also didn't like the way of creating a new version of
IGCToCLR interface for each major version change, so I am changing it to
single IGCToCLR interface.

* Fix version check at the call site of the LogErrorToHost

23 months agoFix CA2021 in MethodBodyScanner (#81200)
Michal Strehovský [Thu, 26 Jan 2023 09:30:29 +0000 (18:30 +0900)]
Fix CA2021 in MethodBodyScanner (#81200)

23 months agoUpdating JitInterface to support Vector512. (#81197)
DeepakRajendrakumaran [Thu, 26 Jan 2023 07:47:24 +0000 (23:47 -0800)]
Updating JitInterface to support Vector512. (#81197)

* Auto-generated changes for adding Vector512 in JitInterface.

* Additional Interface Changes.

* Updating JITEEVersionIdentifier.

23 months agoBrowserDebugProxy: unify debug metadata reading for PE and Webcil (#81099)
Aleksey Kliger (λgeek) [Thu, 26 Jan 2023 02:33:00 +0000 (21:33 -0500)]
BrowserDebugProxy: unify debug metadata reading for PE and Webcil (#81099)

* DebugStore: factor common PE and Webcil reading logic

* Move common logic to a MetadataDebugSummary class

Also switch from cascade of 'if's to a 'switch' when looking at debug entries

* Implement PDB checksum reader for WebcilReader

* Move WebcilReader reflection to a helper; add lazy initialization

Co-authored-by: Ankit Jain <radical@gmail.com>
23 months agoUpdate dependencies from https://github.com/dotnet/arcade build 20230124.2 (#81161)
dotnet-maestro[bot] [Thu, 26 Jan 2023 01:38:31 +0000 (19:38 -0600)]
Update dependencies from https://github.com/dotnet/arcade build 20230124.2 (#81161)

Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
 From Version 8.0.0-beta.23073.10 -> To Version 8.0.0-beta.23074.2

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
23 months agoUpdate the JIT to track `Span.Length` and `ReadOnlySpan.Length` as "never negative...
Tanner Gooding [Thu, 26 Jan 2023 01:24:09 +0000 (17:24 -0800)]
Update the JIT to track `Span.Length` and `ReadOnlySpan.Length` as "never negative" (#81055)

* Update the JIT to track `Span.Length` and `ReadOnlySpan.Length` as "never negative"

* Updating the "is never negative" info to be tracked in LclVarDsc

* Apply formatting patch

* Ensure lvIsNeverNegative is propagated to shadows

* Update src/coreclr/jit/gentree.h

Co-authored-by: SingleAccretion <62474226+SingleAccretion@users.noreply.github.com>
* Responding to PR feedback

* Adding two asserts

* Rename GenTreeField::IsNeverNegative to IsSpanLength and add a comment

* Fix an assert

Co-authored-by: SingleAccretion <62474226+SingleAccretion@users.noreply.github.com>
23 months agoavoid allocation of SelectClientCertificate delegate (#81096)
Tomas Weinfurt [Wed, 25 Jan 2023 23:59:01 +0000 (15:59 -0800)]
avoid allocation of SelectClientCertificate delegate (#81096)

* avoid allocation of SelectClientCertificate delegate

* cleanup

23 months ago[mono] Build mono logging profiler on s390x (#72049)
Ilya Leoshkevich [Wed, 25 Jan 2023 23:38:15 +0000 (00:38 +0100)]
[mono] Build mono logging profiler on s390x (#72049)

At the moment we don't have too many profiling options on s390x, and
the logging profiler comes in handy. Enable building it on s390x and
define MONO_DLL_EXPORT in order to unhide mono_profiler_init_log().

23 months agoChange banana build to Release (#81127)
Andy Gocke [Wed, 25 Jan 2023 23:30:51 +0000 (15:30 -0800)]
Change banana build to Release (#81127)

Works around https://github.com/dotnet/runtime/issues/79561

23 months agoBeef up `WithoutFunctionPointerType` (#81147)
Michal Strehovský [Wed, 25 Jan 2023 23:30:16 +0000 (08:30 +0900)]
Beef up `WithoutFunctionPointerType` (#81147)

We don't have a `MethodTable` shape for function pointer types because how they should look like hasn't been defined until .NET 8.

Beef up the CoreCLR compat shim. We'll not be 100% compatible with this because `typeof(Tuple<delegate*<void>[]>)` doesn't actually load as `typeof(Tuple<IntPtr[]>)`, but this'll do until #71883.

23 months agoFix PAL exception SXS test (#81169)
Jan Vorlicek [Wed, 25 Jan 2023 21:58:39 +0000 (22:58 +0100)]
Fix PAL exception SXS test (#81169)

The test was failing in the outerloop CI testing because of a bug in the
test. One global variable that was modified by the main and checked by
the SIGSEGV handler was not marked as volatile.

Close #81113

23 months agoAdd missing case for upper save/restore (#81091)
Kunal Pathak [Wed, 25 Jan 2023 20:47:09 +0000 (12:47 -0800)]
Add missing case for upper save/restore (#81091)

* Add missing case for upper save/restore

* PR review feedback:

23 months ago[wasm] Disable ExceptionTests due to issue #81170, to get CI green (#81171)
Ankit Jain [Wed, 25 Jan 2023 17:39:35 +0000 (12:39 -0500)]
[wasm] Disable ExceptionTests due to issue #81170, to get CI green (#81171)

Issue #81170

23 months agoAllow forced building of mobile manifest pkgs, outside mobile builds (#80920)
Jo Shields [Wed, 25 Jan 2023 17:37:05 +0000 (09:37 -0800)]
Allow forced building of mobile manifest pkgs, outside mobile builds (#80920)

23 months agoFix generic parameter data flow validation in NativeAOT (#80956)
Vitek Karas [Wed, 25 Jan 2023 16:34:17 +0000 (08:34 -0800)]
Fix generic parameter data flow validation in NativeAOT (#80956)

Previously generic data flow was done from generic dictionary nodes. Problem with that approach is that there's no origin information at that point. The warnings can't point to the place where the problematic instantiation is in the code - we only know that it exists.
Aside from it being unfriendly for the users, it means any RUC or suppressions don't work on these warnings the same way they do in linker/analyzer.

This change modifies the logic to tag the method as "needs data flow" whenever we spot an instantiation of an annotated generic in it somewhere.
Then the actualy validation/marking is done from data flow using the trim analysis patterns.

The only exception to this is generic data flow for base types and interface implementations, that one is done on the EEType nodes.

Note that AOT implements a much more precise version of the generic data flow validation as compared to linker/analyzer. See the big comment at the bening of GenericParameterWarningLocation.cs for how that works.

Changes the expected warning validation to use tokens to compare message origins (same reason as with Kept validation - consistently converting things to string is hard)

Adds a new dependency node with the generic type definition to the graph and then does analysis on that node.
This is to avoid potential noise warnings which could happen due to multiple instantiations calling the checking code multiple times. With this the check is done only once on the type definition.

Tweaked some tests to try to cover the multiple instances scenario.

23 months agoAdd Utf8JsonWriter.WriteRawValue(System.Buffers.ReadOnlySequence). (#76444)
LateApexEarlySpeed [Wed, 25 Jan 2023 16:17:52 +0000 (00:17 +0800)]
Add Utf8JsonWriter.WriteRawValue(System.Buffers.ReadOnlySequence). (#76444)

* Add Utf8JsonWriter.WriteRawValue(System.Buffers.ReadOnlySequence).

* Fix comment: remove TODO; rename GrowIfNeeded().

* Fix comment: consider ReadOnlySequence.Length >= int.Max.

* Make test case more generic for long typed length test data.

* Fix comment: add back TODO issue; checked cast long length to int at begin.

* Fix comment: revert checked cast long length.

23 months agoEnsure converter factories do not throw on unsupported types. (#81133)
Eirik Tsarpalis [Wed, 25 Jan 2023 16:17:15 +0000 (16:17 +0000)]
Ensure converter factories do not throw on unsupported types. (#81133)

* Ensure converter factories do not throw on unsupported types.

* Update src/libraries/System.Text.Json/tests/System.Text.Json.FSharp.Tests/UnionTests.fs

* Properly implement the Multi-dimensional array converter in tests.

23 months agoJIT: Fix tailcall-to-loop improper locals zeroing (#81083)
Jakob Botsch Nielsen [Wed, 25 Jan 2023 08:05:29 +0000 (09:05 +0100)]
JIT: Fix tailcall-to-loop improper locals zeroing (#81083)

The zeroing that the tailcall-to-loop optimization does was zeroing the
promoted copies for implicit byrefs even when promotion of them was undone.
This was introducing unexpected references to the promoted fields.

Fix #81081

23 months agoRe-enable ApiCompat ref<->src assembly validation (#81104)
Viktor Hofer [Wed, 25 Jan 2023 07:18:21 +0000 (08:18 +0100)]
Re-enable ApiCompat ref<->src assembly validation (#81104)

* Re-eanble ApiCompat ref<->src assembly validation

* Fix API compatibility differences and update ApiCompat baseline

* Fix mono build

* Disable ApiCompat for linker

23 months ago[wasm] Enable Vector4.Dot (#81130)
Radek Doulik [Wed, 25 Jan 2023 06:41:15 +0000 (07:41 +0100)]
[wasm] Enable Vector4.Dot (#81130)

* [wasm] Enable Vector4.Dot

We have all the pieces already in place

* fix condition

Co-authored-by: Larry Ewing <lewing@microsoft.com>
23 months agoSimplify getting full names for type loader purposes (#81069)
Michal Strehovský [Wed, 25 Jan 2023 05:40:10 +0000 (14:40 +0900)]
Simplify getting full names for type loader purposes (#81069)

23 months agoAvoid constraint validation (#81068)
Michal Strehovský [Wed, 25 Jan 2023 05:39:42 +0000 (14:39 +0900)]
Avoid constraint validation (#81068)

Avoids bringing ConstructorInfo to simple apps.

23 months ago[wasm] Improve jiterpreter jit calls (#81071)
Katelyn Gadd [Wed, 25 Jan 2023 02:34:16 +0000 (18:34 -0800)]
[wasm] Improve jiterpreter jit calls (#81071)

* Misc. cleanups and jiterpreter refactorings
* Optimize the ldloca + tnn.load pair in direct jit calls
* Fix argOffsets size calculation
* Turn stats back off

23 months ago[main] Update dependencies from dotnet/arcade (#81079)
dotnet-maestro[bot] [Wed, 25 Jan 2023 02:26:21 +0000 (20:26 -0600)]
[main] Update dependencies from dotnet/arcade (#81079)

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

Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
 From Version 8.0.0-beta.23067.5 -> To Version 8.0.0-beta.23073.10

* Update tests.proj

In reaction to https://github.com/dotnet/arcade/commit/20e5e15262b7666d9e7b22bdc7ec3fb3d5e67a8f

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
23 months ago[main] Update dependencies from dotnet/roslyn (#80997)
dotnet-maestro[bot] [Wed, 25 Jan 2023 02:19:05 +0000 (20:19 -0600)]
[main] Update dependencies from dotnet/roslyn (#80997)

* Update dependencies from https://github.com/dotnet/roslyn build 20230121.1

Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset
 From Version 4.6.0-1.23070.10 -> To Version 4.6.0-1.23071.1

* Update dependencies from https://github.com/dotnet/roslyn build 20230123.4

Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset
 From Version 4.6.0-1.23070.10 -> To Version 4.6.0-1.23073.4

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
23 months agoMove mono llvm fullaot runtime test leg to rolling build (#81125)
Steve Pfister [Wed, 25 Jan 2023 01:50:34 +0000 (20:50 -0500)]
Move mono llvm fullaot runtime test leg to rolling build (#81125)

Since it takes quite a while to complete this leg, we should move it off of running every PR.

Addresses #65626