platform/upstream/dotnet/runtime.git
23 months agoAdd tests for exercising certificates with platform provider keys (#80558)
Kevin Jones [Mon, 16 Jan 2023 10:36:41 +0000 (05:36 -0500)]
Add tests for exercising certificates with platform provider keys (#80558)

* Add tests for exercising certificate with platform provider keys.

* Refactor CngKey PCP test key creation

23 months ago[QUIC] Log msquic version and commit hash to event log and to test output. (#80612)
Marie Píchová [Mon, 16 Jan 2023 09:41:25 +0000 (10:41 +0100)]
[QUIC] Log msquic version and commit hash to event log and to test output. (#80612)

* Log msquic version and commit hash to event log and to test output.

* Feedback

23 months agoMake reading custom attributes in NativeLibrary avoidable (#80677)
Michal Strehovský [Mon, 16 Jan 2023 09:17:28 +0000 (18:17 +0900)]
Make reading custom attributes in NativeLibrary avoidable (#80677)

Contributes to #80165.

Unfortunately, the `NativeLibrary` APIs contain a pattern where one can skip providing a parameter to the API and then something expensive (custom attribute reading) will happen to compute the value. We have a `TryLoad` call in a hello world that does provide the value (in GlobalizationMode.cs). Make it possible to avoid the expensive thing internally.

23 months agoRename System.Text.Json test exclusion (#80676)
Michal Strehovský [Mon, 16 Jan 2023 08:59:30 +0000 (17:59 +0900)]
Rename System.Text.Json test exclusion (#80676)

23 months agoAdd logger and tests for xml parsing in NativeAOT (#80470)
Tlakaelel Axayakatl Ceja [Mon, 16 Jan 2023 04:36:34 +0000 (20:36 -0800)]
Add logger and tests for xml parsing in NativeAOT  (#80470)

Add logger to LinkerXml Processing
Hookup xml reading into testing infra
Port linker xml tests to test cases
Document differences in testing between linker and NativeAOT
Open issues in NativeAOT for remaining differences
Don't throw if not able to resolve assembly
Add a comment on why the MarkAndPreserve method is implemented differently from illink

23 months agoUpdate our inline observations to special case a few more intrinsics (#80637)
Tanner Gooding [Sun, 15 Jan 2023 22:25:39 +0000 (14:25 -0800)]
Update our inline observations to special case a few more intrinsics (#80637)

* Update our inline observations to special case a few more intrinsics

* Apply formatting patch

23 months ago[API Implementation]: Deconstruct for DateTime, DateTimeOffset, DateOnly, and TimeOnl...
Robin Lindner [Sun, 15 Jan 2023 22:11:50 +0000 (23:11 +0100)]
[API Implementation]: Deconstruct for DateTime, DateTimeOffset, DateOnly, and TimeOnly (#79499)

Closes https://github.com/dotnet/runtime/issues/24601

23 months agoBe more conservative with peephole optimization (#80645)
Bruce Forstall [Sun, 15 Jan 2023 18:48:05 +0000 (10:48 -0800)]
Be more conservative with peephole optimization (#80645)

Do not allow any peephole optimization between a NOGC and
non-NOGC IG.

This introduces a very few diffs, all regressions and none
existing GC holes, where a register load as the first instruction
of a NOGC region is not optimized. These mostly look like cases
where we zero initialize a struct then copy the struct to another
stack-based struct. If we could forward-prop the zero that might
eliminate most of the diffs.

The check on `emitForceNewIG` introduced in #78074 is still
required, as that is used to "exit" a NOGC region without actually
creating a new IG without the NOGC flag.

23 months agoUse ROS<long> in FormattingHelpers instead of ROS<byte> (#80668)
Egor Bogatov [Sun, 15 Jan 2023 18:46:22 +0000 (19:46 +0100)]
Use ROS<long> in FormattingHelpers instead of ROS<byte> (#80668)

23 months agoRemove duplicate function (#80643)
Bruce Forstall [Sun, 15 Jan 2023 18:44:13 +0000 (10:44 -0800)]
Remove duplicate function (#80643)

Remove function `emitGetInstrDescSizeSC()`, only used on arm,
and replace uses by the identical `emitGetInstrDescSize()`.

23 months agoHandle float/double for RVA[cns] optimization in fgValueNumberConstLoad (#80661)
Egor Bogatov [Sun, 15 Jan 2023 16:47:52 +0000 (17:47 +0100)]
Handle float/double for RVA[cns] optimization in fgValueNumberConstLoad (#80661)

23 months ago[wasm] Quote illink substitutions path (#80657)
Radek Doulik [Sun, 15 Jan 2023 16:08:29 +0000 (17:08 +0100)]
[wasm] Quote illink substitutions path (#80657)

23 months agoAdd ability statically link OpenSSL (#80380)
Andrii Kurdiumov [Sun, 15 Jan 2023 07:15:22 +0000 (13:15 +0600)]
Add ability statically link OpenSSL (#80380)

* Add ability statically link OpenSSL

This setup works if I apply this as local customizations, I do not sure that I use OpenSSL in most secure way, I do not competent. This setup and StaticExecutable=true allow package just EXE file + /etc/ssl/certs/ folder in Docker

* Share build scripts across Globalization and OpenSSL

* Add warning

Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
23 months agoFix some low-hanging HWIntrinsic issues (#80626)
Tanner Gooding [Sun, 15 Jan 2023 06:13:25 +0000 (22:13 -0800)]
Fix some low-hanging HWIntrinsic issues (#80626)

* Ensure isSimdAsHWIntrinsic is false for Vector64/128/256.WithElement

* Ensure AsVector2 and AsVector3 are intrinsic

* Ensure AsVector128(Vector2) and AsVector128(Vector3) are handled as intrinsic

* Ensure Vector64/128/256.AsNInt and AsNUInt are handled as intrinsic

* Ensure Vector*<T>.IsSupported is handled as intrinsic

* Ensure get_Count for Vector64/128/256<T> and Vector<T> is handled as intrinsic

* Apply formatting patch

* Ensure the right simdSize is selected for AsVector128

* Ensure AsVector2/3 are correctly handled in lowering

* Ensure AsVector2 passes in op1 on Arm64

23 months ago[mono][wasm] Avoid emitting the eh info table, its not used on wasm. (#80653)
Zoltan Varga [Sun, 15 Jan 2023 02:31:53 +0000 (21:31 -0500)]
[mono][wasm] Avoid emitting the eh info table, its not used on wasm. (#80653)

23 months agoAdd support for llvm linker (lld) (#80613)
Adeel Mujahid [Sat, 14 Jan 2023 22:23:46 +0000 (00:23 +0200)]
Add support for llvm linker (lld) (#80613)

23 months agoFix GC hole in newly added test (#80630)
Jakob Botsch Nielsen [Sat, 14 Jan 2023 18:51:43 +0000 (19:51 +0100)]
Fix GC hole in newly added test (#80630)

GC stress is red after 78ccdaeeb4ccc5d0eff36b2eadc5e1cb07403fcd due to a
delegate not being kept alive.

23 months agoRemove forward slash in trimmer args (#80631)
Larry Ewing [Sat, 14 Jan 2023 16:23:17 +0000 (10:23 -0600)]
Remove forward slash in trimmer args (#80631)

23 months agoSet FieldSeq in CreateSpan (#80622)
Egor Bogatov [Sat, 14 Jan 2023 10:43:56 +0000 (11:43 +0100)]
Set FieldSeq in CreateSpan (#80622)

23 months agoAllow eliminating virtual methods on abstract classes (#80607)
Michal Strehovský [Sat, 14 Jan 2023 06:09:05 +0000 (15:09 +0900)]
Allow eliminating virtual methods on abstract classes (#80607)

Allow removing method bodies of virtual methods on abstract classes when the methods were overriden by descendants.

E.g.

```csharp
Base b = new Derived();
b.Expensive();

abstract class Base
{
    public virtual void Expensive() { expensive stuff; }
}

class Derived : Base
{
    public override void Expensive() { other stuff; }
}
```

The method body of `Base.Expensive` is unreachable, but we're still generating it because it's referenced from the `Base` vtable. Not anymore.

This is pretty much a rollback of https://github.com/dotnet/runtime/pull/66145 with a small fix in ILScanner that fixes the problematic scenarios. I don't know why I gave up so quickly last time.

What we do is instead of generating hard dependencies on the implementation method entrypoints in abstract classes, we delay the dependency on the entrypoint until a derived non-abstract MethodTable. If no non-abstract `MethodTable` that uses this shows up, the entrypoint turns into a throw helper.

23 months agoAdd additional IG assertion checking (#80599)
Bruce Forstall [Sat, 14 Jan 2023 06:08:48 +0000 (22:08 -0800)]
Add additional IG assertion checking (#80599)

* Add additional IG assertion checking

Especially, check various IG flags to ensure illegal combinations
do not occur.

* Feedback

23 months ago[PERF] Fix errors from lowercase OS names (#80629)
Parker Bibus [Sat, 14 Jan 2023 00:48:25 +0000 (16:48 -0800)]
[PERF] Fix errors from lowercase OS names (#80629)

* Change AOT artifacts path to use lowercase linux as the os names were recently normalized to lowercase.
* Add ios fix for the same issue of os needing to be lowercase.

23 months agoDont produce ILLink packages from runtime til preview 2 (#80627)
Tlakaelel Axayakatl Ceja [Fri, 13 Jan 2023 23:29:30 +0000 (15:29 -0800)]
Dont produce ILLink packages from runtime til preview 2 (#80627)

23 months agoUse weak handle for the back reference to EventProvider (#80482)
Jan Kotas [Fri, 13 Jan 2023 23:20:20 +0000 (15:20 -0800)]
Use weak handle for the back reference to EventProvider (#80482)

* Use weak handle for the back reference to EventProvider

This avoids leak when the event provider is orphaned without explicit unregistration.

Fixes #80450

* Delete unnecessary IEventProvider interface

Repurpose no-op event provider as a base class

* Fix warning on wasm

23 months ago[mono][aot] Simplify the dedup code. (#80442)
Zoltan Varga [Fri, 13 Jan 2023 20:11:05 +0000 (15:11 -0500)]
[mono][aot] Simplify the dedup code. (#80442)

Instead of passing state around in a MonoAotState structure, use a few
global variables.

23 months agoMake some tests use single-file publish (#80603)
Elinor Fung [Fri, 13 Jan 2023 16:37:08 +0000 (08:37 -0800)]
Make some tests use single-file publish (#80603)

23 months agoUse ArgumentOutOfRangeException.ThrowIf helpers in more places (#80355)
Stephen Toub [Fri, 13 Jan 2023 16:05:00 +0000 (11:05 -0500)]
Use ArgumentOutOfRangeException.ThrowIf helpers in more places (#80355)

* Use ArgumentOutOfRangeException.ThrowIf helpers in more places

* Apply suggestions from code review

Co-authored-by: Buyaa Namnan <buyankhishig.namnan@microsoft.com>
Co-authored-by: Buyaa Namnan <buyankhishig.namnan@microsoft.com>
23 months agoUse Roslyn support for RuntimeHelpers.CreateSpan (or field caching downlevel) (#79461)
Stephen Toub [Fri, 13 Jan 2023 16:04:50 +0000 (11:04 -0500)]
Use Roslyn support for RuntimeHelpers.CreateSpan (or field caching downlevel) (#79461)

23 months agoJIT: Enable edge based profiles for all scenarios (#80481)
Andy Ayers [Fri, 13 Jan 2023 16:02:14 +0000 (08:02 -0800)]
JIT: Enable edge based profiles for all scenarios (#80481)

Enable edge based profiles for OSR, partial compilation, and optimized plus
instrumented cases.

For OSR this requires deferring flow graph modifications until after we have
built the initial probe list, so that the initial list reflects the entirety
of the method. This set of candidate edge probes is thus the same no matter how
the method is compiled. A given compile may schematize a subset of these probes
and materialize a subset of what gets schematized; this is tolerated by the PGO
mechanism provided that the initial instrumented jitting produces a schema which
is a superset of the schema produced by any subsequent instrumented rejitting.
This is normally the case.

Partial compilation may still need some work to ensure full schematization but
it is currently off by default. Will address this subsequently.

For optimized compiles we give the EfficientEdgeCountInstrumentor the same kind
of probe relocation abilities that we have in the BlockCountInstrumentor. In
particular we need to move probes that might appear in return blocks that follow
implicit tail call blocks, since those return blocks must remain empty.

The details on how we do this are a bit different but the idea is the same: we
create duplicate copies of any probe that was going to appear in the return block
and instead instrument each pred. If the pred reached the return via a critical
edge, we split the edge and put the probe there. This analysis relies on cheap
preds, so to ensure we can use them we move all the critial edge splitting so it
happens before we need the cheap pred lists.

The ability to do block profiling is retained but will no longer be used without
special config settings.

There were also a few bug fixes in the spanning tree visitor. It must visit a
superset of the blocks we end up importing and was missing visits in some cases.

This should improve jit time and code quality for instrumented code.

Fixes #47942.
Fixes #66101.
Contributes to #74873.

23 months agoEmit mneg for mul+neg on Arm64 (#79550)
SwapnilGaikwad [Fri, 13 Jan 2023 15:30:06 +0000 (15:30 +0000)]
Emit mneg for mul+neg on Arm64 (#79550)

23 months agoHave SIMD Load/Store use GT_IND and GT_ASG where possible (#80411)
Tanner Gooding [Fri, 13 Jan 2023 15:15:28 +0000 (07:15 -0800)]
Have SIMD Load/Store use GT_IND and GT_ASG where possible (#80411)

* Moving the LoadVector intrinsics to use `gtNewSimdLoad*Node` helper APIs

* Switching SimdLoadNode to return GT_IND

* Merge separate imp*Intrinsic paths on xarch into impSpecialIntrinsic

* Updating the LoadVector64/128/256 APIs of Sse/Sse2/Avx and AdvSimd to use gtNewSimdLoadNode

* Moving the StoreVector intrinsics to use `gtNewSimdStore*Node` helper APIs

* Switching SimdStoreNode to return GT_ASG

* Updating the Store APIs of Sse/Sse2/Avx and AdvSimd to use gtNewSimdStoreNode

* Make the SIMD load/store instruction consistent between VEX and non-VEX

* Use GTF_REVERSE_OPS instead of impSpillSideEffect

* Applying formatting patch

* Responding to PR feedback

* Revert "Use GTF_REVERSE_OPS instead of impSpillSideEffect"

This reverts commit 0c557822e37405e96762f1403ecf98020d17a11a.

* Remove an unnecessary assert for gtNewSimdLoad/StoreNode

23 months agoFixed Typo (#80609)
Divan van Zyl [Fri, 13 Jan 2023 13:05:47 +0000 (15:05 +0200)]
Fixed Typo (#80609)

23 months ago[main] Update dependencies from 9 repositories (#80429)
dotnet-maestro[bot] [Fri, 13 Jan 2023 11:01:49 +0000 (12:01 +0100)]
[main] Update dependencies from 9 repositories (#80429)

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

Microsoft.NETCore.Runtime.ICU.Transport
 From Version 8.0.0-alpha.1.23056.1 -> To Version 8.0.0-alpha.1.23059.1

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

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

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

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.23059.1 -> To Version 8.0.0-beta.23059.2

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

Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers
 From Version 3.3.4-beta1.23058.2 -> To Version 3.3.4-beta1.23059.1

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

Microsoft.DotNet.HotReload.Utils.Generator.BuildTool
 From Version 1.1.0-alpha.0.22628.1 -> To Version 1.1.0-alpha.0.23059.1

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

Microsoft.NET.Workload.Emscripten.net7.Manifest-8.0.100
 From Version 8.0.0-alpha.1.23054.1 -> To Version 8.0.0-alpha.1.23061.1

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

Microsoft.DotNet.Cecil , Microsoft.DotNet.Cecil.Pdb
 From Version 0.11.4-alpha.23053.1 -> To Version 0.11.4-alpha.23060.1

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

Microsoft.DotNet.HotReload.Utils.Generator.BuildTool
 From Version 1.1.0-alpha.0.22628.1 -> To Version 1.1.0-alpha.0.23061.2

* Update dependencies from https://github.com/dotnet/llvm-project build 20230111.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.22626.2 -> To Version 14.0.0-alpha.1.23061.1

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

optimization.linux-arm64.MIBC.Runtime , optimization.linux-x64.MIBC.Runtime , optimization.windows_nt-arm64.MIBC.Runtime , optimization.windows_nt-x64.MIBC.Runtime , optimization.windows_nt-x86.MIBC.Runtime , optimization.PGO.CoreCLR
 From Version 1.0.0-prerelease.22511.6 -> To Version 1.0.0-prerelease.23061.7

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
23 months agoEnable specifying custom native main source with AppleAppBuilderTask (#80546)
Ivan Povazan [Fri, 13 Jan 2023 09:23:19 +0000 (10:23 +0100)]
Enable specifying custom native main source with AppleAppBuilderTask (#80546)

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

23 months ago[main] Update dependencies from dotnet/linker (#79449)
dotnet-maestro[bot] [Fri, 13 Jan 2023 08:15:45 +0000 (09:15 +0100)]
[main] Update dependencies from dotnet/linker (#79449)

* Update dependencies from https://github.com/dotnet/linker build 20221208.1

Microsoft.NET.ILLink.Tasks
 From Version 7.0.100-1.22606.1 -> To Version 8.0.100-1.22608.1

* Update dependencies from https://github.com/dotnet/linker build 20221209.1

Microsoft.NET.ILLink.Tasks
 From Version 7.0.100-1.22606.1 -> To Version 8.0.100-1.22609.1

* Update dependencies from https://github.com/dotnet/linker build 20221212.1

Microsoft.NET.ILLink.Tasks
 From Version 7.0.100-1.22606.1 -> To Version 8.0.100-1.22612.1

* Update dependencies from https://github.com/dotnet/linker build 20221212.2

Microsoft.NET.ILLink.Tasks
 From Version 7.0.100-1.22606.1 -> To Version 8.0.100-1.22612.2

* Update dependencies from https://github.com/dotnet/linker build 20221219.1

Microsoft.NET.ILLink.Tasks
 From Version 7.0.100-1.22606.1 -> To Version 8.0.100-1.22619.1

* Update dependencies from https://github.com/dotnet/linker build 20230102.2

Microsoft.NET.ILLink.Tasks
 From Version 7.0.100-1.22606.1 -> To Version 8.0.100-1.23052.2

* Update dependencies from https://github.com/dotnet/linker build 20230104.1

Microsoft.NET.ILLink.Tasks
 From Version 7.0.100-1.22606.1 -> To Version 8.0.100-1.23054.1

* Update dependencies from https://github.com/dotnet/linker build 20230105.2

Microsoft.NET.ILLink.Tasks
 From Version 7.0.100-1.22606.1 -> To Version 8.0.100-1.23055.2

* Update dependencies from https://github.com/dotnet/linker build 20230109.1

Microsoft.NET.ILLink.Tasks
 From Version 7.0.100-1.22606.1 -> To Version 8.0.100-1.23059.1

* Update dependencies from https://github.com/dotnet/linker build 20230110.1

Microsoft.NET.ILLink.Tasks
 From Version 7.0.100-1.22606.1 -> To Version 8.0.100-1.23060.1

* Update dependencies from https://github.com/dotnet/linker build 20230112.1

Microsoft.NET.ILLink.Tasks
 From Version 7.0.100-1.22606.1 -> To Version 8.0.100-1.23062.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
23 months agoLocalized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 208762...
dotnet bot [Fri, 13 Jan 2023 08:08:54 +0000 (00:08 -0800)]
Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2087627 (#80505)

* Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2085603

* Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2085846

* Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2087105

* Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2087404

23 months agoDispose archive stream after the list of DataStreams (#80572)
David Cantú [Fri, 13 Jan 2023 05:23:15 +0000 (23:23 -0600)]
Dispose archive stream after the list of DataStreams (#80572)

* Dispose archive stream after the list of DataStreams

* Add tests for TarReader.DisposeAsync properly disposing underlying stream

23 months agodelete enum support for bool as an underlying type (#79962)
Badre BSAILA [Fri, 13 Jan 2023 05:17:13 +0000 (06:17 +0100)]
delete enum support for bool as an underlying type (#79962)

* delete enum support for bool as an underlying type

* keep loading bool backed enum tests

* rollback changes in the type loader

* rollback additionaml test

* rollback code optimized by jit

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
23 months agoRemoving old variable debug info tracking system (#80537)
Brian Bohe [Fri, 13 Jan 2023 04:18:46 +0000 (01:18 -0300)]
Removing old variable debug info tracking system (#80537)

* Removing ScopeInfo variable debug info

Variable live range replaced it on 2019.

* Removing VaribleLiveRange preprocessing flag

* Adding #if defined(DEBUG)

* Using ifdef in place of defined

23 months ago[wasm] Move microbenchmarks, and blazor SOD runs to net8.0 (#80308)
Ankit Jain [Fri, 13 Jan 2023 02:42:23 +0000 (21:42 -0500)]
[wasm] Move microbenchmarks, and blazor SOD runs to net8.0 (#80308)

* [wasm] perf: generate, and collect binlogs

* [wasm] perf: remove workaround to allow building for net8.0 with 8.0 sdk

* [wasm] perf: revert to using latest v8

- this is because jsvu fails to generate a wrapper for the specific
  version, because this version of jsvu (2.0.1) is broken with node 14.x
  . And node 18.x builds are not built for ubuntu 18.04

23 months agoFix security transparency issue (#80478)
Noah Falk [Fri, 13 Jan 2023 01:32:26 +0000 (17:32 -0800)]
Fix security transparency issue (#80478)

* Remove APTCA

None of our assemblies support partial trust usage any longer. Removing
the APTCA attribute from S.D.DS so that it follows the pattern.

Fixes #79749

* Remove more code for partial trust

23 months agoPEReader doesn't work with "IsLoadedImage" and "PrefetchMetadata" options (#80106)
Badre BSAILA [Fri, 13 Jan 2023 01:16:49 +0000 (02:16 +0100)]
PEReader doesn't work with "IsLoadedImage" and "PrefetchMetadata" options (#80106)

* PEReader doesn't work with "IsLoadedImage" and "PrefetchMetadata" options

* Apply suggestions from code review

Co-authored-by: MartyIX <203266+MartyIX@users.noreply.github.com>
Co-authored-by: Buyaa Namnan <buyankhishig.namnan@microsoft.com>
23 months agoMoving GetCurrentProcessorId() to shared (#80532)
Vladimir Sadov [Fri, 13 Jan 2023 00:25:57 +0000 (16:25 -0800)]
Moving GetCurrentProcessorId() to shared (#80532)

* move GetCurrentProcessorId() to shared

* delete more native code

* PR feedback

* fix unix build

* unnecessary HAVE_SCHED_GETCPU

23 months agoMake System.Collections.Immutable adhere to repo's var policy (#80556)
Stephen Toub [Fri, 13 Jan 2023 00:25:49 +0000 (19:25 -0500)]
Make System.Collections.Immutable adhere to repo's var policy (#80556)

* Make System.Collections.Immutable consistent with repo's var policy

* Fix vars that were just merged in new file

23 months agoUse MemoryExtensions.Equals in CharArrayHelpers.EqualsOrdinalAsciiIgnoreCase (#80561)
Stephen Toub [Fri, 13 Jan 2023 00:15:47 +0000 (19:15 -0500)]
Use MemoryExtensions.Equals in CharArrayHelpers.EqualsOrdinalAsciiIgnoreCase (#80561)

* Use MemoryExtensions.Equals in CharArrayHelpers.EqualsOrdinalAsciiIgnoreCase

* Delete CharArrayHelpers.EqualsOrdinalAsciiIgnoreCase/Trim

Just use span directly.

23 months agoMove a regression test out of CI (#80399)
Andrew Au [Thu, 12 Jan 2023 23:13:59 +0000 (15:13 -0800)]
Move a regression test out of CI (#80399)

Co-authored-by: Bruce Forstall <brucefo@microsoft.com>
23 months agoAdd support for JsonUnmappedMemberHandling (#79945)
Eirik Tsarpalis [Thu, 12 Jan 2023 22:41:19 +0000 (22:41 +0000)]
Add support for JsonUnmappedMemberHandling (#79945)

* Add support for JsonUnmappedMemberHandling.

* Address feedback

* Ignore global UnmappedMemberHandling setting when a JsonExtensionDataAttribute is specified.

* Fix VerifyOptionsEqual method.

* Update src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfo.cs

Co-authored-by: Krzysztof Wicher <mordotymoja@gmail.com>
Co-authored-by: Krzysztof Wicher <mordotymoja@gmail.com>
23 months agoReplace unnecessary string.Replace in ManifestBuilder.GetTypeName (#80557)
Stephen Toub [Thu, 12 Jan 2023 22:40:26 +0000 (17:40 -0500)]
Replace unnecessary string.Replace in ManifestBuilder.GetTypeName (#80557)

23 months agoImplement Shuffle, GetString, and GetItems on Random{NumberGenerator} (#78598)
Kevin Jones [Thu, 12 Jan 2023 22:38:15 +0000 (17:38 -0500)]
Implement Shuffle, GetString, and GetItems on Random{NumberGenerator} (#78598)

* Implement Shuffle, GetString, and GetItems.

* Cleanup and additional tests

* Use where possible

* Code review feedback

* Additional uses of Random throughout tests

* Feedback on documentation

* Use ref to span to get span in string.Create.

Co-authored-by: Benjamin Moir <DaZombieKiller@users.noreply.github.com>
Co-authored-by: Theodore Tsirpanis <teo@tsirpanis.gr>
Co-authored-by: Michał Petryka <35800402+MichalPetryka@users.noreply.github.com>
* Code review feedback

* Code review feedback

* Apply suggestions from code review

Co-authored-by: Dan Moseley <danmose@microsoft.com>
* Use AssertExtensions over Assert

* Improve comment

* No idea where AssertHexString came from

* Update src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RandomNumberGenerator.cs

Co-authored-by: Jeremy Barton <jbarton@microsoft.com>
Co-authored-by: Benjamin Moir <DaZombieKiller@users.noreply.github.com>
Co-authored-by: Theodore Tsirpanis <teo@tsirpanis.gr>
Co-authored-by: Michał Petryka <35800402+MichalPetryka@users.noreply.github.com>
Co-authored-by: Dan Moseley <danmose@microsoft.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Co-authored-by: Jeremy Barton <jbarton@microsoft.com>
23 months agoFix most violations of new CA1859 (#80335)
Stephen Toub [Thu, 12 Jan 2023 19:58:26 +0000 (14:58 -0500)]
Fix most violations of new CA1859 (#80335)

* Fix most violations of new CA1859

The analyzer recommends replacing uses of types with other types that could reduce overheads (e.g. `List<T>` instead of `IList<T>`).  This fixes most of the violations we currently have of the rule, but it doesn't enable it yet because there are too many false positives; fixes for those are in-flight.  Some of these replacements won't help with perf (e.g. using `ArgumentException` instead of `Exception` as the return type of a throw helper create method), but there's little harm to them, and some of them do avoid overheads like allocation (e.g. foreach'ing something typed as `Dictionary<>` instead of `IDictionary<>` will avoid an enumerator allocation, accessing `Count` on a `List<T>` instead of `IList<T>` will avoid an interface dispatch, etc.)

* Fix mistaken replacement

23 months agoCreate analyzer in ComInterfaceGenerator to enforce the generator is used with IUnkno...
Jackson Schuster [Thu, 12 Jan 2023 19:48:25 +0000 (11:48 -0800)]
Create analyzer in ComInterfaceGenerator to enforce the generator is used with IUnknown only  (#78189)

Creates an analyzer that warns if the GeneratedComInterfaceAttribute is
used with InterfaceTypeAttribute that has an argument that is not
'InterfaceIsIUnknown'
Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
Co-authored-by: Elinor Fung <elfung@microsoft.com>
23 months agoAdd tests for frozen collections (#80395)
Martin Taillefer [Thu, 12 Jan 2023 18:53:20 +0000 (10:53 -0800)]
Add tests for frozen collections (#80395)

Co-authored-by: Martin Taillefer <mataille@microsoft.com>
23 months agoFix Configuration to ensure calling the property setters. (#80438)
Tarek Mahmoud Sayed [Thu, 12 Jan 2023 16:43:01 +0000 (08:43 -0800)]
Fix Configuration to ensure calling the property setters. (#80438)

23 months agoAdding the Vector512 and Vector512<T> types (#76642)
Tanner Gooding [Thu, 12 Jan 2023 16:33:52 +0000 (08:33 -0800)]
Adding the Vector512 and Vector512<T> types (#76642)

* Adding the Vector512 and Vector512<T> types

* Support properly packing Vector512<T>

* Responding to PR feedback and ensure Vector512 is treated as an HFA for Arm64

* Bring Vector512 inline with the new Vector64/128/256 APIs

* Adding support for generating the Vector512 tests

* Generate the Vector512 tests

* Ensure the ref assembly is up to date

* Fixing a couple JIT asserts

* Fixing tests to pass the right number of constructor parameters

* Ensure the HWIntrinsic test templates support 64-byte alignment

* Ensure the vector Dot tests correctly sum using pairs

* Ensure the Dot test computes the result pairs correctly

* Simplify the alignment check to avoid future churn

* Don't churn the Vector64/128/256 tests on the Vector512 PR

* Do update the Dot tests to have the updated validation

* Fix Vector128 divide by scalar

* Ensure field layout tests exist for Vector256 and Vector512

* Updating the R2R version from 8.0 to 9.0

* Ensure Vector512 tests are disabled in the same place as the Vector64/128/256 tests

* Remove a stray .

* Fixing the NativeAOT field layout tests

* Update an addition location where the R2R version is defined

* Disable Vector512 tests for llvmfullaot due to https://github.com/dotnet/runtime/issues/80467

* Increase the value of ngsharedvt-trampolines

* Move various HWIntrinsics to outerloop for unaccelerated platforms

* Ensure the HardwareIntrinsics tests are being filtered to outerloop where appropriate

Co-authored-by: Fan Yang <yangfan@microsoft.com>
23 months agoInvalidate buffered data when bypassing the FileStream cache (#80432)
Adam Sitnik [Thu, 12 Jan 2023 15:21:20 +0000 (16:21 +0100)]
Invalidate buffered data when bypassing the FileStream cache (#80432)

23 months agoGet entry assembly name from host for GetProcessInfo2 command during suspension ...
Elinor Fung [Thu, 12 Jan 2023 15:06:24 +0000 (07:06 -0800)]
Get entry assembly name from host for GetProcessInfo2 command during suspension (#80301)

- Host runtime contract returns entry assembly name based on managed
  app being run, empty string for non-app (component) scenarios
- ProcessInfo2 command falls back to querying for entry assembly name
  from host

23 months agoFix small buffer handling with the Platform Crypto Provider
Kevin Jones [Thu, 12 Jan 2023 14:52:25 +0000 (09:52 -0500)]
Fix small buffer handling with the Platform Crypto Provider

23 months agoFix timeout in regex source generated test (#80459)
Stephen Toub [Thu, 12 Jan 2023 14:35:12 +0000 (09:35 -0500)]
Fix timeout in regex source generated test (#80459)

* Fix timeout in regex source generated test

The test is using Roslyn to dynamically emit a Regex with the source generator, as we do throughout the test suite.  However, this test is about validating the default static regex timeout, and the Roslyn code itself uses a regex.  To work around this, this PR splits off the source generated test into its own dedicated one that doesn't rely on Roslyn.

* Fix .NET Framework test build

23 months agoFix NetFramework name in Directory.Build.targets (#80440)
Stephen Toub [Thu, 12 Jan 2023 14:34:56 +0000 (09:34 -0500)]
Fix NetFramework name in Directory.Build.targets (#80440)

23 months agoAddress feedback from #79828. (#80509)
Eirik Tsarpalis [Thu, 12 Jan 2023 14:26:32 +0000 (14:26 +0000)]
Address feedback from #79828. (#80509)

23 months agoFix build invocation on Windows without os param (#80544)
Viktor Hofer [Thu, 12 Jan 2023 14:09:40 +0000 (15:09 +0100)]
Fix build invocation on Windows without os param (#80544)

Regressed with https://github.com/dotnet/runtime/commit/2ca7cf7140ebfaa8e34732b529c194416b122e89

23 months ago[main] Update dependencies from dotnet/arcade (#80234)
dotnet-maestro[bot] [Thu, 12 Jan 2023 14:00:39 +0000 (15:00 +0100)]
[main] Update dependencies from dotnet/arcade (#80234)

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

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.23053.5 -> To Version 8.0.0-beta.23054.2

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

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.23053.5 -> To Version 8.0.0-beta.23055.2

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

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.23053.5 -> To Version 8.0.0-beta.23055.3

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

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.23053.5 -> To Version 8.0.0-beta.23056.4

* React to SDK change around linking

* Update NetCoreAppToolCurrent to net8.0

* Upgrade aspnetcoretoolcurrent as well

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

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.23053.5 -> To Version 8.0.0-beta.23058.1

* [wasm] WasmAppHost: fix new analyzer warning

`/__w/1/s/src/mono/wasm/host/WebServerStartup.cs(94,17): error ASP0019: Use IHeaderDictionary.Append or the indexer to append or set headers. IDictionary.Add will throw an ArgumentException when attempting to add a duplicate key. [/__w/1/s/src/mono/wasm/host/WasmAppHost.csproj]
`

* Fix CA1512 analyzer warnings

* fix

* React to aspnetcore analyzers

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

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.23053.5 -> To Version 8.0.0-beta.23059.1

* Update tfm in WasmApp.LocalBuild.props

* [wasm] Use dotnet version from global.json for helix

* Fix illink tests and react to analyzer

* Update hardcoded linker tfm

* Fix illink tests

The analyzer tests download a ref package, but its version must at least roughly match the version used to run the tests.
Since this updates the SDK to 8.0, update the tests to pick some 8.0 ref package.

Also the new compiler produces two new warnings in one case, so baselined those in the test.

* Fix ILLinker tests on NativeAOT

* Resolve analyzer warning in MonoLinkerTestsCasesExpectations

* Upgrade xunit runner tfm

* Delete dead property

* In NativeAOT common files with ILLink have ILLink format, meaning tabs instead of spaces

* Upgrade SDK because of "Failed to create CoreCLR"

"Failed to create CoreCLR, HRESULT: 0x80131524" during runtime test ILC invocation. Might be fixed with https://github.com/dotnet/runtime/commit/6c0c96ccc775cad4119e2d5d3a1797c4126b4533

* Update macOS version target triple

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Co-authored-by: Ankit Jain <radical@gmail.com>
Co-authored-by: vitek-karas <10670590+vitek-karas@users.noreply.github.com>
Co-authored-by: Tlakollo <tlcejava@microsoft.com>
23 months ago[mono] Fixed getting namespace names of array types. (#80426)
Jan Dupej [Thu, 12 Jan 2023 13:24:27 +0000 (14:24 +0100)]
[mono] Fixed getting namespace names of array types. (#80426)

* [mono] Fixed getting namespace names of array types. #42633

* [mono] Namespace getter icall of Type, code style.

* Reenabled TypeInfoTests.Namespace for Mono.

* [mono] Namespace for array types now works also for jagged arrays.

* [mono] Fixed Type.Namespace for enums.

* [mono] Fixed failing Microsoft.XmlSerializer.Generator.Tests.SgenCommandTest.

* Adding cases to TypeInfoTests.Namespace test.

23 months agoRemove two string.Replace calls from CreditCardAttribute.IsValid (#80523)
Stephen Toub [Thu, 12 Jan 2023 12:51:22 +0000 (07:51 -0500)]
Remove two string.Replace calls from CreditCardAttribute.IsValid (#80523)

23 months agoDisable `ExposedLocalsNumbering` (#80522)
SingleAccretion [Thu, 12 Jan 2023 06:14:36 +0000 (09:14 +0300)]
Disable `ExposedLocalsNumbering` (#80522)

* Disable the test

* Correct the exclusion path

Co-authored-by: Bruce Forstall <brucefo@microsoft.com>
Co-authored-by: Bruce Forstall <brucefo@microsoft.com>
23 months ago[wasm] Implement more jiterpreter opcodes (#80520)
Katelyn Gadd [Thu, 12 Jan 2023 03:42:01 +0000 (19:42 -0800)]
[wasm] Implement more jiterpreter opcodes (#80520)

* Implement the ADD_MUL indirect loads
* Implement floating point conditional branches
* Implement some intrinsics

23 months agoFix a few profiler related issues associated with frozen objects (#79563)
Andrew Au [Wed, 11 Jan 2023 23:25:37 +0000 (15:25 -0800)]
Fix a few profiler related issues associated with frozen objects (#79563)

23 months agoDecommit memory as needed (#79912)
Andrew Au [Wed, 11 Jan 2023 23:25:20 +0000 (15:25 -0800)]
Decommit memory as needed (#79912)

23 months agoConsistently use fgMakeMultiUse in the gtNewSimd*Node APIs (#80242)
Tanner Gooding [Wed, 11 Jan 2023 23:00:48 +0000 (15:00 -0800)]
Consistently use fgMakeMultiUse in the gtNewSimd*Node APIs (#80242)

* Consistently use fgMakeMultiUse in the gtNewSimd*Node APIs

* Apply formatting patch

* Ensure that the fgMakeMultiUse ordering is correct so the comma is evaluated first

* Apply formatting patch

* Ensure operand ordering is correct for SimdWiden

* Apply formatting patch

23 months agoJIT: Fix invalid last use propagation for implicit byrefs (#80489)
Jakob Botsch Nielsen [Wed, 11 Jan 2023 20:12:11 +0000 (21:12 +0100)]
JIT: Fix invalid last use propagation for implicit byrefs (#80489)

Fix #80488

23 months ago[mono][interp] Add a bitset with IL jump targets (#80136)
Milos Kotlar [Wed, 11 Jan 2023 20:06:16 +0000 (21:06 +0100)]
[mono][interp] Add a bitset with IL jump targets (#80136)

* add bitset for IL target jumps

* Enable disabled test

23 months agoChange github illink links (#80407)
Tlakaelel Axayakatl Ceja [Wed, 11 Jan 2023 19:59:14 +0000 (11:59 -0800)]
Change github illink links (#80407)

Change github illink links to point from dotnet/linker to dotnet/runtime
Delete scripts that clone illink into runtime since illink now lives in runtime
Create a forward link for error 1012 in illink, that leads users to open an issue in runtime

23 months agoLowercase TargetOS (#80164)
Viktor Hofer [Wed, 11 Jan 2023 16:58:32 +0000 (17:58 +0100)]
Lowercase TargetOS (#80164)

Follow-up on #32451
Follow-up on #80074

In #43651, the "Windows" OS name was lowercased to achieve target frameworks with RIDs in them. At that time, the original plan was to lowercase all TargetOS values but that had to be cut because of resources. This PR finishes that and updates build systems, YML, markdowns and managed components.

To not break existing developer workflows, the passed-in -os value is automatically lower-cased in the script entry points and validated in the msbuild entry point.

23 months agoRemove IETF RFC license info (#80506)
Lee Coward [Wed, 11 Jan 2023 16:46:06 +0000 (08:46 -0800)]
Remove IETF RFC license info (#80506)

guidfromname.cpp contains a reference to an IETF RFC draft. This needs to be clarified for downstream FOSS licensing scans by removing the draft reference.

This PR corrects the IETF RFC reference and retains the final published RFC references.

Resolves #79231

23 months agoAdds diagnostics to detect duplicated event names in LSG (#80460)
Allan Targino [Wed, 11 Jan 2023 15:29:18 +0000 (12:29 -0300)]
Adds diagnostics to detect duplicated event names in LSG (#80460)

fixes https://github.com/dotnet/runtime/issues/64667

23 months agoFix ILLink.Tasks package published multiple times (#80487)
Viktor Hofer [Wed, 11 Jan 2023 14:37:37 +0000 (15:37 +0100)]
Fix ILLink.Tasks package published multiple times (#80487)

23 months agoFix parsing the output of `ping` on Samsung phones (#80133)
Šimon Rozsíval [Wed, 11 Jan 2023 14:35:33 +0000 (15:35 +0100)]
Fix parsing the output of `ping` on Samsung phones (#80133)

* Account for different formats of ping output

* Avoid allocation

23 months agoWASI gc - fix stack range (#80456)
Pavel Savara [Wed, 11 Jan 2023 13:25:06 +0000 (14:25 +0100)]
WASI gc - fix stack range (#80456)

* WASI gc - fix stack range (#80456)
* feedback

23 months agoFix delegate allocation in CachingContext.GetOrAddJsonTypeInfo (#80437)
Stephen Toub [Wed, 11 Jan 2023 13:17:37 +0000 (08:17 -0500)]
Fix delegate allocation in CachingContext.GetOrAddJsonTypeInfo (#80437)

* Fix delegate allocation in CachingContext.GetOrAddJsonTypeInfo

* Address PR feedback

23 months agoRemove some temp string allocations from Uri (#80469)
Stephen Toub [Wed, 11 Jan 2023 12:23:28 +0000 (07:23 -0500)]
Remove some temp string allocations from Uri (#80469)

23 months agoRemove some split/substring/trim allocations from System.Net.* (#80471)
Stephen Toub [Wed, 11 Jan 2023 12:21:15 +0000 (07:21 -0500)]
Remove some split/substring/trim allocations from System.Net.* (#80471)

23 months agoFix numbering of exposed `LCL_VAR`s (#79772)
SingleAccretion [Wed, 11 Jan 2023 12:11:57 +0000 (15:11 +0300)]
Fix numbering of exposed `LCL_VAR`s (#79772)

* Fix numbering of exposed LCL_VARs

The conservative VN must be unique for different uses lest
we risk running into memory safety issues, by, e. g. removing
range checks based on "racy" data.

* Add a test

Without the fix, 4 out of 5 runs fail on my machine.

* Succeed the test on platforms without threads

No threading => no races.

* Disable on Mono interp

23 months agoTransform local indirections off of `TYP_BLK` locals; support numbering exposed LCL_F...
SingleAccretion [Wed, 11 Jan 2023 12:10:23 +0000 (15:10 +0300)]
Transform local indirections off of `TYP_BLK` locals; support numbering exposed LCL_FLDs (#79771)

23 months agoFix CPU_COUNT check for FreeBSD 13.1+ (#77867)
Thefrank [Wed, 11 Jan 2023 10:29:31 +0000 (02:29 -0800)]
Fix CPU_COUNT check for FreeBSD 13.1+ (#77867)

HAVE_GNU_CPU_COUNT has always incorrectly failed for FreeBSD.

This has not been an issue until FreeBSD 13.1 with its addition of `sched_getaffinity` and `sched_setaffinity`.

23 months agoJIT: Add a pass of early liveness and use it for forward sub and last-use copy elisio...
Jakob Botsch Nielsen [Wed, 11 Jan 2023 08:19:46 +0000 (09:19 +0100)]
JIT: Add a pass of early liveness and use it for forward sub and last-use copy elision for implicit byrefs (#79346)

This runs a pass of liveness right after local morph and uses it for forward sub and to omit copies of structs when passed as implicit byrefs at their last use.

Fix #76069
Fix #75206
Fix #65025
Fix #9839

This PR introduces the following new JIT invariants:

* When optimizing, local morph will now thread all locals into a tree list accessed by Statement::LocalsTreeList. This tree list is kept valid starting from local morph and ending with forward sub. There is no memory impact of this since we reuse the GenTree::gtPrev and GenTree::gtNext fields.
* Early liveness information (GTF_VAR_DEATH and the promoted struct death vars map) is kept valid (sound) starting from early liveness and ending with morph.
  There are asserts that the tree list is up to date when it is accessed. This is done through a new member fgNodeThreading that replaces the preexisting fgStmtListThreaded and keeps information about what the current kind of node threading is.

The benefits are large, -2 MB on win-x64 collections (-0.85% on libraries.pmi that only has optimized contexts), with a number of regressions as expected when removing locals.
The improvements primarily come from the omission of copies for implicit byrefs, so the benefits on platforms with fewer implicit byrefs is smaller, but the forward sub change alone is still very impactful (e.g. -300K on linux-x64).

The throughput impact is around 1% in optimized contexts and below 0.1% in unoptimized contexts, the latter due to local morph needing to check if it should be threading nodes.

23 months agoRemove Drawing.Common .NETCoreApp PNSEs (#80435)
Viktor Hofer [Wed, 11 Jan 2023 08:16:41 +0000 (09:16 +0100)]
Remove Drawing.Common .NETCoreApp PNSEs (#80435)

System.Drawing.Common was throwing PNSEs on non Windows platforms when
accessing public API which makes sense as the library isn't supposed to
be used on other platforms.

That said, we already have a runtime hook that throws when DllImports
are invoked. We intentionally want to allow accessing Drawing exchange
types to not break customers when they don't rely on GDI+ or other
native functions.

This is also part of a wider effort that allows this library to be
ported to another repository (which doesn't support targeting RIDs).

23 months agoFix multiple dumps from being generated (#80474)
Mike McLaughlin [Wed, 11 Jan 2023 08:13:37 +0000 (00:13 -0800)]
Fix multiple dumps from being generated (#80474)

Issue: https://github.com/dotnet/runtime/issues/78956

After a core dump is generated because of a unhandled managed exception
abort() is called but a SIGSEGV is generated in libpthread.so which is
caught by the runtime and a second core dump is generated. The fix is
to uninstall/uninitialize all the signal handlers, not just SIGABORT.

23 months ago[wasm] Jiterpreter opcode updates + implement safepoints (#80479)
Katelyn Gadd [Wed, 11 Jan 2023 05:39:19 +0000 (21:39 -0800)]
[wasm] Jiterpreter opcode updates + implement safepoints (#80479)

* Implement CPOBJ_VT_NOREF
* Implement STOBJ_VT_NOREF and improve bailout statistics
* Support performing safepoints in jiterpreter traces without bailing out

23 months agoReduce the number of forced `MethodTable`s (#79594)
Michal Strehovský [Wed, 11 Jan 2023 02:37:52 +0000 (11:37 +0900)]
Reduce the number of forced `MethodTable`s (#79594)

When we're doing an optimized build, we go over the whole program twice:

* First time to build a whole program view: at this point we e.g. scan the IL method bodies to see what they depend on, or analyze reflection use within the program
* The second time to do actual codegen: this time we no longer analyze reflection use and expect that the first phase would have rooted everything that's necessary from reflection perspective.

In both phases, we assume any type with a "constructed" `MethodTable` is visible to reflection because one can just call `object.GetType()` and reflect on stuff. We need to pass a list of constructed `MethodTable`s from the first phase to the second phase because some `MethodTable`s could be the result of reflection analysis and we need to make sure they're compiled.

But crucially, up until now we didn't really track which `MethodTable`s are actual reflection roots and which ones just showed up in the dependency graph because the analyzed program happened to use it. We don't actually need to pass the latter ones as roots to compilation because the compilation phase is going to figure them out if they're needed anyway and if the compilation doesn't come up with some, that's fine because one wouldn't be able to call `object.GetType` on those anyway, because they're _not actually part of the program_.

Passing all of the MethodTables we saw from scanning to compilation is actually size bloat because scanning overapproximates things (by necessity, since it doesn't have a whole program view).

In this pull request I'm introducing `ReflectedTypeNode` to model `MethodTable`s that are actual targets of reflection. Only those will get passed as roots to the compilation phase. From now on we need to be mindful of how we refer to types. If a reference to a type is a result of non-code dependency, we should use `ReflectedType` to model it.

Saves about 1.2% (32 kB) in size on a Hello World.

I'm seeing it helps in two patterns:

https://github.com/dotnet/runtime/blob/b1a2080b9ce5833802fe2d632f79de6402097f14/src/libraries/System.Private.CoreLib/src/System/Byte.cs#L1088-L1093

RyuJIT is able to eliminate the dead code in the if branch, but we were still rooting the type within the branch from the box.

The second pattern seems to be around RyuJIT devirtualizing things and preventing a box, which now eliminates the `MethodTable`.

23 months agoFeature/logging messagetemplate compat (#80364)
tkrafael [Wed, 11 Jan 2023 00:41:22 +0000 (21:41 -0300)]
Feature/logging messagetemplate compat (#80364)

Co-authored-by: Rafael Nicoletti <rafael.nicoletti@ubuntu>
23 months agoAdds diagnostic for out parameter in LSG (#80458)
Allan Targino [Tue, 10 Jan 2023 23:45:30 +0000 (20:45 -0300)]
Adds diagnostic for out parameter in LSG (#80458)

fixes https://github.com/dotnet/runtime/issues/64665

23 months agoAdd initial support for FreeBSD.arm64 (#71486)
Szczepan Ćwikliński [Tue, 10 Jan 2023 23:35:16 +0000 (00:35 +0100)]
Add initial support for FreeBSD.arm64 (#71486)

* changes to compile runtime under FreeBSD ARM64 host

* TOOLSET_PREFIX for FreeBSD host set to llvm during crossbuild

* Detect FreeBSD amd64 or aarch64 message

* Fix gen-dactable-rva.sh padding zeros

* cross build options for FreeBSD arm64 for mono

* Revert eng/native/configuretools.cmake

* Try to better detect host arch under FreeBSD

* Indent

* Don't pad DAC_TABLE_RVA

* Comment update

* Add freebsd-arm64 RIDs, enable CG2 package generation for FreeBSD builds

* Extra condition for mono build

* Added targetos to crossgen2 command during build

* Add targetos along with targetarch for crossgen2 commands

* Typo fixed in comment

* Set Cpsr to gp_spsr for FreeBSD/aarch64 (still crashing exception
unwind)

* Fix mono configure/build CPU_COUNT for FreeBSD

* Use check_symbol_exists for HAVE_GNU_CPU_COUNT check

* fix cross compile error

* Fix build error with targetos

Co-authored-by: Szczepan <sec@codebay.pl>
23 months agoRevert "Reserve memory for FOH in-range (#78292)" (#80400)
Juan Hoyos [Tue, 10 Jan 2023 21:42:41 +0000 (13:42 -0800)]
Revert "Reserve memory for FOH in-range (#78292)" (#80400)

Original change did improve codegen for certain cases but we were unable to detect performance improvements from that. It caused some troubles for !dumpheap - it's easier to revert it than fix.

23 months agoBuild tools subset to generate artifacts (#80406)
Tlakaelel Axayakatl Ceja [Tue, 10 Jan 2023 21:33:04 +0000 (13:33 -0800)]
Build tools subset to generate artifacts (#80406)

Build the tools along with the libraries to produce the illink packages in the artifacts folder during the runtime official build (#80406)

23 months ago[wasm] optimize out 'is this method MulticastDelegate.Invoke' checks in aot->interp...
Katelyn Gadd [Tue, 10 Jan 2023 21:10:49 +0000 (13:10 -0800)]
[wasm] optimize out 'is this method MulticastDelegate.Invoke' checks in aot->interp transitions (#80181)

* When creating an InterpMethod, identify whether it is MulticastDelegate.Invoke and store that in a flag to optimize interp_entry
* Always inline some jiterpreter APIs

23 months agoIncrease test scenario invocation parallelism (#80409)
Bruce Forstall [Tue, 10 Jan 2023 20:51:19 +0000 (12:51 -0800)]
Increase test scenario invocation parallelism (#80409)

The MSBuild code that invokes Helix to execute coreclr and libraries tests
spawns an MSBuild task for each "configuration" (which is a particular set of
environment variables, such as a set of JIT stress modes), and each of those
MSBuild invocations creates a (large) set of HelixWorkItem that are submitted
to Helix for running for that particular configuration. (One HelixWorkItem
is created for each partition of the test tree). But the MSBuild task also
waits for all the work items to finish before letting another configuration
start. The MSBuild invocations are run in parallel, but only to the level
of parallelism allowed by MSBuild settings. MSBuild is invoked with "/maxcpucount",
which means one MSBuild "node" per processor on the machine, thus one
configuration in parallel per processor. The AzDO machines we run on appear
to have 3 processors allocated to them (at least in some cases). Many test configurations
have far more than 3 configurations (e.g., jitstress-isas-x86 has 55 configurations),
so that's a lot of waiting.

These MSBuild tasks are doing very little: creating HelixWorkItems, invoking Helix,
and waiting. We can run many, many more MSBuild tasks in parallel,
to "flood" Helix with more work that could be done in parallel.

This change passes a larger `/maxcpucount` argument when invoking MSBuild in
cases where this would be beneficial.

(Note that ideally we wouldn't depend on MSBuild parallelism, and a single MSBuild
instance, or other code not written in MSBuild, could create and wait for all the
needed HelixWorkItems for all scenarios in a single process. But that's not how
it's currently architected.)

23 months agoRemove RequiresDynamicCode from Microsoft.Extensions.DependencyInjection (#79425)
Eric Erhardt [Tue, 10 Jan 2023 19:57:11 +0000 (13:57 -0600)]
Remove RequiresDynamicCode from Microsoft.Extensions.DependencyInjection (#79425)

* Remove RequiresDynamicCode from Microsoft.Extensions.DependencyInjection

We need a better approach in order to support applications that use DependencyInjection and publish for NativeAOT. DependencyInjection needs to have reliable behavior before and after publishing for NativeAOT. The application can't work successfully at development-time, but then fail after publishing with PublishAot=true.

We will resolve the 2 NativeAOT warnings above by adding a runtime check that is behind the new AppContext switch added in https://github.com/dotnet/runtime/pull/80246 (`System.Runtime.CompilerServices.RuntimeFeature.IsDynamicCodeSupported`). The runtime check ensures the Types being used with Enumerable and Open Generic services are only Reference Types. If an application tries to create an Enumerable or Closed Generic service of a ValueType, DependencyInjection will throw an exception. The check is enabled by default when PublishAot=true.

Fix #79286

23 months agoDon't upgrade homebrew packages in CI (#80443)
Alexander Köplinger [Tue, 10 Jan 2023 17:57:38 +0000 (18:57 +0100)]
Don't upgrade homebrew packages in CI (#80443)

Fixes https://github.com/dotnet/runtime/issues/80428, originally caused by https://github.com/actions/setup-python/issues/577 and https://github.com/actions/runner-images/issues/6868

23 months ago[wasm][debugger] Removing console.debug message helper to make debugger work. (#72812)
Thays Grazia [Tue, 10 Jan 2023 17:34:14 +0000 (14:34 -0300)]
[wasm][debugger] Removing console.debug message helper to make debugger work. (#72812)

* Removing console.debug message helper to make debugger work.

* Update src/mono/wasm/runtime/debug.ts

Co-authored-by: Larry Ewing <lewing@microsoft.com>
* Addressing @radical comments offline.

* Fixing merge.

* Fix line change error.

* Totally removing the message.

* Remove unused comment

Co-authored-by: Larry Ewing <lewing@microsoft.com>
Co-authored-by: Ilona Tomkowicz <32700855+ilonatommy@users.noreply.github.com>
23 months agoReverting wrong commit changing the helloworld sample (#80390)
Thays Grazia [Tue, 10 Jan 2023 15:45:58 +0000 (12:45 -0300)]
Reverting wrong commit changing the helloworld sample (#80390)