platform/upstream/dotnet/runtime.git
21 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)

21 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.

21 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)

21 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>
21 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

21 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)

21 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

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

21 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

21 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[]`.

21 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)

21 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.

21 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>
21 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)

21 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)

21 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

21 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

21 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>
21 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>
21 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

21 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

21 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.

21 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)

21 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

21 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

21 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

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

21 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.

21 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>
21 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>
21 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>
21 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

21 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().

21 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

21 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.

21 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

21 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:

21 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

21 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)

21 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.

21 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.

21 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.

21 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

21 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

21 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>
21 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)

21 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.

21 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

21 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>
21 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>
21 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

21 months agoFix TarWriter.TarEntry exception when adding file whose Unix group owner does not...
Carlos Sanchez [Wed, 25 Jan 2023 01:18:20 +0000 (17:18 -0800)]
Fix TarWriter.TarEntry exception when adding file whose Unix group owner does not exist in the system (#81070)

* Do not throw if a unix group is non-existent when creating a TarEntry from a file using TarWriter.

* Adjust test that was consuming removed interop method.

* Add unit tests to add file entry whose group owner does not exist.

* Address src feedback.

* Address test feedback

* Delay creation/deletion of group in test

* Test all PosixTarEntry formats

Co-authored-by: carlossanlop <carlossanlop@users.noreply.github.com>
21 months ago[wasm] Fix S.N.Vector4 related assert (#81126)
Radek Doulik [Wed, 25 Jan 2023 00:38:58 +0000 (01:38 +0100)]
[wasm] Fix S.N.Vector4 related assert (#81126)

Fixes

    error : Precompiling failed for /root/helix/work/workitem/e/wbt/blazorwasm_Release_aot_mv10loow.lgf/obj/Release/net8.0/wasm/for-publish/aot-in/aot-instances.dll with exit code 134. [/root/helix/work/workitem/e/wbt/blazorwasm_Release_aot_mv10loow.lgf/blazorwasm_Release_aot_mv10loow.lgf.csproj]
    error :   %6 = load %System.Numerics.Vector4.15073, %System.Numerics.Vector4.15073* %5, align 1 [/root/helix/work/workitem/e/wbt/blazorwasm_Release_aot_mv10loow.lgf/blazorwasm_Release_aot_mv10loow.lgf.csproj]
    error : <4 x float> [/root/helix/work/workitem/e/wbt/blazorwasm_Release_aot_mv10loow.lgf/blazorwasm_Release_aot_mv10loow.lgf.csproj]
    error : * Assertion: should not be reached at /__w/1/s/src/mono/mono/mini/mini-llvm.c:1455

where we were getting wrong llvm type for Vector4

21 months ago[wasm] Fix type check for PackedSimd.Splat (#81100)
Radek Doulik [Wed, 25 Jan 2023 00:37:17 +0000 (01:37 +0100)]
[wasm] Fix type check for PackedSimd.Splat (#81100)

The Splat's 1st parameter is not Vector128'1, but element type.

Fixes this assertion:

    converting llvm method System.Runtime.Intrinsics.Vector128`1<sbyte> System.Runtime.Intrinsics.Wasm.PackedSimd:Splat (sbyte)
    * Assertion at D:\git\wa-local\src\mono\mono\mini\simd-intrinsics.c:690, condition `vector_type->type == MONO_TYPE_GENERICINST' not met

21 months agoJIT: build pred lists before inlining (#81000)
Andy Ayers [Tue, 24 Jan 2023 23:24:10 +0000 (15:24 -0800)]
JIT: build pred lists before inlining (#81000)

Move pred list building up a bit further. Note that this impacts both the root
method and all inlinees, since we run a number of the initial phases on both.

Since inlinees build their basic blocks and flow edges in the root compiler's
memory pool, the only work required to unify the pred lists for a successful
inline is to get things right at the boundaries. And for failed inlines there
is no cross-referencing so we can just let the new pred lists leak away (like
we already do for the inlinee blocks).

Contributes towards #80193.

21 months agoDisable eventsourceerror test (#81094)
Egor Bogatov [Tue, 24 Jan 2023 21:04:32 +0000 (22:04 +0100)]
Disable eventsourceerror test (#81094)

21 months ago[browser] improve default initial memory size (#80507)
Pavel Savara [Tue, 24 Jan 2023 20:52:27 +0000 (21:52 +0100)]
[browser] improve default initial memory size (#80507)

make EmccInitialHeapSize dynamic based on size of the assemblies and AOT DATA segments

Co-authored-by: Ankit Jain <radical@gmail.com>
21 months ago[wasm] ManagedToNativeGenerator: Skip unmanaged dlls (#81066)
Ankit Jain [Tue, 24 Jan 2023 20:45:30 +0000 (15:45 -0500)]
[wasm] ManagedToNativeGenerator: Skip unmanaged dlls (#81066)

* [wasm] ManagedToNativeGenerator: Skip unmanaged dlls

.. instead crashing with an exception like:

```
src/mono/wasm/build/WasmApp.Native.targets(296,5): error MSB4018: (NETCORE_ENGINEERING_TELEMETRY=Build) The "ManagedToNativeGenerator" task failed unexpectedly.
System.BadImageFormatException: This PE image is not a managed executable.
   at System.Reflection.MetadataLoadContext.LoadFromStreamCore(Stream peStream)
   at System.Reflection.MetadataLoadContext.LoadFromAssemblyPath(String assemblyPath)
   at PInvokeTableGenerator.Generate(String[] pinvokeModules, String[] assemblies, String outputPath) in /_/src/tasks/WasmAppBuilder/PInvokeTableGenerator.cs:line 42
   at ManagedToNativeGenerator.ExecuteInternal() in /_/src/tasks/WasmAppBuilder/ManagedToNativeGenerator.cs:line 68
   at ManagedToNativeGenerator.Execute() in /_/src/tasks/WasmAppBuilder/ManagedToNativeGenerator.cs:line 53
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask)
```

The wasm targets currently are not able to differentiate the managed
assemblies from the unmanaged ones. so it needs to be handled here.

* [wasm] WasmAppHost: Add support for host arguments

* Drop reallocation of managed dlls.

Co-authored-by: Marek Fišera <mara@neptuo.com>
21 months agoFix a few static linking issues (#81086)
Adeel Mujahid [Tue, 24 Jan 2023 18:52:48 +0000 (20:52 +0200)]
Fix a few static linking issues (#81086)

* Fix a few static linking issues

* Dedup paths

* Update src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets

Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
21 months ago[Android] Bump target SDK version in Android manifest (#80923)
Šimon Rozsíval [Tue, 24 Jan 2023 18:51:17 +0000 (19:51 +0100)]
[Android] Bump target SDK version in Android manifest (#80923)

* Set target SDK version

* Update Android docs

* Disable tests that do not pass with target API 31

* Check if the installed Android SDK is up-to-date

* Update skip explanation

* Use latest SDK

* Disable failing System.Net.Security test

21 months agoMinor cleanup in frozen collection code (#81080)
Martin Taillefer [Tue, 24 Jan 2023 17:20:58 +0000 (09:20 -0800)]
Minor cleanup in frozen collection code (#81080)

Co-authored-by: Martin Taillefer <mataille@microsoft.com>
21 months agoFixed assertion for targetType and op1 type not being the same (#81060)
Will Smith [Tue, 24 Jan 2023 17:08:41 +0000 (09:08 -0800)]
Fixed assertion for targetType and op1 type not being the same (#81060)

21 months agoFix publishing to Arcade when there are no merged tests in the set (#81054)
Tomáš Rylek [Tue, 24 Jan 2023 16:00:43 +0000 (17:00 +0100)]
Fix publishing to Arcade when there are no merged tests in the set (#81054)

21 months agoOptimize "new DateTime(<const args>)" via improvements in JIT VN (#81005)
Egor Bogatov [Tue, 24 Jan 2023 15:54:43 +0000 (16:54 +0100)]
Optimize "new DateTime(<const args>)" via improvements in JIT VN (#81005)

Co-authored-by: SingleAccretion <62474226+SingleAccretion@users.noreply.github.com>
21 months ago[Android] Add option to skip generating apk for a specific project (#80909)
Šimon Rozsíval [Tue, 24 Jan 2023 15:46:25 +0000 (16:46 +0100)]
[Android] Add option to skip generating apk for a specific project (#80909)

* Add option to skip generating apk for a specific project

* Replace _SkipAndroidGenerateAppBundle with AndroidGenerateAppBundle

21 months ago[mono][interp] Remove dependence on svar/dvar when computing call offset (#81017)
Vlad Brezae [Tue, 24 Jan 2023 14:32:52 +0000 (16:32 +0200)]
[mono][interp] Remove dependence on svar/dvar when computing call offset (#81017)

* [mono][interp] Rename field to better reflect its content

* [mono][interp] Fix stack alignment

* [mono][interp] Move assertion to catch misalignment sooner

* [mono][interp] Remove dependence on svar/dvar when computing call offset

On optimized code, we made sure we always had a svar set, even if the call had no args. We then resolved the offset of the call as the offset of the first arg.
On unoptimized code, we made sure we always had a dvar set, even if the call has void return. We then resolved the offset of the call as the offset of the dvar. As we are introducing alignment guarantees of param area and, in the future, the dvar (only if it is simd type), the offset of the dvar and svar can end up with quite different offsets.

This commit solves these complications by introducing a call_offset field in the call info data, which represents the offset of the call args. This field is set either by the var offset allocator or on the fly, during compilation, in unoptimized case. The dvar offset is allocated independently and when emitting compacted instruction for calls, we do it now in an unified way between optimized and unoptimized compilation.

* Enable assertion temporarily for CI

21 months agoSpeed up frozen string dictionaries and sets by ~25-30% (#81021)
Martin Taillefer [Tue, 24 Jan 2023 11:54:43 +0000 (03:54 -0800)]
Speed up frozen string dictionaries and sets by ~25-30% (#81021)

- Replace the specialized comparer types with specialized dictionary
and set types, to avoid virtual dispatch overhead and enable better
inlining.

Co-authored-by: Martin Taillefer <mataille@microsoft.com>
21 months agoJIT: Add Statement::m_treeListEnd (#81031)
Jakob Botsch Nielsen [Tue, 24 Jan 2023 10:20:22 +0000 (11:20 +0100)]
JIT: Add Statement::m_treeListEnd (#81031)

Before this change statements have only one field for the "tree list"
even though bidirectional iteration is supported after nodes have been
linked. This worked fine before the locals tree list existed since the
"root node" was always the last node.

This does not work for the locals tree list since the "root node" is not
part of the list, meaning that we need somewhere else to store the
'last' node. Before this PR the assumption was that the root node was
_never_ part of the locals linked list, so we could use the
gtNext/gtPrev fields of the root node. However, the added test case
shows that in fact it is possible we end up with a top level local.

This PR fixes the problem by adding a Statement::m_treeListEnd field
that can keep the last node of the locals linked list.  While this takes
some memory, it seems like the most maintainable way to resolve the
problem. I experimented with making the linked list circular or by
allocating a new stand-in node when necessary but eventually I ended up
here.

Fix #81018

21 months ago[iOS][Android] ActiveIssue SpanTests and Matrix4x4Tests that are failing on CI (...
Steve Pfister [Tue, 24 Jan 2023 09:16:33 +0000 (04:16 -0500)]
[iOS][Android] ActiveIssue SpanTests and Matrix4x4Tests that are failing on CI (#80877)

Co-authored-by: Steve Pfister <steve.pfister@microsoft.com>
21 months ago[wasm] Add direct jit calls to jiterpreter (#80968)
Katelyn Gadd [Tue, 24 Jan 2023 06:33:57 +0000 (22:33 -0800)]
[wasm] Add direct jit calls to jiterpreter (#80968)

* Introduce 'direct jit call' mode where jiterpreter compiled trampolines invoke the target directly instead of using gsharedvt wrappers
* Fix jitcall target cache being keyed on the wrapper instead of the actual call target

21 months agoUncover IlcGenerateMstatFile (#80998)
Andrii Kurdiumov [Tue, 24 Jan 2023 04:30:31 +0000 (10:30 +0600)]
Uncover IlcGenerateMstatFile (#80998)

21 months ago[webcil] Minor cleanups (#81009)
Aleksey Kliger (λgeek) [Tue, 24 Jan 2023 03:05:55 +0000 (22:05 -0500)]
[webcil] Minor cleanups (#81009)

* replace magic constants by strlen(LITERAL)

   Let the C compiler do the math

* Use CopyIfDifferent for webcil converter in WasmAppBuilder

* WasmAppHost: serve .webcil as application/octet-stream

* Add mime types for webcil in two more places

* Always add to _fileWrites

   But log whether we actually copied anything or not

Co-authored-by: Ankit Jain <radical@gmail.com>
21 months agoremoved RWLock (#81058)
Vladimir Sadov [Tue, 24 Jan 2023 01:05:59 +0000 (17:05 -0800)]
removed RWLock (#81058)

21 months ago[browser] benchmark fix aggressive trimming (#81037)
Pavel Savara [Tue, 24 Jan 2023 00:21:18 +0000 (01:21 +0100)]
[browser] benchmark fix aggressive trimming (#81037)

* fix trimming

* revert https://github.com/dotnet/runtime/pull/81027

* Fix build

Co-authored-by: Radek Doulik <radekdoulik@gmail.com>
21 months ago[wasm][debugger] Implement support to symbolOptions from dap. (#79284)
Thays Grazia [Mon, 23 Jan 2023 22:43:32 +0000 (19:43 -0300)]
[wasm][debugger] Implement support to symbolOptions from dap. (#79284)

* Draft to implement support to symbolOptions from dap.

* removing debugger.launch

* Adding tests and fix compilation error

* Adding test case.

* Fix test cases, and implement support to PDBChecksum used on nuget.org to get symbols.

* merge

* Fixing tests.

* Tests are timing out.

* Apply suggestions from code review

Co-authored-by: Larry Ewing <lewing@microsoft.com>
Co-authored-by: Ankit Jain <radical@gmail.com>
* adressing @radical comments.

* Addressing @radical comment.

* Addressing @radical comments.

* Apply suggestions from code review

Co-authored-by: Ankit Jain <radical@gmail.com>
* Addressing @radical comments.

* Addressing @radical comments
Changing when the symbols from symbol server is loaded because it takes a long time to load, as there are a lot of assemblies loaded not found on symbol servers.

* use MicrosoftCodeAnalysisCSharpVersion for scripting package.

* Adding more tests as asked by @radical
Removing timeout change as @radical has split it into 2 files
Fixing test behavior, when justMyCode is disabled but the symbols are not loaded from symbol server.

* [wasm] some cleanup

- Don't call `UpdateSymbolStore` from `DebugStore..ctor` because that
gets called multiple times in `LoadStore`, but only once instance gets
used.
- Use an isolated symbol cache path per test

* remove debug spew

* Addressing radical comment.

Co-authored-by: Larry Ewing <lewing@microsoft.com>
Co-authored-by: Ankit Jain <radical@gmail.com>
21 months ago[Mono] Fix function pointer check (#80855)
Fan Yang [Mon, 23 Jan 2023 22:14:06 +0000 (17:14 -0500)]
[Mono] Fix function pointer check (#80855)

* Fix function pointer check

* Make is_monomorphic_array return false when the element is function pointer

* Move test to a better location

21 months agoAdd expected output tests for regex source generator (#80937)
Stephen Toub [Mon, 23 Jan 2023 19:07:22 +0000 (14:07 -0500)]
Add expected output tests for regex source generator (#80937)

* Add expected output tests for regex

In particular to help avoid significant formatting / readability regressions in the code output by the regex generator.

* Address PR feedback to normalize version

21 months ago[mono][aot] Free LLVM module after AOT. (#81014)
Zoltan Varga [Mon, 23 Jan 2023 18:58:12 +0000 (13:58 -0500)]
[mono][aot] Free LLVM module after AOT. (#81014)

This is needed to avoid out of memory errors when multiple assemblies
are AOT-ed during dedup.

21 months agoUpdate suppressions now that netframework facade has forwards (#79465)
Eric StJohn [Mon, 23 Jan 2023 17:59:53 +0000 (09:59 -0800)]
Update suppressions now that netframework facade has forwards (#79465)

* Update suppressions now that netframework facade has forwards

* Remove left/right constraint from suppression

21 months ago[wasm] Disable legacy interop measurements (#81027)
Radek Doulik [Mon, 23 Jan 2023 17:43:30 +0000 (18:43 +0100)]
[wasm] Disable legacy interop measurements (#81027)

Temporarily as they currently don't work

21 months agoJIT: Allow forwarding field accesses off of implicit byrefs (#80852)
Jakob Botsch Nielsen [Mon, 23 Jan 2023 16:43:26 +0000 (17:43 +0100)]
JIT: Allow forwarding field accesses off of implicit byrefs (#80852)

The JIT currently allows forwarding implicit byrefs at their last uses
to calls, but only if the full implicit byref is used. This change
allows the JIT to forward any such access off of an implicit byref
parameter.

21 months agoNativeAOT: Optimize static fields of gc types (#80969)
Egor Bogatov [Mon, 23 Jan 2023 14:21:27 +0000 (15:21 +0100)]
NativeAOT: Optimize static fields of gc types (#80969)

Co-authored-by: SingleAccretion <62474226+SingleAccretion@users.noreply.github.com>
21 months agoFix HttpStress & SslStress (#80713)
Anton Firszov [Mon, 23 Jan 2023 13:56:04 +0000 (14:56 +0100)]
Fix HttpStress & SslStress (#80713)

Update versions to 8.0.

21 months agoFixed array delete in debugger.cpp (#79638)
AmardCordanius [Mon, 23 Jan 2023 13:44:35 +0000 (16:44 +0300)]
Fixed array delete in debugger.cpp (#79638)

m_pOffsetToHandlerInfo is array and should be delete via `delete[]`

21 months agoJIT: Remove "promoted struct death vars" map (#80501)
Jakob Botsch Nielsen [Mon, 23 Jan 2023 10:26:24 +0000 (11:26 +0100)]
JIT: Remove "promoted struct death vars" map (#80501)

Repurpose the multireg var death flags as general purpose "field death"
flags instead.

21 months agoEliminate `ToArray` bounds checks (#81001)
xtqqczze [Mon, 23 Jan 2023 02:02:15 +0000 (02:02 +0000)]
Eliminate `ToArray` bounds checks (#81001)

* Remove `RangeIterator.ToArray` bounds check

https://github.com/dotnet/runtime/pull/80633#discussion_r1082720454

* Eliminate additional `ToArray` bounds checks

21 months agoChange how a task stress test is disabled (#80981)
Stephen Toub [Sun, 22 Jan 2023 23:22:03 +0000 (18:22 -0500)]
Change how a task stress test is disabled (#80981)

21 months agoUpdate StaticFilterOptionsMonitor.cs (#80959)
qsdfplkj [Sun, 22 Jan 2023 22:25:09 +0000 (23:25 +0100)]
Update StaticFilterOptionsMonitor.cs (#80959)

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

21 months agoJIT: reset max bbnum after failed inline attempt (#80958)
Andy Ayers [Sun, 22 Jan 2023 16:26:49 +0000 (08:26 -0800)]
JIT: reset max bbnum after failed inline attempt (#80958)

And if we renumber blocks in the inlinee's portion of the flow graph,
start renumbering from the max bbnum before the inline attempt, rather
than the current maximum.

More prep work in anticipation of moving pred list building to happen
before (or the root) and during (for inlinees) inlining.

21 months agoFix shared lib linking with lld-15 (#80993)
Adeel Mujahid [Sun, 22 Jan 2023 15:25:37 +0000 (17:25 +0200)]
Fix shared lib linking with lld-15 (#80993)

21 months agoDon't look at custom attributes for field constants (#80991)
Michal Strehovský [Sun, 22 Jan 2023 14:18:39 +0000 (23:18 +0900)]
Don't look at custom attributes for field constants (#80991)

This should not be reachable.

21 months agoFold `static readonly VectorX` to GT_CNS_VEC (#80670)
Egor Bogatov [Sun, 22 Jan 2023 12:57:13 +0000 (13:57 +0100)]
Fold `static readonly VectorX` to GT_CNS_VEC (#80670)

Co-authored-by: Tanner Gooding <tagoo@outlook.com>
21 months ago[wasm] Set `TrimMode=full` for tests (#80944)
Ankit Jain [Sun, 22 Jan 2023 02:59:30 +0000 (21:59 -0500)]
[wasm] Set `TrimMode=full` for tests (#80944)

21 months ago[mono][wasm] Bundle assemblies as WebCIL (#79416)
Aleksey Kliger (λgeek) [Sat, 21 Jan 2023 23:57:09 +0000 (18:57 -0500)]
[mono][wasm] Bundle assemblies as WebCIL (#79416)

Define a new container format for .NET assemblies that looks less like a Windows PE file. Use it for bundling assemblies in wasm projects.

* Implement WebCIL loader

  It will try to look for WebCIL formatted images instread of normal .dll files

* Checkpoint works on wasm sample; add design doc

* Push .dll->.webcil probing lower in the bundle logic

* Also convert satellite assemblies and implement satellite matching

* [wasm] don't leak .webcil image names to the debugger

   In particular this will make source and breakpoint URLs look like `dotnet://foo.dll/Foo.cs` which means that grabbing PDBs via source link will work, etc.

* Add PE DebugTableDirectory to webcil

   This is used to retrieve the PPDB data and/or the PDB checksum from an image.

   Refactor mono_has_pdb_checksum to support webcil in addition to PE images

* Implement a WebcilReader for BorwserDebugProxy like PEReader

  This needs some improvements:
   - add support for reading CodeView and EmbeddedPDB data
   - copy/paste less from the WebcilWriter task
   - copy/paste less from PEReader (will require moving WebcilReader to SRM)

* [debug] Match bundled pdbs if we're looking up .webcil files

  The pdbs are registered by wasm with a notional .dll filename. if the debugger does a lookup using a .webcil name instead, allow the match

* Adjust debug directory entries when writing webcil files

   the PE COFF debug directory entries contain a 'pointer' field which is an offset from the start of the file.

   When writing the webcil file, the header is typically smaller than a PE file, so the offsets are wrong.  Adjust the offsets by the size of the file.

   We assume (and assert) the debug directory entries actually point at some PE COFF sections in the PE file (as opposed to somewhere past the end of the known PE data).

   When writing, we initially just copy all the sections directly, then seek to where the debug directory entries are, and overwrite them with updated entries that have the correct 'pointer'

* Fix bug in WebcilWriter

   Stream.CopyTo takes a buffer size, not the number of bytes to copy.

* bugfix: the debug directory is at pe_debug_rva not at the CLI header

* skip debug fixups if there's no debug directory

* WebcilReader: implement CodeView and Emebedded PPDB support

* [WBT] Add UseWebcil option (default to true)

* rename WebcilWriter -> WebcilConverter [NFC]

* fixup AssemblyLoadedEventTest

* hack: no extension on assembly for breakpoint

* pass normal .dll name for MainAssemblyName in config

   let the runtime deal with it - bundle matching will resolve it to the .webcil file

* Wasm.Debugger.Tests: give CI 10 more minutes

* Add Microsoft.NET.WebAssembly.Webcil assembly project

   Mark it as shipping, but not shipping a nuget package.

   The idea is that it will be shipped along with the WasmAppBuilder msbuild task, and with the BrowserDebugProxy tool.

* Move WebcilConverter to Microsoft.NET.WebAssembly.Webcil

* Move WebcilReader to Microsoft.NET.WebAssembly.Webcil

   delete the duplicated utility classes

* make the webcil magic and version longer

* Code style improvements from review

* Improve some exception messages, when possible

* Suggestings from code review

* Add WasmEnableWebcil msbuild property.  Off by default

* Build non-wasm runtimes without .webcil support

* Run WBT twice: with and without webcil

   This is a total of 4 runs: with and without workloads x with and without webcil

* do the cartesian product correctly in msbuild

* also add webcil to template projects

* environment variable has to be non-null and "true"

   We set it to "false" sometimes

* Fix wasm work items

   They should be the same whether or not webcil is used.  Just the WorkloadItemPrefix should be used to change the name.

* Update src/libraries/sendtohelix-wasm.targets

* PInvokeTableGeneratorTests: don't try to use the net472 WasmAppBuilder

   Look for the default target framework subdirectory under the tasks directory in the runtime pack when trying to find the tasks dll. In particular don't try to load the net472 version on modern .NET

* PInvokeTableGeneratorTests: Add more diagnostic output if tasksDir is not found

* simplify prefix comparison in bundled_assembly_match

* WasmAppBuilder improve logging

   Just emit a single Normal importance message about webcil; details as Low importance.

* Add missing using

Co-authored-by: Ankit Jain <radical@gmail.com>
Co-authored-by: Larry Ewing <lewing@microsoft.com>
21 months ago[loader] Set status on success (#80949)
Aleksey Kliger (λgeek) [Sat, 21 Jan 2023 21:40:41 +0000 (16:40 -0500)]
[loader] Set status on success (#80949)

Emebedders that call `mono_assembly_load_from_full` may observe a
non-NULL return value and an uninitialized MonoImageOpenStatus, which
may lead to incorrect diagnostics in code like:

```
MonoImageOpenStatus status;
MonoAssembly *assembly = mono_assembly_load_from_full (image, name,
status, refonly);
if (!assembly || status != MONO_IMAGE_OK) {
   fprintf(stderr, "Failure due to: %s\n", mono_image_strerror (status));
   abort();
}
```
Which will print `Failure due to: Internal error`

Addresses https://github.com/xamarin/xamarin-android/issues/7658

21 months agoJIT: fix jit stress failures in `fgSetBlockOrder` (#80975)
Andy Ayers [Sat, 21 Jan 2023 20:50:04 +0000 (12:50 -0800)]
JIT: fix jit stress failures in `fgSetBlockOrder` (#80975)

Defer asserting that bbNums are ordered until we know if we're optimizing
(and hence have computed dominators).

Fixes #80974.

21 months agoUpdate dependencies from https://github.com/dotnet/roslyn build 20230120.10 (#80971)
dotnet-maestro[bot] [Sat, 21 Jan 2023 18:45:00 +0000 (12:45 -0600)]
Update dependencies from https://github.com/dotnet/roslyn build 20230120.10 (#80971)

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

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
21 months ago[mono][aot] Extend Mono.ValueTuple to 7 arguments. (#80972)
Zoltan Varga [Sat, 21 Jan 2023 18:25:07 +0000 (13:25 -0500)]
[mono][aot] Extend Mono.ValueTuple to 7 arguments. (#80972)

This fixes a crash in the System.Text.RegularExpression tests on wasm+aot.

21 months ago[mono][interp] Ensure call offset is greater than offset of other active calls (...
Milos Kotlar [Sat, 21 Jan 2023 08:03:21 +0000 (09:03 +0100)]
[mono][interp] Ensure call offset is greater than offset of other active calls (#80728)

* Add deferred call resolution for active calls. The base offset of the call must be greater than the offset of any argument of other active call args. The base offset is computed as max offset of all call offsets on which the call depends. Stack ensures that all call offsets on which the call depends are calculated before the call in question, by deferring calls from the last to the first one.

* Move call_args to InterpCallInfo struct. Allocate InterpCallInfo per call instruction.

21 months agoNativeAOT: avoid helper calls for nongc static fields (#79709)
Egor Bogatov [Sat, 21 Jan 2023 07:59:10 +0000 (08:59 +0100)]
NativeAOT: avoid helper calls for nongc static fields (#79709)

Co-authored-by: SingleAccretion <62474226+SingleAccretion@users.noreply.github.com>