platform/upstream/dotnet/runtime.git
14 months agoAdd note about transient pointers to ECMA augments (#86622)
Jan Kotas [Tue, 23 May 2023 05:04:38 +0000 (22:04 -0700)]
Add note about transient pointers to ECMA augments (#86622)

Fixes #62784

14 months agoAbstract out System.Reflection.Emit.ILGenerator (#86594)
Buyaa Namnan [Tue, 23 May 2023 02:36:40 +0000 (19:36 -0700)]
Abstract out System.Reflection.Emit.ILGenerator (#86594)

* Abstract out ILGenerator

* Finish up abstracting

* Remove protected abstract methods, use more public abstract instead

* Use RuntimeILGenerator for Linq test

14 months agoUpdate GetElement and ToScalar to lower IND, LCL_FLD, and LCL_VAR specially (#86400)
Tanner Gooding [Tue, 23 May 2023 01:53:29 +0000 (18:53 -0700)]
Update GetElement and ToScalar to lower IND, LCL_FLD, and LCL_VAR specially (#86400)

* Update GetElement and ToScalar to lower IND, LCL_FLD, and LCL_VAR specially

* Ensure GetElement still correctly handles too large indices

* Only optimize to LCL_FLD for lvDoNotEnregister

* Account for an extreme edge case in offset overflow

* Use simdSize rather than maxSIMDStructBytes

14 months ago[wasm] No longer discard jiterp inference information when crossing a branch (#86611)
Katelyn Gadd [Tue, 23 May 2023 01:52:18 +0000 (18:52 -0700)]
[wasm] No longer discard jiterp inference information when crossing a branch (#86611)

* Discarding inferred state when crossing a branch is not strictly necessary and reduces performance
* Don't allow treating ldloca'd addresses as constant

14 months agoAdd a test for the first chance exception event (#86560)
SingleAccretion [Mon, 22 May 2023 23:33:11 +0000 (02:33 +0300)]
Add a test for the first chance exception event (#86560)

14 months agoRename setting for using RID graph to System.Runtime.Loader.UseRidGraph (#86598)
Elinor Fung [Mon, 22 May 2023 22:29:48 +0000 (00:29 +0200)]
Rename setting for using RID graph to System.Runtime.Loader.UseRidGraph (#86598)

14 months agoEnsure Avx512Vbmi has [Intrinsic] on the right members (#86604)
Tanner Gooding [Mon, 22 May 2023 22:25:03 +0000 (15:25 -0700)]
Ensure Avx512Vbmi has [Intrinsic] on the right members (#86604)

* Ensure Avx512Vbmi has [Intrinsic] on the right members

* Ensure vpermb is covered

14 months agoJIT: Switch basic block successors to a visitor pattern (#86543)
Jakob Botsch Nielsen [Mon, 22 May 2023 22:00:37 +0000 (00:00 +0200)]
JIT: Switch basic block successors to a visitor pattern (#86543)

BasicBlock::GetAllSuccs seems to be very slow.

14 months agoSwitch physical promotion stress modes to only be enabled in checked builds (#86590)
Jakob Botsch Nielsen [Mon, 22 May 2023 21:53:06 +0000 (23:53 +0200)]
Switch physical promotion stress modes to only be enabled in checked builds (#86590)

Otherwise we may be running old preview 4 bits with physical promotion
enabled and running into issues that were already fixed.

Fix #86588

14 months agoAvoid capturing diagnostic objects in Regex source generator incremental values ...
Stephen Toub [Mon, 22 May 2023 21:44:38 +0000 (17:44 -0400)]
Avoid capturing diagnostic objects in Regex source generator incremental values (#86606)

It's mostly a non-issue given how we use it, but Diagnostic's message arguments are compared with reference equality rather than value equality.  Store the data into our own object instead, and only create the actual Diagnostic objects when we're about to report them.

14 months agoAvoid capturing diagnostic objects in SG incremental values. (#86605)
Eirik Tsarpalis [Mon, 22 May 2023 21:39:42 +0000 (22:39 +0100)]
Avoid capturing diagnostic objects in SG incremental values. (#86605)

14 months ago[main] Update dependencies from dnceng/internal/dotnet-optimization (#86436)
dotnet-maestro[bot] [Mon, 22 May 2023 21:02:11 +0000 (14:02 -0700)]
[main] Update dependencies from dnceng/internal/dotnet-optimization (#86436)

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

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.23260.3 -> To Version 1.0.0-prerelease.23267.3

Dependency coherency updates

Microsoft.SourceLink.GitHub,Microsoft.DotNet.XliffTasks
 From Version 8.0.0-beta.23252.2 -> To Version 8.0.0-beta.23218.3 (parent: Microsoft.DotNet.Arcade.Sdk

* Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-optimization build 20230518.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.23260.3 -> To Version 1.0.0-prerelease.23268.7

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

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.23260.3 -> To Version 1.0.0-prerelease.23269.15

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

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.23260.3 -> To Version 1.0.0-prerelease.23270.4

* Require clang-16 for PGO optimization

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

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.23260.3 -> To Version 1.0.0-prerelease.23271.4

* Revert sourcelink and xliff-tasks downgrades

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Larry Ewing <lewing@microsoft.com>
Co-authored-by: Sven Boemer <sbomer@gmail.com>
14 months agoAvoid ToString allocations for each ISpanFormattable value in string.Concat/Join...
Stephen Toub [Mon, 22 May 2023 19:51:08 +0000 (15:51 -0400)]
Avoid ToString allocations for each ISpanFormattable value in string.Concat/Join(..., IEnumerable<T>) (#86521)

We can use a T's ISpanFormattable implementation to avoid the individual ToStrings. We also don't need to maintain a separate implementation for Concat; at the cost of one branch per value, we can just reuse the Join implementation and pick up all of its optimizations for Concat.

14 months agoVectorize IEnumerable<T>.Sum where possible (#84519)
Brant Burnett [Mon, 22 May 2023 19:37:52 +0000 (15:37 -0400)]
Vectorize IEnumerable<T>.Sum where possible (#84519)

* Vectorize IEnumerable<T>.Sum where possible

* Remove unnecessary CreateChecked and fix long test

* Add more assertions

* Improve comments, don't use Unsafe.Add, use T.MinValue

14 months agoApply the SourceWriter pattern to the STJ source generator. (#86526)
Eirik Tsarpalis [Mon, 22 May 2023 17:30:34 +0000 (18:30 +0100)]
Apply the SourceWriter pattern to the STJ source generator. (#86526)

* Use the SourceWriter pattern in the STJ SG emitter.

* Make helper method static.

* Minimize the size of the generic helper method.

14 months ago[LoongArch64] Fix some bugs in the test sets 'System.Runtime.Tests' and 'System.Linq...
Xu Liangyu [Mon, 22 May 2023 17:17:31 +0000 (01:17 +0800)]
[LoongArch64] Fix some bugs in the test sets 'System.Runtime.Tests' and 'System.Linq.Expressions.Tests' for loongarch64. (#86435)

* Fix the error of the Truncate/Saturate convert from Float/Double NAN to UINT32/UINT64.
* fix some random failed testcases in System.Runtime.Tests.

* Update codegenloongarch64.cpp

Fix the RangeCheck bug of the TYP_INT case in CodeGen::genRangeCheck().

14 months agoRename a couple model specs for config binding generator (#86459)
Layomi Akinrinade [Mon, 22 May 2023 16:38:43 +0000 (09:38 -0700)]
Rename a couple model specs for config binding generator (#86459)

14 months agoUpdate createdumpwindows to not appear to succeed after getting ERROR_PARTIAL_COPY...
Andrew Moskevitz [Mon, 22 May 2023 16:09:07 +0000 (12:09 -0400)]
Update createdumpwindows to not appear to succeed after getting ERROR_PARTIAL_COPY 5 times (#85462)

* Update createdumpwindows.cpp

create dump has same bug as documented and fixed in dotnet-dump (https://github.com/dotnet/diagnostics/issues/3829)

* Update createdumpwindows.cpp

changed retry count to 10 to match dotnet-dump

14 months ago[mono] When creating an array type, don't do full initialization of the element type...
Aleksey Kliger (λgeek) [Mon, 22 May 2023 15:21:21 +0000 (11:21 -0400)]
[mono] When creating an array type, don't do full initialization of the element type (#85828)

Consider code like this:

```csharp
public class Node<T>
{
    public Node<T>[][] Children;
}

Console.WriteLine (typeof(Node<int>));
```

In this case, when we're JITing ``ldtoken class Node`1<int32>`` we first have to parse the type ``Node`1<int32>`` and initialize it.
When we're initializing it, we need to resolve the types of all the fields in the class in order to to figure out if its instance size.

To resolve the field types we have to parse the types of all the fields, and we eventually end up parsing the type ``Node`1<!0>[][]`` which ends up here:

https://github.com/dotnet/runtime/blob/558345d16cf76525d0c7fdbafbfd3a2457142b39/src/mono/mono/metadata/metadata.c#L4023-L4027

When we get to line 4027 the second time (recursively), `etype` is ``Node`1<!0>`` as a `MonoType*`.  And we want to set `type->data.klass` to its corresponding `MonoClass*`.   That ends up calling `mono_class_from_mono_type_internal`, which does this:

https://github.com/dotnet/runtime/blob/558345d16cf76525d0c7fdbafbfd3a2457142b39/src/mono/mono/metadata/class.c#L2214-L2215

When we call `mono_class_create_array` we end up here:

https://github.com/dotnet/runtime/blob/558345d16cf76525d0c7fdbafbfd3a2457142b39/src/mono/mono/metadata/class-init.c#L1186-L1187

with `eclass` equal to ``Node`1<!0>` which we try to initialize and we get a TLE because we're going to try to initialize the same generic type definition ``Node`1`` twice.

Compare with this other class:

```csharp
public unsafe class Node2<T>
{
    public Node2<T>[] Children;
}
```

In this case we only end up calling `mono_class_from_mono_type_internal` on ``Node2`1<int32>`` (not an array).  And that branch does not do any initialization - it just returns `type->data.klass` (for ``Node2`1<!0>`` - which is seen as a gtd at this point) or `mono_class_create_generic_inst (type->data.generic_class)` (for ``Node2`1<int32>`` which is seen later when `ldtoken` inflates the gtd)) - without any extra initialization.

---

It seems the reason we get into trouble is because `mono_class_create_array` does more work than other `MonoClass` creation functions - it tries to initialize the `MonoClass` a little bit (for example by setting `MonoClass:has_references`) which needs at least a little bit of the element class to be initialized.

But note that the code has this:

https://github.com/dotnet/runtime/blob/558345d16cf76525d0c7fdbafbfd3a2457142b39/src/mono/mono/metadata/class-init.c#L1186-L1189

I feel fairly certain we don't need the full class initialization if we're going to immediately initialize the field size information.

Fixes #85821

14 months agoVectorize shorter buffers for CRC-32 on Intel (#86539)
Brant Burnett [Mon, 22 May 2023 14:58:56 +0000 (10:58 -0400)]
Vectorize shorter buffers for CRC-32 on Intel (#86539)

14 months agodisable JitOptimizationSensitive check on NativeAOT testing (#86523)
Lakshan Fernando [Mon, 22 May 2023 14:45:13 +0000 (07:45 -0700)]
disable JitOptimizationSensitive check on NativeAOT testing (#86523)

14 months agoLots of tweaks to FrozenDictionary/Set analysis and hashing (#86293)
Stephen Toub [Mon, 22 May 2023 14:34:54 +0000 (10:34 -0400)]
Lots of tweaks to FrozenDictionary/Set analysis and hashing (#86293)

- Some minor internal refactorings, e.g. changed the internal KeyAnalyzer.Analyze from being void returning with an out results to instead just return those results, and did some internal renaming.
- We were previously computing the min/max string length in KeyAnalyzer.Analyze twice, once in UseSubstring and then again after that in Analyze.  We were also computing it in the length buckets analyzer.  Changed the code to do the checks just once at the beginning and then pass that information around to everywhere that needs it.
- Once that information is passed in, AnalysisResults can then be made readonly, rather than being mutated to store the min/max after it was constructed.
- If the min length is 0, there's no point calling TryUseSubstring as it'll never find one, so skip the call to it entirely if there's an empty string in the mix.
- In TryUseSubstring, for a given substring length first check all the left justifications and then check all the right justifications, rather than intermingling them.  Left justifications are a bit cheaper to look up, plus we can avoid creating any objects related to checking right justification if we end up finding a left justification for a given substring length first.
- We can also avoid doing any right justification checks if all of the input strings are of the same length, as at that point there's nothing right justification could find that left justification couldn't.
- When constructing the HashSets for evaluating uniqueness, when targeting more recent .NET versions we can presize the HashSets to avoid the expansion as we add all the items.
- Importantly, set a limit on the maximum length of substring we'll consider.  This significantly curtails the worst-case analysis performance for very large inputs that don't yield any unique substrings.  While it's certainly possible to construct cases where this will then fail to find a substring when it otherwise could, it's much more rare, and the longer we're dealing with the less we're saving on the hashing costs, which is the only thing this is avoiding.
- For hashing, create dedicated branchless hash checks for each of lengths 0 to 4.
- When we're doing the ASCII check to see if we can use an ASCII-optimized comparer, if OrdinalIgnoreCase was used, we can also check to see if the substring contains any ASCII letters; if the only the thing the substrings contain are ASCII non-letters, then we can switch to being case-sensitive, as no casing will impact the comparisons.
- The ASCII check downlevel was erroneously including 0x7f as being non-ASCII. Fixed it to be 0x80 instead of 0x7f.
- Changed GetHashCodeOrdinalIgnoreCase to delegate to GetHashCodeOrdinal after doing its non-ASCII casing work.
- On .NET 6+, we can use GetValueRefOrAddDefault to avoid some dictionary lookups.
- For the length-bucketing implementation, we can do a quick up-front check to rule out applicability of many inputs where we know just based on the number of input strings and the min/max lengths whether some bucket will be forced to be too big.

14 months ago[main] Update dependencies from dotnet/roslyn-analyzers (#86384)
dotnet-maestro[bot] [Mon, 22 May 2023 14:32:36 +0000 (09:32 -0500)]
[main] Update dependencies from dotnet/roslyn-analyzers (#86384)

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

Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers
 From Version 3.3.5-beta1.23262.2 -> To Version 3.3.5-beta1.23266.2

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

Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers
 From Version 3.3.5-beta1.23262.2 -> To Version 3.3.5-beta1.23268.1

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

Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers
 From Version 3.3.5-beta1.23262.2 -> To Version 3.3.5-beta1.23269.1

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

Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers
 From Version 3.3.5-beta1.23262.2 -> To Version 3.3.5-beta1.23270.2

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
14 months ago[main] Update dependencies from dotnet/roslyn (#86497)
dotnet-maestro[bot] [Mon, 22 May 2023 14:31:46 +0000 (09:31 -0500)]
[main] Update dependencies from dotnet/roslyn (#86497)

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

Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset
 From Version 4.7.0-1.23259.11 -> To Version 4.7.0-1.23268.11

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

Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset
 From Version 4.7.0-1.23259.11 -> To Version 4.7.0-1.23269.2

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
14 months agoThis fixes an issue with gradual decommit in scenarios where we have … (#84975)
Peter Sollich [Mon, 22 May 2023 13:59:36 +0000 (15:59 +0200)]
This fixes an issue with gradual decommit in scenarios where we have … (#84975)

This fixes an issue with gradual decommit in scenarios where we have almost exclusively background GCs.

The problem is that we turn off the gradual_decommit_in_progress_p flag and rely on the distribute_free_regions flag to turn it back on. If we only trigger a BGC however, distribute_free_regions won't get called and the flag will stay off, despite the global_regions_to_decommit list being non-empty.

This will cause regions to accumulate in the global_regions_to_decommit list, and eventual will cause the process to run out of memory.

The fix is to just test for the no gc region case in decommit_step. This will also turn off the gradual_decommit_in_progress_p flag for the no gc region case, but not for background GCs.

14 months agoUse new queue for iOS arm64 device tests (#86575)
Alexander Köplinger [Mon, 22 May 2023 13:56:02 +0000 (15:56 +0200)]
Use new queue for iOS arm64 device tests (#86575)

14 months ago[mono][aot] Enabling AOT wrappers for virtual delegates (#85643)
Vlad-Alexandru Ionescu [Mon, 22 May 2023 10:35:01 +0000 (12:35 +0200)]
[mono][aot] Enabling AOT wrappers for virtual delegates (#85643)

* Adding AOT virtual delegates wrappers

Signed-off-by: Vlad - Alexandru Ionescu <vlad-alexandruionescu@Vlads-MacBook-Pro-5.local>
---------

Signed-off-by: Vlad - Alexandru Ionescu <vlad-alexandruionescu@Vlads-MacBook-Pro-5.local>
Co-authored-by: Vlad - Alexandru Ionescu <vlad-alexandruionescu@Vlads-MacBook-Pro-5.local>
14 months agoFix code coverage of corelib by updating coverlet (#86566)
Stephen Toub [Mon, 22 May 2023 10:19:30 +0000 (06:19 -0400)]
Fix code coverage of corelib by updating coverlet (#86566)

14 months ago[wasm] Refactor name convention (#86446)
Ilona Tomkowicz [Mon, 22 May 2023 10:17:59 +0000 (12:17 +0200)]
[wasm] Refactor name convention (#86446)

* Change case type restricted to threading files.

* Feedback - preserve consistent naming.

* Fix

* @pavelsavara's fix for samples on Windows (not connected with refactoring).

14 months ago[main] Update dependencies from 7 repositories (#85913)
dotnet-maestro[bot] [Mon, 22 May 2023 07:40:07 +0000 (09:40 +0200)]
[main] Update dependencies from 7 repositories (#85913)

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Elinor Fung <elfung@microsoft.com>
14 months agoIncrease timeouts on perf-slow pipeline (because of current load on queues). (#86547)
Jiri Cincura ↹ [Mon, 22 May 2023 06:29:00 +0000 (08:29 +0200)]
Increase timeouts on perf-slow pipeline (because of current load on queues). (#86547)

14 months agoBaseline a couple more JIT tests (#86429)
Michal Strehovský [Mon, 22 May 2023 02:06:57 +0000 (11:06 +0900)]
Baseline a couple more JIT tests (#86429)

14 months agoAdd DebuggerDisplay for SearchValues (#86559)
Stephen Toub [Mon, 22 May 2023 01:55:04 +0000 (21:55 -0400)]
Add DebuggerDisplay for SearchValues (#86559)

14 months agoMake merged test wrappers single file friendly (#86428)
Michal Strehovský [Sun, 21 May 2023 23:53:52 +0000 (08:53 +0900)]
Make merged test wrappers single file friendly (#86428)

Assembly.Location returns an empty string in single file.

14 months agoUse VEX xorps to zero a zmm reg (#86555)
Egor Bogatov [Sun, 21 May 2023 20:41:51 +0000 (22:41 +0200)]
Use VEX xorps to zero a zmm reg (#86555)

Co-authored-by: Tanner Gooding <tagoo@outlook.com>
14 months agoRemove ZMM_RECOMMENDED_THRESHOLD workaround (#86552)
Egor Bogatov [Sun, 21 May 2023 16:09:07 +0000 (18:09 +0200)]
Remove ZMM_RECOMMENDED_THRESHOLD workaround (#86552)

14 months agoStop using LocalizationResources within framework (#86430)
Michal Strehovský [Sun, 21 May 2023 03:58:09 +0000 (12:58 +0900)]
Stop using LocalizationResources within framework (#86430)

Fixes #81459.

I moved the messages to `EventAttribute.Message` which I believe should be equivalent, but I would appreciate if someone could double-check.
I also removed all the now-unused resource strings. I believe they all need to be prefixed by one of well-known prefixes. I would appreciate if someone could double-check.

14 months agoNoGCRegion Callback (#82045)
Andrew Au [Sun, 21 May 2023 01:46:51 +0000 (18:46 -0700)]
NoGCRegion Callback (#82045)

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
14 months agoavoid GCHandle in ConnectEx and SendTo on Windows (#86524)
Tomas Weinfurt [Sat, 20 May 2023 21:58:12 +0000 (14:58 -0700)]
avoid GCHandle in ConnectEx and SendTo on Windows (#86524)

* avoid GCHandle in ConnectEx and SendTo on Windows

* s/Span/ReadOnlySpan/ndd

14 months agoPipeReader.CopyToAsync(Stream) should not perform zero-length writes (#85768)
Marc Gravell [Sat, 20 May 2023 21:36:24 +0000 (22:36 +0100)]
PipeReader.CopyToAsync(Stream) should not perform zero-length writes (#85768)

* add failing test for zero-length write

* simplify test

* apply fix

14 months agoAdd new status code (#85841)
hrrrrustic [Sat, 20 May 2023 21:35:42 +0000 (00:35 +0300)]
Add new status code (#85841)

14 months agoClean up GenTreeCall's inline info (#86540)
Egor Bogatov [Sat, 20 May 2023 19:49:01 +0000 (21:49 +0200)]
Clean up GenTreeCall's inline info (#86540)

14 months agofix(66229): Fix invalid processing of empty Dictionary node. (#86485)
Maksim Golev [Sat, 20 May 2023 17:51:37 +0000 (21:51 +0400)]
fix(66229): Fix invalid processing of empty Dictionary node. (#86485)

Co-authored-by: Maksim Golev <mgolev@htc-cs.ru>
14 months ago[LoongArch64] delete the rsGetRsvdReg() for LA64. (#86319)
Qiao Pengcheng [Sat, 20 May 2023 15:57:43 +0000 (23:57 +0800)]
[LoongArch64] delete the rsGetRsvdReg() for LA64. (#86319)

* [LoongArch64] delete the rsGetRsvdReg() for LA64.

* delete dead code for CR.

14 months ago[interp] Remove char element type support from transform-simd (#86534)
Katelyn Gadd [Sat, 20 May 2023 15:53:58 +0000 (08:53 -0700)]
[interp] Remove char element type support from transform-simd (#86534)

Remove char element type support from transform-simd
Also disable unusual types for packedsimd

14 months agoAllow using active host context in hostfxr_get_runtime_delegate (#86460)
Justin Anderson [Sat, 20 May 2023 07:45:57 +0000 (00:45 -0700)]
Allow using active host context in hostfxr_get_runtime_delegate (#86460)

These changes allow for passing `nullptr` for the handle parameter of the `hostfxr_get_runtime_delegate` function. This allows in-process callers who do not have the real host context handle to invoke this function and get a runtime delegate for the primary runtime instance. Calling hostfxr_get_runtime_delegate without the handle will only work if there is an active host context, otherwise it will return StatusCode::HostInvalidState.

14 months agoRemove references to P/Invokes and DllImport from resource strings. (#85178)
Jeremy Koritzinsky [Sat, 20 May 2023 06:43:26 +0000 (23:43 -0700)]
Remove references to P/Invokes and DllImport from resource strings. (#85178)

14 months agoMake the RefreshMemoryLimit API public (#85549)
Andrew Au [Sat, 20 May 2023 03:31:02 +0000 (20:31 -0700)]
Make the RefreshMemoryLimit API public (#85549)

14 months agoEnsure Vector2/3/4, Quaternion, and Plane don't have a false dependency on Vector...
Tanner Gooding [Sat, 20 May 2023 01:59:50 +0000 (18:59 -0700)]
Ensure Vector2/3/4, Quaternion, and Plane don't have a false dependency on Vector<T> (#86481)

* Ensure Vector2/3/4, Quaternion, and Plane don't have a false dependency on Vector<T>

* Apply JIT formatting patch

* Fixing a build issue

* Handle an SPMI assert

14 months agoAdd marshallers for GeneratedComInterface-based types (#86177)
Jeremy Koritzinsky [Sat, 20 May 2023 01:59:29 +0000 (18:59 -0700)]
Add marshallers for GeneratedComInterface-based types (#86177)

14 months agoRefactor our linear collection marshalling implementation (#86519)
Jeremy Koritzinsky [Fri, 19 May 2023 22:55:27 +0000 (15:55 -0700)]
Refactor our linear collection marshalling implementation (#86519)

Co-authored-by: Jackson Schuster <36744439+jtschuster@users.noreply.github.com>
14 months agoEnsure we use bytes, not bits (#86510)
Tanner Gooding [Fri, 19 May 2023 21:46:56 +0000 (14:46 -0700)]
Ensure we use bytes, not bits (#86510)

14 months agoFix marking of saved assemblies (#86474)
Sven Boemer [Fri, 19 May 2023 20:41:26 +0000 (13:41 -0700)]
Fix marking of saved assemblies (#86474)

This ensures the fix from
https://github.com/dotnet/runtime/pull/82197 works also for
assemblies which get the `save` action (which isn't supported
from the command-line, but may happen in custom steps).

It also ensures that `save` assemblies get fully marked
regardless of `DisableMarkingOfCopyAssemblies`.

---------

Co-authored-by: Jackson Schuster <36744439+jtschuster@users.noreply.github.com>
14 months agoRemove fgMorphCastedBitwiseOp (#86491)
Egor Bogatov [Fri, 19 May 2023 20:38:33 +0000 (22:38 +0200)]
Remove fgMorphCastedBitwiseOp (#86491)

14 months ago[wasm] CI: Fix firefox debugger tests failure (#86476)
Ankit Jain [Fri, 19 May 2023 20:36:54 +0000 (16:36 -0400)]
[wasm] CI: Fix firefox debugger tests failure (#86476)

Tests are failing with:

```
  Failed DebuggerTests.ArrayTests.InspectGenericValueTypeArrayLocals(line: 89, col: 8, method_name: "DebuggerTests.ArrayTestsClass.GenericValueTypeLoca"..., test_prev_frame: False, frame_idx: 0, use_cfo: True) [>
  Error Message:
   System.InvalidCastException : Cannot cast Newtonsoft.Json.Linq.JObject to Newtonsoft.Json.Linq.JToken.
  Stack Trace:
     at Newtonsoft.Json.Linq.Extensions.Convert[T,U](T token)
   at DebuggerTests.FirefoxInspectorClient.HandleMessage(String msg, CancellationToken token) in /_/src/mono/wasm/debugger/DebuggerTestSuite/FirefoxInspectorClient.cs:line 184
   at Microsoft.WebAssembly.Diagnostics.RunLoop.RunActualAsync(CancellationTokenSource x) in /_/src/mono/wasm/debugger/BrowserDebugProxy/Common/RunLoop.cs:line 142
   at Microsoft.WebAssembly.Diagnostics.RunLoop.<>c__DisplayClass20_0.<<RunAsync>b__0>d.MoveNext() in /_/src/mono/wasm/debugger/BrowserDebugProxy/Common/RunLoop.cs:line 54
--- End of stack trace from previous location ---
   at System.Threading.Channels.AsyncOperation`1.GetResult(Int16 token)
   at System.Threading.Tasks.ValueTask`1.ValueTaskSourceAsTask.<>c.<.cctor>b__4_0(Object state)
```

One of the arguments of the message is a `JObject`, and thus fails with
`.Value<string>()`.

The full message:
```json
{
   "from" : "server1.conn0.windowGlobal10737418242/windowGlobalTarget2",
   "resources" : [
      {
         "message" : {
            "arguments" : [
               "mono_wasm_debug_event_raised:aef14bca-5519-4dfe-b35a-f867abc123ae",
               {
                  "actor" : "server1.conn0.windowGlobal10737418242/longstractor35",
                  "initial" : "{\"eventName\":\"AssemblyLoaded\",\"assembly_name\":\"System.Private.CoreLib.dll\",\"assembly_b64\":\"V2JJTAAAAAADAAAACCAAAEgAAACYYj4AVAAAAPRDPgAAIAAAAEQ+AEwAAABMBAAAAIA+AAAGAABMRD4ADAAAAACgPgAAAgAATEo+ANBjPgAAAAAASAAAAAIABQDQ4RkAyIAkAAkAAAAAAAAAsFMUADjSAwBQ4RkAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgIoJAIABipeAigkAgAGAheNogAAAiUWA5x9AQAABCo6AigkAgAGAgN9AQAABCo6AigkAgAGAgN9AgAABCo6AigkAgAGAgN9AwAABCoeAigDMAUAjQAAAAEAABEgAAIAAOD+DyAAAQAAcwEAAAoMCAoCBgMEBW8CAAAKCwctIg4EEgAWBhYoAQAAKygDAAAKDBIC/hYBAAAbb3cDAAZRFyoHGDM+IAAFAACNpAAAAigEAAAKCgIGAwQFbwIAAAotIg4EEgAWBhYoAQAAKygDAAAKDBIC/hYBAAAbb3cDAAZRFyoOBBRRFiomAgMEKA8AAAZ6RgIsDQIo6gAABgMEKAkAAAYqTgIWai8MKFcAAAYDBCgJAAAGAio2KFcAAAYUFigJAAAGKjICagMEKAsAAAYmAioDMAIAsgEAAAIAABEPAChSAAAGCwcgFAABADBJByAGAAEAMBsHIAIAAQA7zQAAAAcgBgABADsUAQAAOHcBAAAHIAgAAQA7sgAAAAcgCwABADsrAQAAByAUAAEAOzYBAAA4UQEAAAcgJQABADAbByAWAAEAOw4BAAAHICUAAQA7pwAAADguAQAAByAtAAEALhUHIDkAAQAuQAcgQgABAC5cOBEBAAAELTADLAgDKBMAAAYsJQMozwUABiwLKLsdAAZzUmwABioovB0ABgMo0RoABgNzVGwABioDK",
                  "length" : 7737462,
                  "type" : "longString"
               },
               "{}"
            ],
            "columnNumber" : 12734,
            "filename" : "http://localhost:9400/dotnet.runtime.js",
            "innerWindowID" : 10737418242,
            "level" : "debug",
            "lineNumber" : 3,
            "private" : true,
            "sourceId" : null,
            "timeStamp" : 1684452298362.82
         },
         "resourceType" : "console-message"
      }
   ],
   "type" : "resource-available-form"
}
```

14 months agoWe should not establish a heap hard limit for 32 bit platforms (#85844)
Andrew Au [Fri, 19 May 2023 20:34:06 +0000 (13:34 -0700)]
We should not establish a heap hard limit for 32 bit platforms (#85844)

14 months agoUpgrade gcc CI to use gcc13 (#86051)
Adeel Mujahid [Fri, 19 May 2023 20:24:48 +0000 (23:24 +0300)]
Upgrade gcc CI to use gcc13 (#86051)

* Upgrade gcc CI to use gcc13

* Fix a Wstrict-prototypes

14 months agoJIT: Add a pass of liveness for the new locals inside physical promotion (#86043)
Jakob Botsch Nielsen [Fri, 19 May 2023 20:07:48 +0000 (22:07 +0200)]
JIT: Add a pass of liveness for the new locals inside physical promotion (#86043)

Used when decomposing stores to skip the fields that are dying and the remainder if it is dying. Also allows forward sub to kick in for the inserted replacement locals.

14 months agoFix async XsdValidatingReader to not use synchronious IO (#84888)
Morten Larsen [Fri, 19 May 2023 19:32:43 +0000 (21:32 +0200)]
Fix async XsdValidatingReader to not use synchronious IO (#84888)

* Fix async XsdValidatingReader to use GetValueAsync

* Remove async on ProcessReaderEventAsync

* Change to local static functions

14 months ago[wasm] Jiterpreter v128 misc optimizations (#86506)
Katelyn Gadd [Fri, 19 May 2023 18:41:46 +0000 (11:41 -0700)]
[wasm] Jiterpreter v128 misc optimizations (#86506)

* Use v128 opcodes when unrolling memsets/memmoves
* Introduce builder v128_const method
* v8 doesn't optimize splats so use the enormous encoding for v128 zero
* Fix fast memset for nonzero values

14 months agoUpgrade build to use .NET 8 Preview 4 SDK (#86408)
Jeremy Koritzinsky [Fri, 19 May 2023 17:48:28 +0000 (10:48 -0700)]
Upgrade build to use .NET 8 Preview 4 SDK (#86408)

14 months agoFix mapping of redeclared type parameters (#86353)
Sven Boemer [Fri, 19 May 2023 17:25:45 +0000 (10:25 -0700)]
Fix mapping of redeclared type parameters (#86353)

We were skipping the type parameter mapping of compiler-generated
types whose only generic parameters were those implicitly created
for the declaring type's type parameters.

For the testcase in question, the nested state machine inherited
a generic parameter from the display class. This was causing
unnecessary warnings in a field assignment that assigned
`this` (an instance of the display class) to a field on the state
machine. In IL, that assignment references a field type like
`DisplayClass<T>` where `T` is the generic parameter on the state
machine. Here we were properly mapping type parameters of the
display class back to the annotated enclosing method's type
parameters, so we could tell that the "target" required
`PublicMethods`. But the substituted `T` from the state machine
was not mapped, causing the mismatch.

14 months agoRemove invalid assert in EvpPKeyDuplicate
Kevin Jones [Fri, 19 May 2023 17:25:05 +0000 (13:25 -0400)]
Remove invalid assert in EvpPKeyDuplicate

EvpPKeyDuplicate has an invalid assert in it where it asserts that the handle it was passed is not IsInvalid. This may not be true in a multi-threaded scenario where an object is disposed by one thread while another thread is trying to use the resource.

Since we are marshaling the handle as a SafeHandle, just let it do the right thing of throwing an ObjectDisposedException when the marshaller attempts to add a reference to the handle.

14 months agoEnable event pipe tests in NativeAOT CI run (#86389)
Lakshan Fernando [Fri, 19 May 2023 16:33:25 +0000 (09:33 -0700)]
Enable event pipe tests in NativeAOT CI run (#86389)

* Test check on EventPipe NativeAOT

* exclude more tracing tests

* FB

14 months agoUse net6.0 SqlClient TFM under source-build (#84782)
Viktor Hofer [Fri, 19 May 2023 15:56:23 +0000 (17:56 +0200)]
Use net6.0 SqlClient TFM under source-build (#84782)

See discussion in https://github.com/dotnet/source-build-reference-packages/pull/633 for more context.

14 months ago[mono][debugger][docs] How we run debugger tests (#86495)
Ilona Tomkowicz [Fri, 19 May 2023 15:32:16 +0000 (17:32 +0200)]
[mono][debugger][docs] How we run debugger tests (#86495)

* Small fix.

14 months ago[mono][jit] Enable Vector64 support on arm64 in jit mode. (#86188)
Zoltan Varga [Fri, 19 May 2023 15:30:42 +0000 (08:30 -0700)]
[mono][jit] Enable Vector64 support on arm64 in jit mode. (#86188)

Vector64 is handled the same as the other SIMD types, only loads and stores
need to special case it.

14 months ago[browser] Update Wasm SDK pack version in workload manifest (#86382)
Marek Fišera [Fri, 19 May 2023 14:49:23 +0000 (16:49 +0200)]
[browser] Update Wasm SDK pack version in workload manifest (#86382)

14 months agoAdd ProcessStartInfo constructor that accepts IEnumerable<string> arguments (#86346)
Blake Hensley [Fri, 19 May 2023 14:36:59 +0000 (07:36 -0700)]
Add ProcessStartInfo constructor that accepts IEnumerable<string> arguments (#86346)

14 months agoenable TieredPGO by default (#86225)
Andy Ayers [Fri, 19 May 2023 13:23:34 +0000 (06:23 -0700)]
enable TieredPGO by default (#86225)

14 months ago[wasm] Generate jiterp feature detect modules dynamically (#86401)
Katelyn Gadd [Fri, 19 May 2023 13:21:00 +0000 (06:21 -0700)]
[wasm] Generate jiterp feature detect modules dynamically (#86401)

Fixes dotnet/source-build#3442

14 months agoremove [DebuggerDisplayAttribute] from ref assemblies (#86443)
Adam Sitnik [Fri, 19 May 2023 10:30:38 +0000 (12:30 +0200)]
remove [DebuggerDisplayAttribute] from ref assemblies (#86443)

14 months agoFileConfigurationProvider.Dispose should dispose FileProvider when it ows it (#86455)
Adam Sitnik [Fri, 19 May 2023 09:59:10 +0000 (11:59 +0200)]
FileConfigurationProvider.Dispose should dispose FileProvider when it ows it (#86455)

fixes #86146

14 months agoEnable runtime tests on the Interpreter (#86375)
Milos Kotlar [Fri, 19 May 2023 09:14:16 +0000 (11:14 +0200)]
Enable runtime tests on the Interpreter (#86375)

14 months agoLocalized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 218385...
dotnet bot [Fri, 19 May 2023 09:03:59 +0000 (02:03 -0700)]
Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2183857 (#86468)

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

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

14 months agoRemove getMaxIntrinsicSIMDVectorLength from the JIT/EE interface (#86479)
Tanner Gooding [Fri, 19 May 2023 04:22:12 +0000 (21:22 -0700)]
Remove getMaxIntrinsicSIMDVectorLength from the JIT/EE interface (#86479)

* Fixing a couple small typos

* Remove getMaxIntrinsicSIMDVectorLength from the JIT/EE interface

* Update src/coreclr/vm/methodtablebuilder.cpp

---------

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
14 months ago[interp] Undo damage to the simd methods bsearch list; support vectors of char (...
Katelyn Gadd [Fri, 19 May 2023 01:52:25 +0000 (18:52 -0700)]
[interp] Undo damage to the simd methods bsearch list; support vectors of char (#86475)

While inspecting the performance of some vectorized BCL code, I noticed that I accidentally damaged one of the binary search lists.
There also appear to be some cases where vectors of char are used, so I touched up the code to make sure that we will select the right intrinsic in that case if we already supported U2.

14 months agoMove the GCC and CLR Tools Unit Tests legs to use the global build template (#86411)
Jeremy Koritzinsky [Fri, 19 May 2023 01:48:30 +0000 (18:48 -0700)]
Move the GCC and CLR Tools Unit Tests legs to use the global build template (#86411)

* Move the GCC validation leg to use the global build job template instead of the CoreCLR build template.

* Move CLR Tools Unit Tests leg to use the global build job template instead of the CoreCLR build job template

* Add iltools for the CoreCLR tools unit tests job

* Pass -gcc flag to test build in GCC job.

* Update eng/pipelines/coreclr/templates/build-job.yml

14 months agoAdd debugging attributes to System.Security.Claims types (#86424)
James Newton-King [Fri, 19 May 2023 00:51:11 +0000 (08:51 +0800)]
Add debugging attributes to System.Security.Claims types (#86424)

* Add debugging attributes to System.Security.Claims types

* Update

* Update ref, add type proxies

* PR feedback

* PR feedback

14 months ago[wasm] Implement I2 and I4 shuffles in the jiterpreter (#86469)
Katelyn Gadd [Fri, 19 May 2023 00:30:22 +0000 (17:30 -0700)]
[wasm] Implement I2 and I4 shuffles in the jiterpreter (#86469)

Implement a wasm lowering for V128_I2_SHUFFLE and V128_I4_SHUFFLE in the jiterpreter so BCL char operations won't be terribly slow

14 months agoExclude System.* reference assemblies in ILCompiler.Build.Tasks (#86423)
Jan Kotas [Thu, 18 May 2023 22:59:52 +0000 (15:59 -0700)]
Exclude System.* reference assemblies in ILCompiler.Build.Tasks (#86423)

* Exclude System.* reference assemblies in ILCompiler.Build.Tasks

We expect the implementation of these assemblies to come as part of msbuild.

Fixes #83695

* Do not include any System.* assemblies as part of the task

* Delete custom resolver

14 months agoSwitch RhConfig from TCHAR to char (#86393)
Elinor Fung [Thu, 18 May 2023 22:35:07 +0000 (00:35 +0200)]
Switch RhConfig from TCHAR to char (#86393)

- Hide away the details of reading the environment variable as `wchar` vs `char`
- Keep embedded variables as as ASCII (they are embedded as such already)
- Stop using `TCHAR` for the `RhConfig` APIs, which seemed to just be more confusing to consume

14 months ago[wasm] Enable v128 and PackedSimd in the interpreter (#85920)
Katelyn Gadd [Thu, 18 May 2023 22:28:09 +0000 (15:28 -0700)]
[wasm] Enable v128 and PackedSimd in the interpreter (#85920)

Fix the create scalar intrinsics in the jiterpreter
Fix trimming removing SIMD even if SIMD was enabled
Add wasm opcode mapping for extract msb
Fix some SN_ lists in transform-simd being ordered incorrectly
Due to mixed mode it is not possible to control interp SIMD with a runtime option, so remove the options
Disable linker substitutions for SIMD unless AOT is active, so the interp is responsible for the properties
Generate a MINT_NIY for unimplemented PackedSimd methods

14 months ago[wasm] Update jiterpreter documentation (#86461)
Katelyn Gadd [Thu, 18 May 2023 22:20:58 +0000 (15:20 -0700)]
[wasm] Update jiterpreter documentation (#86461)

* Add missing line breaks

* Update jiterpreter documentation with a sample annotated trace

* I love github flavored markdown

14 months agoMake host look for RID-specific assets via a known list by default (#84100)
Elinor Fung [Thu, 18 May 2023 22:13:59 +0000 (00:13 +0200)]
Make host look for RID-specific assets via a known list by default (#84100)

14 months agoRemove workaround for fixed Roslyn bug (#86464)
Miha Zupan [Thu, 18 May 2023 22:05:17 +0000 (00:05 +0200)]
Remove workaround for fixed Roslyn bug (#86464)

14 months agoAdd an undocumented switch to allow controlling the preferred vector width emitted...
Tanner Gooding [Thu, 18 May 2023 21:25:00 +0000 (14:25 -0700)]
Add an undocumented switch to allow controlling the preferred vector width emitted implicitly by the JIT (#86457)

* Add an undocumented switch to allow controlling the preferred vector width emitted implicitly by the JIT

* Resolving issues and responding to PR feedback

* Simplifying the xarch cpu info check

14 months agoRemove noisy assert from Task (#86445)
Stephen Toub [Thu, 18 May 2023 19:10:13 +0000 (15:10 -0400)]
Remove noisy assert from Task (#86445)

14 months agoRemove call to morph on hoisted trees (#86450)
Bruce Forstall [Thu, 18 May 2023 19:05:56 +0000 (12:05 -0700)]
Remove call to morph on hoisted trees (#86450)

It is unnecessary (this causes no diffs). And theoretically if it
did cause diffs, the morphed tree would then not match the tree
being hoisted, meaning CSE wouldn't "find" it and consider it a CSE.

14 months agoClean various aspects of config binding generator up (#86420)
Layomi Akinrinade [Thu, 18 May 2023 18:20:51 +0000 (11:20 -0700)]
Clean various aspects of config binding generator up (#86420)

14 months agoVectorize the CRC64 implementation (#85221)
Brant Burnett [Thu, 18 May 2023 18:09:37 +0000 (14:09 -0400)]
Vectorize the CRC64 implementation (#85221)

14 months agoFix GCStress timeouts in JIT/jit64 (#85040)
Mark Plesko [Thu, 18 May 2023 18:04:34 +0000 (11:04 -0700)]
Fix GCStress timeouts in JIT/jit64 (#85040)

This includes several changes that seem to help with the timeouts. It might be overkill but seems like a good direction as this has been broken for a while.
- Change the test wrapper logic to only put one test in a TestExecutor so that the callstacks are much simpler.
- Factor the test wrapper logic into some helpers to simplify the main method. I also tried to make the "Full" and "XHarness" code generation very similar but didn't try to factor/unify them.
- Mark several tests as RequiresProcessIsolation so that their gcstress is kept separate from the rest of the tests.  Disables a large test under gcstress.
- Add gcstress striping to some merged groups.

Should fix #85590

14 months ago[mono][interp] Fix alignment problems with calls and simd types in unoptimized method...
Vlad Brezae [Thu, 18 May 2023 17:55:03 +0000 (20:55 +0300)]
[mono][interp] Fix alignment problems with calls and simd types in unoptimized methods (#86433)

* [mono][interp] Make stack moving opcode generic

This opcode will be used to properly align stack in various unoptimized scenarios

* [mono][interp] Move params moving code

We still have the stack contents intact here

* [mono][interp] Account for alignment when computed stack size of the params

* [mono][interp] Fix alignment of simd args

When we align the parameters so the frame stack alignment is satisfied, we break the alignment on all simd arguments (which we previously aligned). We need to do another realignment.

* [mono][interp] Fix args alignment for newobj in unoptimized methods

Get rid of special opcode and do all the arg moving with MINT_MOV_STACK_UNOPT

* [mono][interp] Small cleanup

* Add test

14 months agoZip.Unix: don't hang when creating zip file from directory with named pipe. (#85301)
Tom Deseyn [Thu, 18 May 2023 16:58:31 +0000 (18:58 +0200)]
Zip.Unix: don't hang when creating zip file from directory with named pipe. (#85301)

* Zip.Unix: don't hang when creating zip file from directory with named pipe.

When we open the named pipe for reading, that call will block indefinitely
when there is no writer to provide data.

And if we manage to read data from a pipe, that data was probably meant
for someone else.

Rather than opening named pipes, throw an IOException indicating they
are not supported.

And like the named pipes, this also treat character devices,
block devices, and sockets as unsupported types.

* Skip test on browser.

* Tar,Zip: update unsupported file type error message.

* Skip tests on tvOS/iOS.

14 months agoUpdate dependencies from https://github.com/dotnet/arcade build 20230518.1 (#86437)
dotnet-maestro[bot] [Thu, 18 May 2023 16:41:34 +0000 (11:41 -0500)]
Update dependencies from https://github.com/dotnet/arcade build 20230518.1 (#86437)

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.23267.2 -> To Version 8.0.0-beta.23268.1

Dependency coherency updates

Microsoft.SourceLink.GitHub,Microsoft.DotNet.XliffTasks
 From Version 8.0.0-beta.23252.2 -> To Version 8.0.0-beta.23252.2 (parent: Microsoft.DotNet.Arcade.Sdk

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
14 months agoFix issue with hoisting and copy prop interaction (#85493)
Bruce Forstall [Thu, 18 May 2023 16:16:07 +0000 (09:16 -0700)]
Fix issue with hoisting and copy prop interaction (#85493)

* Fix issue with hoisting and copy prop interaction

After hoisting creates a tree copy, it morphs it. That morph might
lose the value numbers on LCL_VAR uses, but leave the SSA numbers.
Copy prop was assuming that such a use had a VN. Instead, check this
dynamically instead of asserting.

Fixes #84619

* Further optimize cast in fgOptimizeCastOnStore()

If we optimize the cast, call `fgOptimizeCast` to see if it can be
optimized further.

* Add regression test

* Feedback

14 months ago[wasm] Set WasmEnableWebcil to true by default (#86330)
Aleksey Kliger (λgeek) [Thu, 18 May 2023 16:13:34 +0000 (12:13 -0400)]
[wasm] Set WasmEnableWebcil to true by default (#86330)

* [wasm] Set WasmEnableWebcil to true by default

* WebcilReader: copy updated struct for BlobReader.ReadUtf8NullTerminated

When using reflection to call a method on BlobReader, make sure to
copy the struct after the call since the internal state is modified

Fixes PdbChecksum extraction from Webcil files

(This was a problem even before webcil-in-wasm)

14 months agoFix scanning synchronized methods (#86427)
Michal Strehovský [Thu, 18 May 2023 13:58:11 +0000 (22:58 +0900)]
Fix scanning synchronized methods (#86427)

After #85810 we need to generate reflection metadata for owning types of static synchronized methods. Before that change, obtaining a RuntimeType for locking would obtain a reflection blocked type. We now need a named type and scanner must predict it.

Found in Pri0 testing.

14 months agoFill out array bounds in metadata transform (#86313)
Michal Strehovský [Thu, 18 May 2023 13:45:22 +0000 (22:45 +0900)]
Fill out array bounds in metadata transform (#86313)

* Fill out array bounds in metadata transform

The metadata writer will nullref if these are not set.

* FB

14 months agoFix Base64 decoding regressions from whitespace handling (#86396)
Stephen Toub [Thu, 18 May 2023 13:21:40 +0000 (09:21 -0400)]
Fix Base64 decoding regressions from whitespace handling (#86396)

* Fix Base64 decoding regressions from whitespace handling

Put the main code paths back to how they were before, with the sole exception being an extra method argument and an extra check in the InvalidData exit section that delegates to a helper if that method argument is true.

* Address PR feedback for pre-existing code