platform/upstream/dotnet/runtime.git
16 months agoFaster optimized frozen dictionary creation (6/6) (#88093)
Adam Sitnik [Wed, 5 Jul 2023 07:45:54 +0000 (09:45 +0200)]
Faster optimized frozen dictionary creation (6/6)  (#88093)

* don't use custom ToArray for small frozen collections, up to 50% gain for creation time for collections with <= 4 items

* for these types GetHashCode returns their value casted to int, so when we receive a Dictionary/HashSet where there are key we know that all hash codes are unique and we can avoid some work later

10-15% CPU time gain and 15-20% allocation reduction for FrozenDictionary and FrozenHashSet where TKey is uint, short, ushort, byte, sbyte

* move Length Buckets code to a dedicated helper type to reduce code duplication and decrease code size

* add tests for Frozen Dictionaries with key being uint, short, ushort, byte, sbyte, nint and nuint

* fix discovered bug: IntPtr started implementing IComparable<IntPtr> in .NET 5

16 months agoBump to libc++ without libatomic linkage (#88402)
Jo Shields [Wed, 5 Jul 2023 03:41:44 +0000 (23:41 -0400)]
Bump to libc++ without libatomic linkage (#88402)

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

16 months agoMove IMeterFactory to System.Diagnostics.DiagnosticSource (#88302)
Tarek Mahmoud Sayed [Wed, 5 Jul 2023 00:45:20 +0000 (17:45 -0700)]
Move IMeterFactory to System.Diagnostics.DiagnosticSource (#88302)

16 months ago[mono][llvm] Fix another crash when using opaque pointers. (#88397)
Zoltan Varga [Wed, 5 Jul 2023 00:26:05 +0000 (20:26 -0400)]
[mono][llvm] Fix another crash when using opaque pointers. (#88397)

16 months ago[mono] Respect KeepNativeSymbols when building cross compilers. (#88398)
Zoltan Varga [Wed, 5 Jul 2023 00:25:43 +0000 (20:25 -0400)]
[mono] Respect KeepNativeSymbols when building cross compilers. (#88398)

16 months agochange regex options tests to extension method (#88366)
Dan Moseley [Wed, 5 Jul 2023 00:11:43 +0000 (17:11 -0700)]
change regex options tests to extension method (#88366)

* extension method for regexoptions

* Revert "extension method for regexoptions"

This reverts commit 95b05489f0245d23d6d265a2cad2fca2ae0975a0.

* Inline UseOption

16 months ago[mono][interp] Extract simd create opcodes in separate methods (#88381)
Vlad Brezae [Tue, 4 Jul 2023 17:42:46 +0000 (20:42 +0300)]
[mono][interp] Extract simd create opcodes in separate methods (#88381)

Newer versions of clang allocate the local buffer repeatedly by bumping the stack. This behavior seems dubious, leading to stack overflows, but extracting the code outside the interp main loop is an improvement anyway for the interpreter.

16 months ago[LoongArch64] Fix the NotImplementedException within R2RDump. (#88379)
Qiao Pengcheng [Tue, 4 Jul 2023 17:02:35 +0000 (01:02 +0800)]
[LoongArch64] Fix the NotImplementedException within R2RDump. (#88379)

16 months agoJIT: Handle primitive-sized remainders overlapping padding/promotions in physical...
Jakob Botsch Nielsen [Tue, 4 Jul 2023 16:02:38 +0000 (18:02 +0200)]
JIT: Handle primitive-sized remainders overlapping padding/promotions in physical promotion (#88109)

The remainder may be separated by a bit of padding or other promoted fields but
still fit into a primitive; in this case it is still beneficial to copy it all
as a primitive, instead of falling back to a full block copy.

Example:
```csharp
private S _s;

void Foo()
{
    S s = new();
    s.A = 10;
    s.D = 20;
    s.F = 30; // A, D, F gets promoted
    _s = s;
}

private struct S
{
    public byte A;
    public byte B;
    public byte C;
    public byte D;
    public byte E;
    public byte F;
}
```

```diff
 Processing block operation [000018] that involves replacements
   dst+003 <- V04 (V01.[003..004)) (last use)
   dst+005 <- V05 (V01.[005..006)) (last use)
   Block op remainder: [001..003) [004..005)
-  => Remainder strategy: retain a full block op
+  => Remainder strategy: int at +001
```

```diff
 ;  V00 this         [V00,T01] (  3,  3   )     ref  ->  rcx         this class-hnd single-def
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[SF] ld-addr-op
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+00H]   do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )   ubyte  ->  zero-ref    "V01.[000..001)"
 ;* V04 tmp2         [V04    ] (  0,  0   )   ubyte  ->  zero-ref    "V01.[003..004)"
 ;* V05 tmp3         [V05    ] (  0,  0   )   ubyte  ->  zero-ref    "V01.[005..006)"
 ;  V06 tmp4         [V06,T00] (  5, 10   )   byref  ->  rcx         single-def "Spilling address for field-by-field copy"
 ;
 ; Lcl frame size = 0

 G_M52879_IG01:  ;; offset=0000H
  ;; size=0 bbWeight=1 PerfScore 0.00
 G_M52879_IG02:  ;; offset=0000H
        add      rcx, 8
        xor      eax, eax
-       mov      dword ptr [rcx], eax
-       mov      dword ptr [rcx+02H], eax
+       mov      dword ptr [rcx+01H], eax
        mov      byte  ptr [rcx], 10
        mov      byte  ptr [rcx+03H], 20
        mov      byte  ptr [rcx+05H], 30
- ;; size=22 bbWeight=1 PerfScore 5.50
-G_M52879_IG03:  ;; offset=0016H
+ ;; size=20 bbWeight=1 PerfScore 4.50
+G_M52879_IG03:  ;; offset=0014H
        ret
  ;; size=1 bbWeight=1 PerfScore 1.00

-; Total bytes of code 23, prolog size 0, PerfScore 8.80, instruction count 8, allocated bytes for code 23 (MethodHash=1da13170) for method Program:Foo():this (FullOpts)
+; Total bytes of code 21, prolog size 0, PerfScore 7.60, instruction count 7, allocated bytes for code 21 (MethodHash=1da13170) for method Program:Foo():this (FullOpts)
 ; ============================================================

```

We have to be careful, however, since the covering segment can now contain
promoted fields. If this happens we need to make sure we write the promoted
field _after_ the remainder.

16 months agoJIT: Quirk a quirk in fgExpandVirtualVtableCallTarget (#88374)
Jakob Botsch Nielsen [Tue, 4 Jul 2023 13:18:39 +0000 (15:18 +0200)]
JIT: Quirk a quirk in fgExpandVirtualVtableCallTarget (#88374)

Fix #88349

16 months ago[mono] Reenable disabled tests as mono now respects non-public custom attributes...
Ivan Povazan [Tue, 4 Jul 2023 13:02:54 +0000 (15:02 +0200)]
[mono] Reenable disabled tests as mono now respects non-public custom attributes in dynamic assemblies (#88322)

* Reenable disabled tests
* Disable Roslyn analyzer tests in the browser as Monitor.Wait / Monitor.Pulse are not supported on single-threaded WASM

Contributes to: https://github.com/dotnet/runtime/issues/60650

16 months agoEmail addresses in same domain not equal (#87721)
feiyun0112 [Tue, 4 Jul 2023 10:26:27 +0000 (18:26 +0800)]
Email addresses in same domain not equal (#87721)

Different email addresses in same domain should not be equal.
UriComponents.UserInfo will compare also UserInfo from the Uris.

16 months agoonly log errors of Task/Promise marshaling (#88326)
Pavel Savara [Tue, 4 Jul 2023 09:23:46 +0000 (11:23 +0200)]
only log errors of Task/Promise marshaling (#88326)

16 months agoUnified source file formatting (#88330)
Marie Píchová [Tue, 4 Jul 2023 09:17:51 +0000 (11:17 +0200)]
Unified source file formatting (#88330)

16 months ago[OSX] HybridGlobalization Workaround for insufficiently sized destination buffer...
Meri Khamoyan [Tue, 4 Jul 2023 06:20:43 +0000 (10:20 +0400)]
[OSX] HybridGlobalization Workaround for  insufficiently sized destination buffer (#88184)

Workaround for insufficiently sized dest buffer

16 months agoRemove conservative generic scanning logic (#88360)
Michal Strehovský [Tue, 4 Jul 2023 06:20:06 +0000 (15:20 +0900)]
Remove conservative generic scanning logic (#88360)

@EgorBo's #88025 made it possible to undo conservative scanning logic added in dotnet/corert#7618.

Saves 0.4% in size for Stage1 and Stage2 apps.

16 months agoAllow inlining array methods (#88367)
Michal Strehovský [Tue, 4 Jul 2023 05:48:39 +0000 (14:48 +0900)]
Allow inlining array methods (#88367)

`CanInline` would return false to methods that implement generic interfaces on arrays because we didn't consider the magic `Array<T>` types constructed.

For:

```csharp
static int Main()
{
    IReadOnlyCollection<int> l = new int[] { 1, 2, 3 };
    return l.Count;
}
```

Before:

```
       sub      rsp, 40
                                                ;; size=4 bbWeight=1 PerfScore 0.25
G_M24375_IG02:  ;; offset=0004H
       lea      rcx, [(reloc 0x4000000000420a70)]      ; int[]
       mov      edx, 3
       call     CORINFO_HELP_NEWARR_1_VC
       lea      rcx, [(reloc 0x4000000000420aa8)]      ; const ptr
       mov      rdx, qword ptr [rcx]
       mov      qword ptr [rax+10H], rdx
       mov      rdx, qword ptr [rcx+04H]
       mov      qword ptr [rax+14H], rdx
       mov      rcx, rax
       call     System.Array`1[int]:get_Count():int:this
       nop
                                                ;; size=48 bbWeight=1 PerfScore 9.75
G_M24375_IG03:  ;; offset=0034H
       add      rsp, 40
       ret
```

After:

```
       sub      rsp, 40
                                                ;; size=4 bbWeight=1 PerfScore 0.25
G_M24375_IG02:  ;; offset=0004H
       lea      rcx, [(reloc 0x4000000000420a70)]      ; int[]
       mov      edx, 3
       call     CORINFO_HELP_NEWARR_1_VC
       lea      rcx, [(reloc 0x4000000000420aa8)]      ; const ptr
       mov      rdx, qword ptr [rcx]
       mov      qword ptr [rax+10H], rdx
       mov      rdx, qword ptr [rcx+04H]
       mov      qword ptr [rax+14H], rdx
       mov      eax, 3
                                                ;; size=44 bbWeight=1 PerfScore 8.50
G_M24375_IG03:  ;; offset=0030H
       add      rsp, 40
       ret
```

16 months agoRemove empty files (#88362)
Dan Moseley [Tue, 4 Jul 2023 05:22:09 +0000 (22:22 -0700)]
Remove empty files (#88362)

16 months agoFix libraries Windows test runner script (#88354)
Bruce Forstall [Tue, 4 Jul 2023 04:18:09 +0000 (21:18 -0700)]
Fix libraries Windows test runner script (#88354)

Having HAS_TEST_RESULTS unset leads to a Windows CMD script
syntax error.

Clean up a few other things while there:
1. Explicitly set ENABLEEXTENSIONS
2. Set a variable to the test exit code. There's an unsafe assumption
currently that `%ERRORLEVEL%` doesn't change between the test run
and all of the subsequent uses.
3. Remove unnecessary quotes around setting `HAS_TEST_RESULTS=1`

Fixes #88353

16 months agoUp Minimum CMake Version to 3.20 (#86530)
Ivan Diaz Sanchez [Tue, 4 Jul 2023 02:03:12 +0000 (19:03 -0700)]
Up Minimum CMake Version to 3.20 (#86530)

* Let's see what happens :)

* CMake 3.20 works on my machine???

* Upped the llibraries CMake version to 3.20

* Upped native libs CMake version to 3.20, and updated the requirements docs.

* Add CMake Policy to 3.17.0 for native libs because of wasm.

* Downgraded native libs CMake to 3.17.0 temporarily, while we figure out the funny troublemaker wasm.

* Added a couple notes regarding CMake on Linux and Windows, and upped the corehost and libunwind CMake versions to 3.20

* Reverted external native components CMake versions, and upped tests to 3.20. Only Mono remains now.

* Added mono to the 3.20 gang. Also, changed the condition for wasm.

* Had to condition mono's CMake version as well because of wasm.

* DEBUG-ONLY COMMIT: Added some CMake logging to help me figure out what is set for wasm to think of the appropriate conditional.

* DEBUG-ONLY COMMIT: I think I have the answer for wasm now/

* Restored the DEBUG-ONLY changes and set 3.20 as the universal CMake, as the missing machines have now been updated.

* Updated requirements doc with notes for Debian 11 and lower.

16 months agoImprove LoggerFactory and Logger debugging (#88313)
James Newton-King [Tue, 4 Jul 2023 01:42:39 +0000 (09:42 +0800)]
Improve LoggerFactory and Logger debugging (#88313)

16 months agoTry adding cross-compilers for Musl (#87841)
Jo Shields [Mon, 3 Jul 2023 21:53:34 +0000 (17:53 -0400)]
Try adding cross-compilers for Musl (#87841)

* Add cross-compilers for Musl

* Fix LLVM linkage on Musl

16 months agoPass exact context to getMethodInfo (#88025)
Egor Bogatov [Mon, 3 Jul 2023 21:36:59 +0000 (23:36 +0200)]
Pass exact context to getMethodInfo (#88025)

* Modify JIT-EE API

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
16 months agoShrink column width in `ilc --help` (#88356)
Adeel Mujahid [Mon, 3 Jul 2023 21:19:50 +0000 (00:19 +0300)]
Shrink column width in `ilc --help` (#88356)

16 months agoFix condition for ENSURE_PRIMARY_STACK_SIZE (#88342)
Jan Kotas [Mon, 3 Jul 2023 20:58:35 +0000 (13:58 -0700)]
Fix condition for ENSURE_PRIMARY_STACK_SIZE (#88342)

Fixes #88339

16 months ago TcpListener should implement IDisposable (#88043)
Alexander Radchenko [Mon, 3 Jul 2023 20:52:51 +0000 (02:52 +0600)]
 TcpListener should implement IDisposable (#88043)

* TcpListener should implement IDisposable

* lint

* Code review

* Update src/libraries/System.Net.Sockets/src/System/Net/Sockets/TCPListener.cs

Co-authored-by: Anton Firszov <antonfir@gmail.com>
* Update TCPListener.cs [EditorBrowsable(EditorBrowsableState.Never)]

* Code review

* lint

* Code review

---------

Co-authored-by: Anton Firszov <antonfir@gmail.com>
16 months agoFix incorrect sequence number used in NTLM signature calculation (#87998)
Filip Navara [Mon, 3 Jul 2023 20:44:14 +0000 (22:44 +0200)]
Fix incorrect sequence number used in NTLM signature calculation (#87998)

16 months ago[mono] Remove mono_loader_save_bundled_library() (#88331)
Alexander Köplinger [Mon, 3 Jul 2023 20:14:43 +0000 (22:14 +0200)]
[mono] Remove mono_loader_save_bundled_library() (#88331)

16 months agoRemove TODO from a comment in System.Guid.cs (#88337)
SwapnilGaikwad [Mon, 3 Jul 2023 19:43:36 +0000 (20:43 +0100)]
Remove TODO from a comment in System.Guid.cs (#88337)

16 months agoLocalized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 221346...
dotnet bot [Mon, 3 Jul 2023 15:46:39 +0000 (17:46 +0200)]
Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2213468 (#88301)

16 months ago[Crossgen] Don't display list of enum values in help (#88324)
Adam Sitnik [Mon, 3 Jul 2023 14:14:56 +0000 (16:14 +0200)]
[Crossgen] Don't display list of enum values in help (#88324)

16 months agoUpgrade to LLVM 16 & C++17, and bundle libc++ on Linux (#87190)
Jo Shields [Mon, 3 Jul 2023 13:46:29 +0000 (09:46 -0400)]
Upgrade to LLVM 16 & C++17, and bundle libc++ on Linux (#87190)

* Upgrade to LLVM 16, and stop focusing on C++11 ABi stuff from CentOS 7

Co-authored-by: Zoltan Varga <vargaz@gmail.com>
16 months ago[mono] fix memfuncs for FreeBSD (#88300)
Thefrank [Mon, 3 Jul 2023 13:31:49 +0000 (06:31 -0700)]
[mono] fix memfuncs for FreeBSD (#88300)

* fix memfuncs for FreeBSD

* match format

16 months agoImprove Hosting debugging (#88308)
James Newton-King [Mon, 3 Jul 2023 12:43:08 +0000 (20:43 +0800)]
Improve Hosting debugging (#88308)

* Improve Hosting debugging

* Update

* Remove Logger

* PR feedback

16 months agoExpose stack trace metadata stripping as a supported option (#88235)
Michal Strehovský [Mon, 3 Jul 2023 04:08:33 +0000 (13:08 +0900)]
Expose stack trace metadata stripping as a supported option (#88235)

16 months agoFix OptionsValidator source-gen to skip static and const members (#88254)
Nikita Balabaev [Sun, 2 Jul 2023 18:37:07 +0000 (20:37 +0200)]
Fix OptionsValidator source-gen to skip static and const members (#88254)

Co-authored-by: Nikita Balabaev <nbalabaev@microsoft.com>
16 months agoImplement IList<T> on some LINQ iterators (#88249)
Stephen Toub [Sat, 1 Jul 2023 22:14:52 +0000 (18:14 -0400)]
Implement IList<T> on some LINQ iterators (#88249)

`ICollection<T>` provides both a Count and a CopyTo, and `IList<T>` an indexer, all of which can make various consumption mechanisms more efficient. We only implement the interfaces when the underlying collection has a fixed size and all of the interface implementations are side-effect free (in particular, while appealing to do so, we don't implement them on various Select iterators).

Some of the serialization tests need to be fixed as a result. The state of Queue's array is a bit different based on how its initialized, and such private details show up in BinaryFormatter output.  Rather than special-casing the output per framework and core, I've just changed the test itself to ensure Queue can't see the size of the input collection.

16 months ago[wasm] Implement complete PackedSimd feature set in interpreter (#87903)
Katelyn Gadd [Sat, 1 Jul 2023 20:08:33 +0000 (13:08 -0700)]
[wasm] Implement complete PackedSimd feature set in interpreter (#87903)

Implement all PackedSIMD APIs in wasm builds of the interpreter based on a table and auto-generated code
Implement most PackedSIMD APIs in jiterpreter
Detect constant simd arguments in jiterpreter and verify them
Simplify unused/temporary dregs in interp

16 months agoAvoid reporting frozen segments in GetGenerationBounds (#85727)
Andrew Au [Sat, 1 Jul 2023 20:04:28 +0000 (13:04 -0700)]
Avoid reporting frozen segments in GetGenerationBounds (#85727)

Co-authored-by: Noah Falk <noahfalk@users.noreply.github.com>
16 months agoUnify JIT interface getTypeLayout between VM and crossgen2; refine what is considered...
Jakob Botsch Nielsen [Sat, 1 Jul 2023 19:35:12 +0000 (21:35 +0200)]
Unify JIT interface getTypeLayout between VM and crossgen2; refine what is considered "significant padding" (#88238)

* Stop considering auto layout types to have significant padding in the VM. This was already the behavior in crossgen2. This fixes one of the points of #71711.
* Remove special case where we never considered structs with GC pointers to have significant padding. After the above change this has no additional diffs.
* Fix the inline array layout expansion; the numFields of the inline array node was computed incorrectly, and the parent indices of descendants were not updated correctly

Example C#:
```csharp
private (long, int) _tuple;

[MethodImpl(MethodImplOptions.NoInlining)]
private void Foo()
{
    _tuple = (5, 10);
}
```

Before:
```asm
;  V00 this         [V00,T00] (  3,  3   )     ref  ->  rcx         this class-hnd single-def
;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+00H]   do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;  V02 tmp1         [V02    ] (  4,  8   )  struct (16) [rsp+08H]   do-not-enreg[SB] ld-addr-op "NewObj constructor temp"
;  V03 tmp2         [V03,T01] (  3,  5   )    long  ->  [rsp+08H]   do-not-enreg[] "field V02.Item1 (fldOffset=0x0)" P-DEP
;  V04 tmp3         [V04,T02] (  3,  5   )     int  ->  [rsp+10H]   do-not-enreg[] "field V02.Item2 (fldOffset=0x8)" P-DEP
;
; Lcl frame size = 24

G_M52879_IG01:  ;; offset=0000H
       sub      rsp, 24
       vzeroupper
;; size=7 bbWeight=1 PerfScore 1.25
G_M52879_IG02:  ;; offset=0007H
       vxorps   xmm0, xmm0, xmm0
       vmovups  xmmword ptr [rsp+08H], xmm0
       mov      qword ptr [rsp+08H], 5
       mov      dword ptr [rsp+10H], 10
       vmovups  xmm0, xmmword ptr [rsp+08H]
       vmovups  xmmword ptr [rcx+08H], xmm0
;; size=38 bbWeight=1 PerfScore 8.33
G_M52879_IG03:  ;; offset=002DH
       add      rsp, 24
       ret
;; size=5 bbWeight=1 PerfScore 1.25

; Total bytes of code 50, prolog size 7, PerfScore 15.83, instruction count 10, allocated bytes for code 50 (MethodHash=1da13170) for method Program:Foo():this (FullOpts)
```

After:
```asm
;  V00 this         [V00,T00] (  4,  4   )     ref  ->  rcx         this class-hnd single-def
;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+00H]   do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp"
;* V03 tmp2         [V03,T01] (  0,  0   )    long  ->  zero-ref    "field V02.Item1 (fldOffset=0x0)" P-INDEP
;* V04 tmp3         [V04,T02] (  0,  0   )     int  ->  zero-ref    "field V02.Item2 (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0

G_M52879_IG01:  ;; offset=0000H
;; size=0 bbWeight=1 PerfScore 0.00
G_M52879_IG02:  ;; offset=0000H
       mov      qword ptr [rcx+08H], 5
       mov      dword ptr [rcx+10H], 10
;; size=15 bbWeight=1 PerfScore 2.00
G_M52879_IG03:  ;; offset=000FH
       ret
;; size=1 bbWeight=1 PerfScore 1.00

; Total bytes of code 16, prolog size 0, PerfScore 4.60, instruction count 3, allocated bytes for code 16 (MethodHash=1da13170) for method Program:Foo():this (FullOpts)
```

16 months agoFix make repro cli command (#88289)
Adeel Mujahid [Sat, 1 Jul 2023 19:02:19 +0000 (22:02 +0300)]
Fix make repro cli command (#88289)

16 months agoJIT: Remove a quirk in regular promotion (#88130)
Jakob Botsch Nielsen [Sat, 1 Jul 2023 18:36:20 +0000 (20:36 +0200)]
JIT: Remove a quirk in regular promotion (#88130)

Also fix a bug in LSRA: if we undo promotion of one field of a multi-reg
struct and as a result undo for the other fields as well, we must also
clear out the largeVectorVars bitset to indicate these are no longer
candidates.

16 months agoApply a number of improvements and bugfixes to JsonNode (#88194)
Eirik Tsarpalis [Sat, 1 Jul 2023 08:07:46 +0000 (09:07 +0100)]
Apply a number of improvements and bugfixes to JsonNode (#88194)

* Avoid JsonElement torn read in a few JsonArray/JsonDocument and unify code patterns.

* Simplify and clean up JsonValue implementation -- fix DeepEquality bugs.

* Update src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValueOfTPrimitive.cs

* Avoid delegate allocation in the JsonObject setter.

16 months ago[wasm] Introduce <InvariantTimezone> build flag (#87284)
Pavel Savara [Sat, 1 Jul 2023 07:50:21 +0000 (09:50 +0200)]
[wasm] Introduce <InvariantTimezone> build flag (#87284)

16 months agoJIT: Don't set patchpoints in methods with CORINFO_DEBUG_CODE (#88227)
Andy Ayers [Sat, 1 Jul 2023 01:53:48 +0000 (18:53 -0700)]
JIT: Don't set patchpoints in methods with CORINFO_DEBUG_CODE (#88227)

In #88199 the debugger is overriding some jit flags, but has left other flags set
that confuse the jit: both `TIER0` and `DEBUG_CODE` end uip set so one part of the jit
used logic appropriate for `TIER0` and another part did not.

The JIT ended up creating a patchpoint for OSR in a method with localloc and this
combination is not supported by OSR and lead to a crash.

Harden the jit so if the runtime asks for debuggable code, the jit will never
generate patchpoints.

16 months agoFix Out of memory with source gen tests (#88266)
Tarek Mahmoud Sayed [Sat, 1 Jul 2023 00:52:21 +0000 (17:52 -0700)]
Fix Out of memory with source gen tests (#88266)

16 months agoClean up Guid.DecodeByte (#88267)
Egor Bogatov [Fri, 30 Jun 2023 23:17:52 +0000 (01:17 +0200)]
Clean up Guid.DecodeByte (#88267)

16 months agoFix build failures when declaring a COM-style enumerable type (#88263)
Jeremy Koritzinsky [Fri, 30 Jun 2023 21:34:20 +0000 (14:34 -0700)]
Fix build failures when declaring a COM-style enumerable type (#88263)

16 months ago[browser] Fix missing braces when resolving application culture (#88264)
Ilona Tomkowicz [Fri, 30 Jun 2023 21:15:28 +0000 (23:15 +0200)]
[browser] Fix missing braces when resolving application culture (#88264)

Regression from https://github.com/dotnet/runtime/pull/86255.

16 months agoAdd IHostedLifecycleService (#87335)
Steve Harter [Fri, 30 Jun 2023 21:04:00 +0000 (16:04 -0500)]
Add IHostedLifecycleService (#87335)

16 months agoDelete stale SkipOnTargetFramework attributes (and a few tests) (#88251)
Stephen Toub [Fri, 30 Jun 2023 20:48:31 +0000 (16:48 -0400)]
Delete stale SkipOnTargetFramework attributes (and a few tests) (#88251)

These projects don't run tests on .NET Framework.

16 months agoSimplify LINQ Shuffler test helper (#88252)
Stephen Toub [Fri, 30 Jun 2023 20:48:22 +0000 (16:48 -0400)]
Simplify LINQ Shuffler test helper (#88252)

The seed support is dead code, and the whole thing can be simplified down to a one-line helper.

16 months agoRename JITAllowOptionalRelocs to JitEnableOptionalRelocs (#88243)
Egor Bogatov [Fri, 30 Jun 2023 20:20:09 +0000 (22:20 +0200)]
Rename JITAllowOptionalRelocs to JitEnableOptionalRelocs (#88243)

Co-authored-by: Michał Petryka <35800402+MichalPetryka@users.noreply.github.com>
16 months agoRemove code in nativeaot event trace files under !FEATURE_NATIVEAOT or FEATURE_DTRACE...
Elinor Fung [Fri, 30 Jun 2023 20:08:27 +0000 (16:08 -0400)]
Remove code in nativeaot event trace files under !FEATURE_NATIVEAOT or FEATURE_DTRACE (#88258)

16 months agoAdd NFloat as an interop intrinsic for the source generator (#88257)
Jeremy Koritzinsky [Fri, 30 Jun 2023 18:30:22 +0000 (11:30 -0700)]
Add NFloat as an interop intrinsic for the source generator (#88257)

16 months agoReduce allocations in Microsoft.Extensions.Configuration (#88211)
Pent Ploompuu [Fri, 30 Jun 2023 16:39:46 +0000 (19:39 +0300)]
Reduce allocations in Microsoft.Extensions.Configuration (#88211)

Co-authored-by: Günther Foidl <gue@korporal.at>
16 months ago[libs] Fix poll events conversion (#86843)
Trung Nguyen [Fri, 30 Jun 2023 16:05:40 +0000 (02:05 +1000)]
[libs] Fix poll events conversion (#86843)

- Use bitwise and to check for all flags instead of using a switch
statement for poll events flags conversion.
- Convert poll events before comparison in assert statement.

16 months agoTweak the register order for xarch to better account for callee saved (#88151)
Tanner Gooding [Fri, 30 Jun 2023 15:43:01 +0000 (08:43 -0700)]
Tweak the register order for xarch to better account for callee saved (#88151)

* Tweak the register order for xarch to better account for callee saved

* Have a different register order for leaf methods

* Preference R12 after R13 for 2x the savings

* Allow float/vector constants to use EVEX registers

* Fix Runtime_34937 to expect the right codegen on Unix

* Don't add VAR_ORDER_LEAF and add a comment explaining why we prefer callee trash then callee save

* Simplifying the REG_VAR_ORDER_FLT_EVEX_CALLEE_* defines

* Ensure x86 matches the general x64 ordering

* Ensure that AllBitsSet vector constants correctly handle high simd registers

* Ensure that Runtime_34937 expects the right codegen for Windows x64

* Improve the register ordering more

* Ensure scalar AllBitsSet handles EVEX registers

* Don't change register allocation order for x86

* Minimize the diffs

16 months agoImprove Microsoft.Extensions.DependencyInjection debugging (#88082)
James Newton-King [Fri, 30 Jun 2023 13:19:14 +0000 (21:19 +0800)]
Improve Microsoft.Extensions.DependencyInjection debugging (#88082)

16 months agoJIT: Refactor physical promotion store decomposition slightly (#88182)
Jakob Botsch Nielsen [Fri, 30 Jun 2023 12:50:14 +0000 (14:50 +0200)]
JIT: Refactor physical promotion store decomposition slightly (#88182)

Introduce a LocationAccess helper class to create derived accesses off
of the destination and source locations for the store. Unify all the
code that looks for regularly promoted fields in this class, and use it
consistently for all the derived accesses.

Also update terminology from "assignment" to "store" in a few places,
and add a "(last use)" string for fields when decomposing block stores.

16 months agoupdate QuicError (#88234)
Tomas Weinfurt [Fri, 30 Jun 2023 12:15:05 +0000 (14:15 +0200)]
update QuicError (#88234)

* update QuicError

* feedback

* ProtocolError

16 months agoUpdate System.CommandLine version (#84229)
Adeel Mujahid [Fri, 30 Jun 2023 12:06:43 +0000 (15:06 +0300)]
Update System.CommandLine version (#84229)

16 months agoUpdate the CompilerPlatformTestingVersion. (#88221)
Parker Bibus [Fri, 30 Jun 2023 08:34:57 +0000 (01:34 -0700)]
Update the CompilerPlatformTestingVersion. (#88221)

16 months agoLocalized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 221217...
dotnet bot [Fri, 30 Jun 2023 08:29:21 +0000 (10:29 +0200)]
Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2212176 (#88219)

16 months agoDon't emit nor generate the manifest for NativeRuntimeEventSource (#86850)
Nickolas McDonald [Fri, 30 Jun 2023 07:45:25 +0000 (03:45 -0400)]
Don't emit nor generate the manifest for NativeRuntimeEventSource (#86850)

16 months ago[OSX] When HybridGlobalization mode is on load hybrid icu file (#88041)
Meri Khamoyan [Fri, 30 Jun 2023 07:00:22 +0000 (11:00 +0400)]
[OSX] When HybridGlobalization mode is on load hybrid icu file  (#88041)

Load icudt_hybrid.dat file when hybrid mode is on

16 months agoDisable Aot and Trim analyzers when building runtime tests (#88209)
Jan Kotas [Fri, 30 Jun 2023 06:53:58 +0000 (23:53 -0700)]
Disable Aot and Trim analyzers when building runtime tests (#88209)

When targeting native AOT, these analyzers are producing warnings that are treated as errors

16 months ago[nativeaot][perf] Simplify the build process for the perf measurements (#88201)
Milos Kotlar [Fri, 30 Jun 2023 06:08:30 +0000 (08:08 +0200)]
[nativeaot][perf] Simplify the build process for the perf measurements (#88201)

* Simplify the build process and update sample app build script

* Update eng/pipelines/coreclr/perf-non-wasm-jobs.yml

Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
---------

Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
16 months agoSpecially consider CLong, CULong and Guid strictly blittable (#88213)
Jeremy Koritzinsky [Fri, 30 Jun 2023 02:58:29 +0000 (19:58 -0700)]
Specially consider CLong, CULong and Guid strictly blittable (#88213)

16 months agoFix MSBuild integration for the host build with CMake 3.26 (#88208)
Jeremy Koritzinsky [Thu, 29 Jun 2023 23:05:19 +0000 (16:05 -0700)]
Fix MSBuild integration for the host build with CMake 3.26 (#88208)

16 months ago[wasm][debugger] Fixing "Frame not in module" after vscode-js-debug changes (#87979)
Thays Grazia [Thu, 29 Jun 2023 22:15:43 +0000 (19:15 -0300)]
[wasm][debugger] Fixing "Frame not in module" after vscode-js-debug changes (#87979)

* support executionContextsCleared message

* addressing @radical comments

* change singleordefault with firstordefault

16 months agoReplace EventWrittenEventArgs.EmptyPayload with ReadOnlyCollection.Empty singleton...
Stephen Toub [Thu, 29 Jun 2023 21:02:24 +0000 (17:02 -0400)]
Replace EventWrittenEventArgs.EmptyPayload with ReadOnlyCollection.Empty singleton (#87906)

16 months agoJIT: fix case where RBO leads to an invalid CSE (#88159)
Andy Ayers [Thu, 29 Jun 2023 19:46:59 +0000 (12:46 -0700)]
JIT: fix case where RBO leads to an invalid CSE (#88159)

If phi-based RBO bypasses a block with a memory PHI, it is possible for CSE to find
invalid memory-based CSEs. An example of this is seen in the attached test case.

Ideally perhaps CSE would kill availability of these CSEs at the point where memory
can change, but that seems difficult to arrange. Instead, we mark the bypased block
as one that will not propagate any incoming CSEs, as the failures we know of require
CSEs to flow back through this block.

Fixes #88091.

16 months agoTarEntry: small fix-up. (#88118)
Tom Deseyn [Thu, 29 Jun 2023 18:18:13 +0000 (20:18 +0200)]
TarEntry: small fix-up. (#88118)

16 months agoDelete some dead code (#88139)
Jan Kotas [Thu, 29 Jun 2023 18:16:14 +0000 (11:16 -0700)]
Delete some dead code (#88139)

* Delete some dead code

* Delete comment referencing code that no longer exists

16 months agoTryFindSystemTimeZoneById (#88071)
Alexander Radchenko [Thu, 29 Jun 2023 17:13:36 +0000 (23:13 +0600)]
TryFindSystemTimeZoneById (#88071)

Co-authored-by: Dan Moseley <danmose@microsoft.com>
16 months agoUpdate NugetProjectModelVersion and NugetPackagingVersion from 6.2.2 to 6.2.4 (#88107)
Parker Bibus [Thu, 29 Jun 2023 17:08:24 +0000 (10:08 -0700)]
Update NugetProjectModelVersion and NugetPackagingVersion from 6.2.2 to 6.2.4 (#88107)

* Update Nuget Package Versions.

* Update another Nuget Value.

16 months ago[mono][interp] Fix handling of boolean comparison (#88193)
Vlad Brezae [Thu, 29 Jun 2023 16:47:57 +0000 (19:47 +0300)]
[mono][interp] Fix handling of boolean comparison (#88193)

A boolean value is actually stored as byte behind the scenes, so it can have a value range from 0..255, not just 0/1. Stop converting it to 0/1 when loading it since it can lead to comparison issues.

16 months agoAllow ResolveReadyToRunCompilers to be run under FreeBSD (#84250)
Szczepan Ćwikliński [Thu, 29 Jun 2023 16:30:32 +0000 (18:30 +0200)]
Allow ResolveReadyToRunCompilers to be run under FreeBSD (#84250)

* Allow ResolveReadyToRunCompilers to be run under FreeBSD

* Generalize to any Linux

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
16 months agoDiscard lastIndexMarshalled variable if it is not otherwise used (#88060)
Jackson Schuster [Thu, 29 Jun 2023 16:30:01 +0000 (09:30 -0700)]
Discard lastIndexMarshalled variable if it is not otherwise used (#88060)

Tracks the last index marshalled in the interop generators to ensure we don't cleanup any unmarshalled elements. It discards the "last index marshalled" variable if it is unused in the cleanup stage.

16 months agoZipArchive now disposes given stream only once (#87982)
etemi [Thu, 29 Jun 2023 15:36:18 +0000 (17:36 +0200)]
ZipArchive now disposes given stream only once (#87982)

* Fix #79695

Even though the IDisposable contract says that you should be able to call
Dispose multiple times, be forgiving for implementations that throw when
Dispose is called multiple times.

* Remove line

* Augmented test to explicitly test behavior according to leaveOpen parameter

---------

Co-authored-by: etemi <etemi>
16 months ago[main] Update dependencies from dotnet/arcade dotnet/sdk (#88187)
dotnet-maestro[bot] [Thu, 29 Jun 2023 15:33:43 +0000 (11:33 -0400)]
[main] Update dependencies from dotnet/arcade dotnet/sdk (#88187)

* Update dependencies from https://github.com/dotnet/arcade build 20230628.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.23327.3 -> To Version 8.0.0-beta.23328.2

* Update dependencies from https://github.com/dotnet/sdk build 20230629.3

Microsoft.DotNet.ApiCompat.Task
 From Version 8.0.100-preview.7.23328.5 -> To Version 8.0.100-preview.7.23329.3

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
16 months agoSupport displaying X.500 AttributeValue in binary form
Kevin Jones [Thu, 29 Jun 2023 15:08:29 +0000 (11:08 -0400)]
Support displaying X.500 AttributeValue in binary form

16 months ago[mono][interp] Improve verbose output of dumped instructions (#88185)
Vlad Brezae [Thu, 29 Jun 2023 14:26:23 +0000 (17:26 +0300)]
[mono][interp] Improve verbose output of dumped instructions (#88185)

* [mono][interp] Improve verbose logging of instruction data

Dump the method/class name instead of an index.

* [mono][interp] Fix ins data type for various instructions

Also add new data type for MonoVTable

16 months agoBump SharedArrayPool's max arrays per partition default from 8 to 32 (#87905)
Stephen Toub [Thu, 29 Jun 2023 13:56:51 +0000 (09:56 -0400)]
Bump SharedArrayPool's max arrays per partition default from 8 to 32 (#87905)

The 8 value was picked arbitrarily years ago, with a smaller value being picked because nothing was ever trimmed from the pool.  Since then, we've seen a significant increase in use of the pool, putting pressure on its storage, and we also added trimming so that memory pressure causes arrays to be pitched.  Longer term, we might want to remove this limit entirely and have more of a dynamic scheme for allowing the buckets to grow and shrink.  For now, though, I'm bumping the limit up from 8 arrays per core to 32 arrays per core to provide some more wiggle room. 32 is also somewhat arbitrary, though recent examples on a few real services that were hitting the 8 limit (resulting in increased allocation and contention) were mollified by 32.

16 months agoUse Utf8.IsValid in System.Text.Json (#88165)
Stephen Toub [Thu, 29 Jun 2023 13:52:36 +0000 (09:52 -0400)]
Use Utf8.IsValid in System.Text.Json (#88165)

* Use Utf8.IsValid in System.Text.Json

* Fix TestingGetStringInvalidUTF8 test

It's expecting there to always be a DecoderFallbackException as the inner exception.

16 months agoAugment generated regex XML comment with original pattern and options (#88175)
Stephen Toub [Thu, 29 Jun 2023 13:52:28 +0000 (09:52 -0400)]
Augment generated regex XML comment with original pattern and options (#88175)

* Augment generated regex XML comment with original pattern and options

* Delete special-handling of ECMADigitClass for consistency

16 months ago[mono] Use InlineArrayAttribute for ArgumentData and StackAllocatedByRefs (#88149)
Aleksey Kliger (λgeek) [Thu, 29 Jun 2023 13:44:15 +0000 (09:44 -0400)]
[mono] Use InlineArrayAttribute for ArgumentData and StackAllocatedByRefs (#88149)

* [mono] Use InlineArrayAttribute for ArgumentData and StackAllocatedByRefs

   Mono supports InlineArray

* Apply suggestions from code review

* Expose two more uses of InlineArray in ParamsArray.cs

---------

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
16 months agoUse LLD linker when targeting Bionic (#88179)
Michal Strehovský [Thu, 29 Jun 2023 11:25:39 +0000 (20:25 +0900)]
Use LLD linker when targeting Bionic (#88179)

https://github.com/dotnet/runtime/issues/87340#issuecomment-1612561061

16 months agoClone AllowTlsResume as part of SslClientAuthenticationOptionsExtensions.ShallowClone...
Stephen Toub [Thu, 29 Jun 2023 10:42:59 +0000 (06:42 -0400)]
Clone AllowTlsResume as part of SslClientAuthenticationOptionsExtensions.ShallowClone (#88155)

Looks like this was missed as part of adding AllowTlsResume.  This helper is used by HttpClient and friends to clone all the settings of an SslClientAuthenticationOptions instance into a new instance.

16 months agoLocalized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 221140...
dotnet bot [Thu, 29 Jun 2023 09:19:19 +0000 (11:19 +0200)]
Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2211409 (#88169)

16 months agoIntroduction to vectorization with Vector128 and Vector256 (#84115)
Adam Sitnik [Thu, 29 Jun 2023 09:00:07 +0000 (11:00 +0200)]
Introduction to vectorization with Vector128 and Vector256 (#84115)

Co-authored-by: Günther Foidl <gue@korporal.at>
Co-authored-by: Dan Moseley <danmose@microsoft.com>
Co-authored-by: Rob Hague <rob.hague00@gmail.com>
Co-authored-by: Tanner Gooding <tagoo@outlook.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Co-authored-by: Jeff Handley <jeffhandley@users.noreply.github.com>
16 months ago[wasm] Use latest sdk for workload testing (#88173)
Ankit Jain [Thu, 29 Jun 2023 08:27:03 +0000 (04:27 -0400)]
[wasm] Use latest sdk for workload testing (#88173)

This reverts the earlier change from
7112a41c86ca856dc0a462afafb953be6ac4fcc7 which was working around
https://github.com/dotnet/runtime/issues/87647

16 months ago[OSX] HybridGlobalization Implement casing functions (#87919)
Meri Khamoyan [Thu, 29 Jun 2023 08:23:59 +0000 (12:23 +0400)]
[OSX] HybridGlobalization Implement casing functions (#87919)

Implement GlobalizationNative_ChangeCaseNative , GlobalizationNative_ChangeCaseInvariantNative for OSX

16 months agoConvert Volatile to JIT intrinsics (#88073)
Michał Petryka [Thu, 29 Jun 2023 06:14:55 +0000 (08:14 +0200)]
Convert Volatile to JIT intrinsics (#88073)

16 months agoRemove redundant call to ConvertToCanonForm (#88171)
Marc Brooks [Thu, 29 Jun 2023 06:03:30 +0000 (01:03 -0500)]
Remove redundant call to ConvertToCanonForm (#88171)

Call to `type.ConvertToCanonForm(CanonicalFormKind.Specific)` is redundant as we just computed the `canonType` two lines up. Reuse the computed value

Co-authored-by: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
16 months agoFix NativeAOT rethrow bug (#88113)
Jan Vorlicek [Thu, 29 Jun 2023 06:02:19 +0000 (08:02 +0200)]
Fix NativeAOT rethrow bug (#88113)

* Fix NativeAOT rethrow bug

The rethrowing incorrectly starts searching for exception clause based
on the previously searched clause for the exception being rethrown. It
should always start from the beginning.

* Cleanup and a regression test

16 months agoMark a new test as NativeAotIncompatible (#88176)
Michal Strehovský [Thu, 29 Jun 2023 05:25:52 +0000 (14:25 +0900)]
Mark a new test as NativeAotIncompatible (#88176)

We don't intend to implement non-intrinsic expansion of GetSpanDataFrom, same as InitializeArray.

16 months agoJIT: Enable physical promotion by default (#88090)
Jakob Botsch Nielsen [Thu, 29 Jun 2023 05:25:26 +0000 (07:25 +0200)]
JIT: Enable physical promotion by default (#88090)

Fix #6534
Fix #6707
Fix #7576
Fix #32415
Fix #58522
Fix #68797
Fix #71510
Fix #71565
Fix #76928

16 months agoDo not run chmod on Windows (#88174)
Michal Strehovský [Thu, 29 Jun 2023 03:26:32 +0000 (12:26 +0900)]
Do not run chmod on Windows (#88174)

These targets were written before we supported cross-OS compilation, but now it's sort of possible.