1
0
Fork 0
mirror of https://github.com/VSadov/Satori.git synced 2025-06-09 09:34:49 +09:00
Commit graph

127770 commits

Author SHA1 Message Date
Viktor Hofer
07ae197db5
Use analyzers from targeting pack for NetCoreAppCurrent (#87726)
* Use analyzers from targeting pack for NetCoreAppCurrent

Fixes that analyzer failures didn't show-up in #74897

Add analyzers to the frameworklist that OOB projects in src/libraries
use, and only auto ProjectReference the analyzers in generators.targets
when not using the analyzers from the targeting pack.

Also move the generator projects related code into a separate file.

Continuation of https://github.com/dotnet/runtime/pull/75093

* Fix project build

* Add missing reference to Regex tests

* Add missing generators for netfx build

* Fix paht in test project

* Fix typo

* Disable runtime marshalling for SharedTypes.csproj

* Disable runtime marshalling for NativeExports.csproj
2023-06-19 23:27:38 +02:00
Parker Bibus
903eef77d6
[PERF] Fix crossgen zip missing error (#87662)
Only run ArchiveFiles for runKinds that use it.
2023-06-19 14:09:15 -07:00
Alexander Radchenko
35a598be7a
Fixed System.Tests.DateTimeTests.TryFormat_MatchesToString test (#87693)
Co-authored-by: Stephen Toub <stoub@microsoft.com>
2023-06-19 14:05:54 -07:00
Jakob Botsch Nielsen
e834d4256a
JIT: Cache significant segments computations for layouts in physical promotion (#87745)
Before:
JitEnablePhysicalPromotion=1
benchmarks.run_pgo:
Total num SignificantSegments calls: 2543
(Per context) SignificantSegments calls
     <=          0 ===>       0 count (  0% of total)
      1 ..       1 ===>     312 count ( 37% of total)
      2 ..       2 ===>      58 count ( 44% of total)
      3 ..       3 ===>     181 count ( 66% of total)
      4 ..       5 ===>     191 count ( 90% of total)
      6 ..      10 ===>      66 count ( 98% of total)
     11 ..      20 ===>      12 count ( 99% of total)
     21 ..      35 ===>       4 count (100% of total)
     36 ..      50 ===>       0 count (100% of total)
     51 ..      75 ===>       0 count (100% of total)
     76 ..     100 ===>       0 count (100% of total)
    101 ..     150 ===>       0 count (100% of total)
    151 ..     250 ===>       0 count (100% of total)
    251 ..     500 ===>       0 count (100% of total)
    501 ..    1000 ===>       0 count (100% of total)

libraries.pmi:
Total num SignificantSegments calls: 28525
(Per context) SignificantSegments calls
     <=          0 ===>       0 count (  0% of total)
      1 ..       1 ===>    1154 count ( 19% of total)
      2 ..       2 ===>    1878 count ( 50% of total)
      3 ..       3 ===>     809 count ( 64% of total)
      4 ..       5 ===>     782 count ( 77% of total)
      6 ..      10 ===>     831 count ( 91% of total)
     11 ..      20 ===>     357 count ( 97% of total)
     21 ..      35 ===>     101 count ( 98% of total)
     36 ..      50 ===>      29 count ( 99% of total)
     51 ..      75 ===>      29 count ( 99% of total)
     76 ..     100 ===>       8 count (100% of total)
    101 ..     150 ===>       0 count (100% of total)
    151 ..     250 ===>       0 count (100% of total)
    251 ..     500 ===>       0 count (100% of total)
    501 ..    1000 ===>       0 count (100% of total)

JitEnablePhysicalPromotion=1;JitStressModeNames=STRESS_NO_OLD_PROMOTION
benchmarks.run_pgo:
Total num SignificantSegments calls: 90839
(Per context) SignificantSegments calls
     <=          0 ===>       0 count (  0% of total)
      1 ..       1 ===>     681 count (  7% of total)
      2 ..       2 ===>    1035 count ( 17% of total)
      3 ..       3 ===>    1635 count ( 34% of total)
      4 ..       5 ===>    1053 count ( 45% of total)
      6 ..      10 ===>    3162 count ( 78% of total)
     11 ..      20 ===>     814 count ( 87% of total)
     21 ..      35 ===>     931 count ( 96% of total)
     36 ..      50 ===>     215 count ( 99% of total)
     51 ..      75 ===>      69 count ( 99% of total)
     76 ..     100 ===>       4 count ( 99% of total)
    101 ..     150 ===>       4 count ( 99% of total)
    151 ..     250 ===>       0 count ( 99% of total)
    251 ..     500 ===>      11 count (100% of total)
    501 ..    1000 ===>       0 count (100% of total)

libraries.pmi:
Total num SignificantSegments calls: 277708
(Per context) SignificantSegments calls
     <=          0 ===>       0 count (  0% of total)
      1 ..       1 ===>    6993 count ( 17% of total)
      2 ..       2 ===>    8197 count ( 38% of total)
      3 ..       3 ===>    5225 count ( 51% of total)
      4 ..       5 ===>    5380 count ( 65% of total)
      6 ..      10 ===>    7141 count ( 83% of total)
     11 ..      20 ===>    4094 count ( 93% of total)
     21 ..      35 ===>    1627 count ( 97% of total)
     36 ..      50 ===>     519 count ( 98% of total)
     51 ..      75 ===>     292 count ( 99% of total)
     76 ..     100 ===>      98 count ( 99% of total)
    101 ..     150 ===>      59 count ( 99% of total)
    151 ..     250 ===>      11 count ( 99% of total)
    251 ..     500 ===>       4 count (100% of total)
    501 ..    1000 ===>       0 count (100% of total)

After:
benchmarks.run_pgo:
Total num SignificantSegments calls: 915
(Per context) SignificantSegments calls
     <=          0 ===>       0 count (  0% of total)
      1 ..       1 ===>     741 count ( 89% of total)
      2 ..       2 ===>      75 count ( 99% of total)
      3 ..       3 ===>       8 count (100% of total)
      4 ..       5 ===>       0 count (100% of total)
      6 ..      10 ===>       0 count (100% of total)
     11 ..      20 ===>       0 count (100% of total)
     21 ..      35 ===>       0 count (100% of total)
     36 ..      50 ===>       0 count (100% of total)
     51 ..      75 ===>       0 count (100% of total)
     76 ..     100 ===>       0 count (100% of total)
    101 ..     150 ===>       0 count (100% of total)
    151 ..     250 ===>       0 count (100% of total)
    251 ..     500 ===>       0 count (100% of total)
    501 ..    1000 ===>       0 count (100% of total)

libraries.pmi:
Total num SignificantSegments calls: 9061
(Per context) SignificantSegments calls
     <=          0 ===>       0 count (  0% of total)
      1 ..       1 ===>    4172 count ( 69% of total)
      2 ..       2 ===>    1105 count ( 88% of total)
      3 ..       3 ===>     416 count ( 95% of total)
      4 ..       5 ===>     214 count ( 98% of total)
      6 ..      10 ===>      67 count ( 99% of total)
     11 ..      20 ===>       3 count ( 99% of total)
     21 ..      35 ===>       1 count (100% of total)
     36 ..      50 ===>       0 count (100% of total)
     51 ..      75 ===>       0 count (100% of total)
     76 ..     100 ===>       0 count (100% of total)
    101 ..     150 ===>       0 count (100% of total)
    151 ..     250 ===>       0 count (100% of total)
    251 ..     500 ===>       0 count (100% of total)
    501 ..    1000 ===>       0 count (100% of total)

JitEnablePhysicalPromotion=1;JitStressModeNames=STRESS_NO_OLD_PROMOTION
benchmarks.run_pgo:
Total num SignificantSegments calls: 15082
(Per context) SignificantSegments calls
     <=          0 ===>       0 count (  0% of total)
      1 ..       1 ===>    6709 count ( 69% of total)
      2 ..       2 ===>    1735 count ( 87% of total)
      3 ..       3 ===>     462 count ( 92% of total)
      4 ..       5 ===>     471 count ( 97% of total)
      6 ..      10 ===>     237 count (100% of total)
     11 ..      20 ===>       0 count (100% of total)
     21 ..      35 ===>       0 count (100% of total)
     36 ..      50 ===>       0 count (100% of total)
     51 ..      75 ===>       0 count (100% of total)
     76 ..     100 ===>       0 count (100% of total)
    101 ..     150 ===>       0 count (100% of total)
    151 ..     250 ===>       0 count (100% of total)
    251 ..     500 ===>       0 count (100% of total)
    501 ..    1000 ===>       0 count (100% of total)

libraries.pmi:
Total uncached SignificantSegments calls: 68938
(Per context) SignificantSegments calls
     <=          0 ===>       0 count (  0% of total)
      1 ..       1 ===>   24323 count ( 61% of total)
      2 ..       2 ===>    8687 count ( 83% of total)
      3 ..       3 ===>    3357 count ( 91% of total)
      4 ..       5 ===>    2378 count ( 97% of total)
      6 ..      10 ===>     789 count ( 99% of total)
     11 ..      20 ===>     105 count ( 99% of total)
     21 ..      35 ===>       1 count (100% of total)
     36 ..      50 ===>       0 count (100% of total)
     51 ..      75 ===>       0 count (100% of total)
     76 ..     100 ===>       0 count (100% of total)
    101 ..     150 ===>       0 count (100% of total)
    151 ..     250 ===>       0 count (100% of total)
    251 ..     500 ===>       0 count (100% of total)
    501 ..    1000 ===>       0 count (100% of total)
2023-06-19 22:30:19 +02:00
Jakob Botsch Nielsen
2a3f5be28e
JIT: Fix LocalUses::FindAccess (#87732)
The function is looking for access information with a specified type at
a specified offset, but was using the wrong list here. That would in
some cases with overlapping accesses cause us to fail to find the
Access. The net result is that we rarely end up not promoting some
induced accesses that we would otherwise promote.
2023-06-19 22:29:54 +02:00
Egor Bogatov
6bf7c02fc4
Enable GDV with multiple guesses for NativeAOT (#87380) 2023-06-19 22:17:24 +02:00
Milos Kotlar
188b25e0e9
Revert "Upgrade ios perf queue to osx 13 (#86574)" (#87780)
This reverts commit da712842c3.
2023-06-19 13:09:39 -07:00
Tomas Weinfurt
4542e09ba0
add zero byte read to SslStream (#87563)
* add zero byte read to SslStream

* fix test

* Apply suggestions from code review

Co-authored-by: Stephen Toub <stoub@microsoft.com>

* feedback

* add back missing line

---------

Co-authored-by: Stephen Toub <stoub@microsoft.com>
2023-06-19 20:37:24 +02:00
Viktor Hofer
8b25fd3822
Make sure that intellisense files are copied (#87603)
Fixes https://github.com/dotnet/runtime/issues/87585

When looking at the 8.0 Preview 5 SDK, xml files are missing for certain
assemblies. This is likely because of the TargetFramework condition in
intellisense.targets. Instead of conditioning on the rid-less net8.0
TFM, use the sfx.proj which already assemblies the shared framework and
targeting pack layout to copy the documentation files.

Additionally, remove the XmlDocDir and copy the files into the targeting
pack folder which was a difference between the "real" targeting pack and
the "fake" one that libraries generates.
2023-06-19 19:31:33 +02:00
Kunal Pathak
60d00ec126
LSRA-throughput: Iterate over the regMaskTP instead all registers (#87424)
* replace for-loop with regMaspTP iterator

* jit format

* REVERT

* fix a bug

* address review feedback

* Add genFirstRegNumFromMaskAndToggle and genFirstRegNumFromMask

* Use actualRegistersMask

* jit format

* review feedback

* Inline BitScanForward

* fix build error

* remove commented code
2023-06-19 09:40:16 -07:00
Jakob Botsch Nielsen
feff67d5ca
JIT: Add some limits in physical promotion (#87729)
Add limits on how many fields we promote in each struct and how many
total fields we promote. These limits are put in place to avoid
pathological cases; we do not hit any of them over all of our SPMI
collections (at least on win-x64).

The limits were selected based on histograms of physical promotion stats
over our collections. Here they are for some of the important
collections:

JitEnablePhysicalPromotion=1:
benchmarks.run_pgo:

```
(Per context) How many fields are promoted:
     <=          0 ===>    1654 count ( 66% of total)
      1 ..       1 ===>     206 count ( 75% of total)
      2 ..       2 ===>     259 count ( 85% of total)
      3 ..       3 ===>     127 count ( 90% of total)
      4 ..       4 ===>      46 count ( 92% of total)
      5 ..       5 ===>      30 count ( 93% of total)
      6 ..      10 ===>      99 count ( 97% of total)
     11 ..      15 ===>      17 count ( 98% of total)
     16 ..      20 ===>      21 count ( 99% of total)
     21 ..      30 ===>      16 count ( 99% of total)
     31 ..      40 ===>       3 count (100% of total)
     41 ..      50 ===>       0 count (100% of total)
     51 ..     100 ===>       0 count (100% of total)
    101 ..     150 ===>       0 count (100% of total)
    151 ..     200 ===>       0 count (100% of total)
    201 ..     300 ===>       0 count (100% of total)
    301 ..     400 ===>       0 count (100% of total)
    401 ..     500 ===>       0 count (100% of total)
    501 ..     700 ===>       0 count (100% of total)
    701 ..    1000 ===>       0 count (100% of total)
   1001 ..    2000 ===>       0 count (100% of total)
   2001 ..    3000 ===>       0 count (100% of total)
   3001 ..    4000 ===>       0 count (100% of total)
   4001 ..    5000 ===>       0 count (100% of total)

(Per struct) How many fields are promoted:
     <=          0 ===>     980 count ( 39% of total)
      1 ..       1 ===>     760 count ( 69% of total)
      2 ..       2 ===>     423 count ( 86% of total)
      3 ..       3 ===>      73 count ( 89% of total)
      4 ..       4 ===>      30 count ( 90% of total)
      5 ..       5 ===>      46 count ( 92% of total)
      6 ..       6 ===>     181 count ( 99% of total)
      7 ..       8 ===>       2 count (100% of total)
      9 ..      10 ===>       0 count (100% of total)
     11 ..      15 ===>       0 count (100% of total)
     16 ..      20 ===>       0 count (100% of total)
     21 ..      30 ===>       0 count (100% of total)
     31 ..      50 ===>       0 count (100% of total)
     51 ..     100 ===>       0 count (100% of total)
    101 ..     200 ===>       0 count (100% of total)
    201 ..     400 ===>       0 count (100% of total)
```

libraries.pmi:

```
(Per context) How many fields are promoted:
     <=          0 ===>   19677 count ( 76% of total)
      1 ..       1 ===>    1717 count ( 83% of total)
      2 ..       2 ===>     899 count ( 86% of total)
      3 ..       3 ===>     616 count ( 89% of total)
      4 ..       4 ===>     660 count ( 91% of total)
      5 ..       5 ===>     285 count ( 92% of total)
      6 ..      10 ===>     932 count ( 96% of total)
     11 ..      15 ===>     377 count ( 98% of total)
     16 ..      20 ===>     164 count ( 98% of total)
     21 ..      30 ===>     165 count ( 99% of total)
     31 ..      40 ===>      68 count ( 99% of total)
     41 ..      50 ===>      28 count ( 99% of total)
     51 ..     100 ===>      51 count ( 99% of total)
    101 ..     150 ===>      14 count ( 99% of total)
    151 ..     200 ===>       2 count ( 99% of total)
    201 ..     300 ===>       0 count ( 99% of total)
    301 ..     400 ===>       1 count (100% of total)
    401 ..     500 ===>       0 count (100% of total)
    501 ..     700 ===>       0 count (100% of total)
    701 ..    1000 ===>       0 count (100% of total)
   1001 ..    2000 ===>       0 count (100% of total)
   2001 ..    3000 ===>       0 count (100% of total)
   3001 ..    4000 ===>       0 count (100% of total)
   4001 ..    5000 ===>       0 count (100% of total)

(Per struct) How many fields are promoted:
     <=          0 ===>    6218 count ( 31% of total)
      1 ..       1 ===>    5075 count ( 57% of total)
      2 ..       2 ===>    1440 count ( 65% of total)
      3 ..       3 ===>    1859 count ( 74% of total)
      4 ..       4 ===>    2682 count ( 88% of total)
      5 ..       5 ===>     974 count ( 93% of total)
      6 ..       6 ===>     624 count ( 96% of total)
      7 ..       8 ===>     533 count ( 99% of total)
      9 ..      10 ===>      37 count ( 99% of total)
     11 ..      15 ===>      65 count ( 99% of total)
     16 ..      20 ===>       2 count ( 99% of total)
     21 ..      30 ===>       0 count ( 99% of total)
     31 ..      50 ===>       1 count (100% of total)
     51 ..     100 ===>       0 count (100% of total)
    101 ..     200 ===>       0 count (100% of total)
    201 ..     400 ===>       0 count (100% of total)
```

realworld:

```
(Per context) How many fields are promoted:
     <=          0 ===>    1807 count ( 54% of total)
      1 ..       1 ===>     407 count ( 66% of total)
      2 ..       2 ===>     230 count ( 73% of total)
      3 ..       3 ===>     146 count ( 77% of total)
      4 ..       4 ===>     122 count ( 81% of total)
      5 ..       5 ===>      86 count ( 83% of total)
      6 ..      10 ===>     218 count ( 90% of total)
     11 ..      15 ===>     147 count ( 94% of total)
     16 ..      20 ===>      59 count ( 96% of total)
     21 ..      30 ===>      66 count ( 98% of total)
     31 ..      40 ===>      19 count ( 98% of total)
     41 ..      50 ===>      12 count ( 99% of total)
     51 ..     100 ===>      14 count ( 99% of total)
    101 ..     150 ===>       3 count ( 99% of total)
    151 ..     200 ===>       2 count ( 99% of total)
    201 ..     300 ===>       4 count ( 99% of total)
    301 ..     400 ===>       0 count ( 99% of total)
    401 ..     500 ===>       0 count ( 99% of total)
    501 ..     700 ===>       2 count (100% of total)
    701 ..    1000 ===>       0 count (100% of total)
   1001 ..    2000 ===>       0 count (100% of total)
   2001 ..    3000 ===>       0 count (100% of total)
   3001 ..    4000 ===>       0 count (100% of total)
   4001 ..    5000 ===>       0 count (100% of total)

(Per struct) How many fields are promoted:
     <=          0 ===>    2012 count ( 32% of total)
      1 ..       1 ===>    1421 count ( 55% of total)
      2 ..       2 ===>     499 count ( 63% of total)
      3 ..       3 ===>     521 count ( 71% of total)
      4 ..       4 ===>     565 count ( 80% of total)
      5 ..       5 ===>     446 count ( 87% of total)
      6 ..       6 ===>     503 count ( 96% of total)
      7 ..       8 ===>     139 count ( 98% of total)
      9 ..      10 ===>      71 count ( 99% of total)
     11 ..      15 ===>      34 count ( 99% of total)
     16 ..      20 ===>       3 count (100% of total)
     21 ..      30 ===>       0 count (100% of total)
     31 ..      50 ===>       0 count (100% of total)
     51 ..     100 ===>       0 count (100% of total)
    101 ..     200 ===>       0 count (100% of total)
    201 ..     400 ===>       0 count (100% of total)
```

JitEnablePhysicalPromotion=1;JitStressModeNames=STRESS_NO_OLD_PROMOTION:
benchmarks.run_pgo:

```
(Per context) How many fields are promoted:
     <=          0 ===>    1654 count ( 66% of total)
      1 ..       1 ===>     206 count ( 75% of total)
      2 ..       2 ===>     259 count ( 85% of total)
      3 ..       3 ===>     127 count ( 90% of total)
      4 ..       4 ===>      46 count ( 92% of total)
      5 ..       5 ===>      30 count ( 93% of total)
      6 ..      10 ===>      99 count ( 97% of total)
     11 ..      15 ===>      17 count ( 98% of total)
     16 ..      20 ===>      21 count ( 99% of total)
     21 ..      30 ===>      16 count ( 99% of total)
     31 ..      40 ===>       3 count (100% of total)
     41 ..      50 ===>       0 count (100% of total)
     51 ..     100 ===>       0 count (100% of total)
    101 ..     150 ===>       0 count (100% of total)
    151 ..     200 ===>       0 count (100% of total)
    201 ..     300 ===>       0 count (100% of total)
    301 ..     400 ===>       0 count (100% of total)
    401 ..     500 ===>       0 count (100% of total)
    501 ..     700 ===>       0 count (100% of total)
    701 ..    1000 ===>       0 count (100% of total)
   1001 ..    2000 ===>       0 count (100% of total)
   2001 ..    3000 ===>       0 count (100% of total)
   3001 ..    4000 ===>       0 count (100% of total)
   4001 ..    5000 ===>       0 count (100% of total)

(Per struct) How many fields are promoted:
     <=          0 ===>     980 count ( 39% of total)
      1 ..       1 ===>     760 count ( 69% of total)
      2 ..       2 ===>     423 count ( 86% of total)
      3 ..       3 ===>      73 count ( 89% of total)
      4 ..       4 ===>      30 count ( 90% of total)
      5 ..       5 ===>      46 count ( 92% of total)
      6 ..       6 ===>     181 count ( 99% of total)
      7 ..       8 ===>       2 count (100% of total)
      9 ..      10 ===>       0 count (100% of total)
     11 ..      15 ===>       0 count (100% of total)
     16 ..      20 ===>       0 count (100% of total)
     21 ..      30 ===>       0 count (100% of total)
     31 ..      50 ===>       0 count (100% of total)
     51 ..     100 ===>       0 count (100% of total)
    101 ..     200 ===>       0 count (100% of total)
    201 ..     400 ===>       0 count (100% of total)
```

libraries.pmi:
```
(Per context) How many fields are promoted:
     <=          0 ===>   37477 count ( 48% of total)
      1 ..       1 ===>    7987 count ( 58% of total)
      2 ..       2 ===>    7292 count ( 68% of total)
      3 ..       3 ===>    2988 count ( 72% of total)
      4 ..       4 ===>    4927 count ( 78% of total)
      5 ..       5 ===>    1835 count ( 81% of total)
      6 ..      10 ===>    7147 count ( 90% of total)
     11 ..      15 ===>    2694 count ( 93% of total)
     16 ..      20 ===>    1667 count ( 95% of total)
     21 ..      30 ===>    1346 count ( 97% of total)
     31 ..      40 ===>     758 count ( 98% of total)
     41 ..      50 ===>     335 count ( 99% of total)
     51 ..     100 ===>     510 count ( 99% of total)
    101 ..     150 ===>     107 count ( 99% of total)
    151 ..     200 ===>      34 count ( 99% of total)
    201 ..     300 ===>      12 count ( 99% of total)
    301 ..     400 ===>       2 count ( 99% of total)
    401 ..     500 ===>       2 count (100% of total)
    501 ..     700 ===>       0 count (100% of total)
    701 ..    1000 ===>       0 count (100% of total)
   1001 ..    2000 ===>       0 count (100% of total)
   2001 ..    3000 ===>       0 count (100% of total)
   3001 ..    4000 ===>       0 count (100% of total)
   4001 ..    5000 ===>       0 count (100% of total)

(Per struct) How many fields are promoted:
     <=          0 ===>  102669 count ( 39% of total)
      1 ..       1 ===>   57467 count ( 61% of total)
      2 ..       2 ===>   69010 count ( 88% of total)
      3 ..       3 ===>   11494 count ( 92% of total)
      4 ..       4 ===>   16887 count ( 99% of total)
      5 ..       5 ===>    1043 count ( 99% of total)
      6 ..       6 ===>     618 count ( 99% of total)
      7 ..       8 ===>     579 count ( 99% of total)
      9 ..      10 ===>      57 count ( 99% of total)
     11 ..      15 ===>      71 count ( 99% of total)
     16 ..      20 ===>       5 count ( 99% of total)
     21 ..      30 ===>       0 count ( 99% of total)
     31 ..      50 ===>       1 count (100% of total)
     51 ..     100 ===>       0 count (100% of total)
    101 ..     200 ===>       0 count (100% of total)
    201 ..     400 ===>       0 count (100% of total)
```

realworld:
```
(Per context) How many fields are promoted:
     <=          0 ===>    5617 count ( 41% of total)
      1 ..       1 ===>    1657 count ( 53% of total)
      2 ..       2 ===>    1164 count ( 62% of total)
      3 ..       3 ===>     522 count ( 66% of total)
      4 ..       4 ===>     878 count ( 72% of total)
      5 ..       5 ===>     472 count ( 76% of total)
      6 ..      10 ===>    1383 count ( 86% of total)
     11 ..      15 ===>     619 count ( 91% of total)
     16 ..      20 ===>     335 count ( 93% of total)
     21 ..      30 ===>     361 count ( 96% of total)
     31 ..      40 ===>     165 count ( 97% of total)
     41 ..      50 ===>     101 count ( 98% of total)
     51 ..     100 ===>     177 count ( 99% of total)
    101 ..     150 ===>      38 count ( 99% of total)
    151 ..     200 ===>      18 count ( 99% of total)
    201 ..     300 ===>      12 count ( 99% of total)
    301 ..     400 ===>       1 count ( 99% of total)
    401 ..     500 ===>       1 count ( 99% of total)
    501 ..     700 ===>       2 count (100% of total)
    701 ..    1000 ===>       0 count (100% of total)
   1001 ..    2000 ===>       0 count (100% of total)
   2001 ..    3000 ===>       0 count (100% of total)
   3001 ..    4000 ===>       0 count (100% of total)
   4001 ..    5000 ===>       0 count (100% of total)

(Per struct) How many fields are promoted:
     <=          0 ===>   23630 count ( 37% of total)
      1 ..       1 ===>   13267 count ( 59% of total)
      2 ..       2 ===>   16731 count ( 86% of total)
      3 ..       3 ===>    4677 count ( 93% of total)
      4 ..       4 ===>    2727 count ( 97% of total)
      5 ..       5 ===>     492 count ( 98% of total)
      6 ..       6 ===>     496 count ( 99% of total)
      7 ..       8 ===>     150 count ( 99% of total)
      9 ..      10 ===>      92 count ( 99% of total)
     11 ..      15 ===>      41 count ( 99% of total)
     16 ..      20 ===>       3 count ( 99% of total)
     21 ..      30 ===>       3 count ( 99% of total)
     31 ..      50 ===>       3 count (100% of total)
     51 ..     100 ===>       0 count (100% of total)
    101 ..     200 ===>       0 count (100% of total)
    201 ..     400 ===>       0 count (100% of total)
```
2023-06-19 18:20:58 +02:00
Stephen Toub
e3127c6c28
Fix ParseQuoteString handling of non-ASCII chars (#87756) 2023-06-19 12:00:01 -04:00
Oleksandr Didyk
ec07eb4684
add review comment to sb files (#87003) 2023-06-19 07:42:29 -07:00
Ankit Jain
f9e3ad059e
[wasm] Add helix retries for debugger tests (#87565)
.. when chrome fails to launch. For example:

```
  Error Message:
   System.IO.IOException : Process for /root/helix/work/correlation/chrome-linux/chrome unexpectedly exited with 127 during startup.
  Stack Trace:
     at DebuggerTests.WasmHostProvider.LaunchHostAsync(ProcessStartInfo psi, HttpContext context, Func`2 checkBrowserReady, String messagePrefix, Int32 hostReadyTimeoutMs, CancellationToken token) in /_/src/mono/wasm/debugger/DebuggerTestSuite/WasmHostProvider.cs:line 77
   at DebuggerTests.ChromeProvider.StartBrowserAndProxyAsync(HttpContext context, String targetUrl, Int32 remoteDebuggingPort, String messagePrefix, ILoggerFactory loggerFactory, CancellationTokenSource cts, Int32 browserReadyTimeoutMs, String locale) in /_/src/mono/wasm/debugger/DebuggerTestSuite/ChromeProvider.cs:line 60
   at DebuggerTests.TestHarnessStartup.<>c__DisplayClass13_0.<<Configure>b__2>d.MoveNext() in /_/src/mono/wasm/debugger/DebuggerTestSuite/TestHarnessStartup.cs:line 143
--- End of stack trace from previous location ---
   at DebuggerTests.Inspector.OpenSessionAsync(Func`3 getInitCmds, String urlToInspect, TimeSpan span) in /_/src/mono/wasm/debugger/DebuggerTestSuite/Inspector.cs:line 414
   at DebuggerTests.DebuggerTestBase.InitializeAsync() in /_/src/mono/wasm/debugger/DebuggerTestSuite/DebuggerTestBase.cs:line 173
```
2023-06-19 10:22:41 -04:00
Radek Doulik
4dc137c1d1
[wasm] Add more load PackedSimd methods (#87403)
* [wasm] Add more load PackedSimd methods

* Add custom attributes to PlatformNotSupported version

* Add default cases
2023-06-19 15:02:34 +02:00
Jakob Botsch Nielsen
67f23851b3
JIT: Insert writebacks in proper post-order location (#87612)
For struct uses we need to take care to insert any necessary writeback
when we see the local in post-order. The existing approach waits until
it sees the GT_RETURN or GT_CALL node to create writebacks for the
operand, which can cause us to create a writeback that overlaps
improperly with a previous LCL_VAR. For example:

```
Processing use [000014] of V00.[002..004)
STMT00008 ( 0x023[E-] ... ??? )
               [000025] --CXG------                         ▌  CALL      byref  Program:M1(S0,short):byref
               [000023] ----------- arg0                    ├──▌  LCL_VAR   struct<S0, 12> V00 loc0
               [000021] --CXG------ arg1                    └──▌  CAST      int <- short <- int
               [000020] --CXG------                            └──▌  IND       int
               [000018] --CXG------                               └──▌  CALL      byref  Program:M1(S0,short):byref
               [000016] ----------- arg0                             ├──▌  LCL_VAR   struct<S0, 12> V00 loc0
               [000017] ----------- arg1                             └──▌  LCL_VAR   int    V01 loc1          (last use)
New statement:
STMT00008 ( 0x023[E-] ... ??? )
               [000025] -ACXG------                         ▌  CALL      byref  Program:M1(S0,short):byref
               [000023] ----------- arg0                    ├──▌  LCL_VAR   struct<S0, 12> V00 loc0
               [000021] -ACXG------ arg1                    └──▌  CAST      int <- short <- int
               [000020] -ACXG------                            └──▌  IND       int
               [000018] -ACXG------                               └──▌  CALL      byref  Program:M1(S0,short):byref
               [000089] -A--------- arg0                             ├──▌  COMMA     struct
               [000088] UA---------                                  │  ├──▌  STORE_LCL_FLD ushort V00 loc0         [+0]
               [000087] -----------                                  │  │  └──▌  LCL_VAR   int    V09 tmp6
               [000016] -----------                                  │  └──▌  LCL_VAR   struct<S0, 12> V00 loc0          (last use)
               [000017] ----------- arg1                             └──▌  LCL_VAR   int    V01 loc1          (last use)
```

The writeback `[000088]` should have been created before `[000023]`.

This change fixes the problem by moving the writeback logic into
ReplaceLocal. To properly handle commas we need to keep track of the
ancestor stack now.

Fix #87611
2023-06-19 14:59:22 +02:00
Ivan Povazan
297571725d
[mono] Add conditional substitution for IsDynamicCodeSupported when targeting ios-like platforms (#86971) 2023-06-19 14:08:10 +02:00
Thays Grazia
5fe7b06e1c
[wasm][debugger] Showing "Frame not in module" after vscode-js-debug bump on VS (#87154)
* We were sending the scriptId of a context that was already destroyed and vscode-js-debug extension started to consider this information that was ignored before.

* addressing @radical comments
2023-06-19 12:28:05 +02:00
etemi
01f63e709a
Use local variable to evaluate property value only once in JsonSourceGenerator (#87725)
* Use temporary variable to evaluate property value only once

* Add test
2023-06-19 11:19:33 +01:00
Milos Kotlar
da712842c3
Upgrade ios perf queue to osx 13 (#86574) 2023-06-19 12:05:25 +02:00
Pavel Savara
3386b8625d
[browser] make cwraps more conditional (#87274) 2023-06-19 11:26:35 +02:00
Milos Kotlar
9e93f42dce
[mono][ios] Add support for stripping during AOT compilation on iOS (#87728)
* Add support for stripping debug symbols and enabling IL stripping during AOT compilation on iOS
2023-06-19 11:09:41 +02:00
Egor Bogatov
919d316fa8
Change JitGuardedDevirtualizationChainStatements to 1 (#87437) 2023-06-19 09:51:06 +02:00
Egor Bogatov
ce619997c0
GDV: don't emit fallback call if classes are "exact" (#87055) 2023-06-19 09:50:46 +02:00
Shay Rojansky
825f7c3f65
CVE-2023-24936: Check type is allowed when deserializing instance types that implements INullable (#87702)
Co-authored-by: Arthur Vickers <ajcvickers@hotmail.com>
2023-06-19 09:11:34 +02:00
Igor Velikorossov
815953a12c
Update ExperimentalAttribute.cs (#87759)
Fix xml-doc
2023-06-18 23:58:06 -04:00
James Newton-King
3a76e98086
Claims identity and principal debugging update (#87742)
* Claims identity and principal debugging update

* Comment
2023-06-18 22:05:48 -04:00
Tarek Mahmoud Sayed
eb7149483d
Add LoggerMessageAttribute constructor's overloads (#87738) 2023-06-18 15:20:40 -07:00
Tarek Mahmoud Sayed
1ea78a4a25
Fix the namespace of IServiceCollection.AddMetrics (#87736) 2023-06-18 09:50:43 -07:00
Jakob Botsch Nielsen
2c62994efb
JIT: Regularize readbacks for parameters/OSR-locals in physical promotion (#87165)
Handle readbacks for parameters/OSR-locals like any other readback is
handled. Previously they were handled by creating the scratch BB and
then inserting IR after the main replacement had already been done; now,
we instead create the scratch BB eagerly and mark these as requiring a
read back at the beginning of the scratch BB, and leave normal
replacement logic up to handle it.

The main benefit is that this unification makes it easier to ensure that
future smarter handling of readbacks/writebacks (e.g. "resolution")
automatically kicks in for the common case of parameters.

Introduce another invariant, which is that we only ever mark a field as
requiring readback if it is live. Previously we would always mark them
as requiring read backs, but would then check liveness before inserting
the actual IR to do the read back. But we don't always have the liveness
information at the point where we insert IR for readbacks after #86706.

Also expand some debug logging, and address some feedback from #86706.
2023-06-17 20:37:57 +02:00
Alexander Radchenko
8219f78884
CurrencyNegativePattern can be 16 (#87671) 2023-06-17 10:18:31 -07:00
Jakob Botsch Nielsen
27b7aea81e
JIT: Add a check for forward sub store interference (#87615)
Forward sub was not taking into account that the source of the candidate
def can contain locals that may be changed by next statement that is
being forward substituted into. For example, it is not legal to forward
substitute V06 in the following case:

```
[000104] DA--G------ ▌  STORE_LCL_VAR short  V06 tmp5
[000109] ----------- └──▌  LCL_VAR   short  V07 tmp6          (last use)

[000139] -A--------- ▌  COMMA     void
[000121] DA--------- ├──▌  STORE_LCL_VAR int    V07 tmp6
[000145] ----------- │  └──▌  CAST      int <- short <- int
[000074] ----------- │     └──▌  CNS_INT   int    1
[000129] UA--------- └──▌  STORE_LCL_FLD short  V00 arg0         [+16]
[000143] -----------    └──▌  CAST      int <- short <- int
[000090] -----------       └──▌  LCL_VAR   int    V06 tmp5          (last use)
```

Fix #87614
2023-06-17 09:45:27 +02:00
dotnet bot
7e798a90bf
Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2203250 (#87714)
* Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2203090

* Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2203090
2023-06-17 09:35:44 +02:00
Viktor Hofer
7d8db25fdf
Enable CS1591 for projects that don't use intellisense package XML file (#84917)
* Enable CS1591 for projects that don't use intellisense package XML file

* Update Directory.Build.targets

* Update Directory.Build.targets

* Update intellisense.targets

* Update intellisense.targets

* Update Microsoft.NETCore.Platforms.csproj

* Backport docs: Microsoft.Extensions.Hosting.WindowsServices

* Backport docs: Microsoft.Extensions.Hosting.Systemd

* Remove unnecessary full namespaces in triple slash.

* Fix xml comment formatting.

* Update System.Numerics.Tensors.csproj

* Update Microsoft.Extensions.DependencyInjection.Specification.Tests.csproj

* Update System.Threading.RateLimiting.csproj

* Update WindowsServiceLifetimeOptions.cs

* Update SystemdNotifier.cs

* Update Microsoft.Bcl.AsyncInterfaces.csproj

* Update System.Speech.csproj

* Update System.Threading.RateLimiting.csproj

---------

Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com>
2023-06-17 09:35:30 +02:00
Sven Boemer
fe88013164
Check Locations length before accessing (#87659)
Fixes an `IndexOutOfRangeException` thrown by the analyzer when
analyzing method parameters for the implicitly generated Main
method when using top-level statements. These method parameters
don't have location info because they are not in user code.

This also adds checks in the other places this analyzer accesses
`Locations[0]`, to be safe.
2023-06-16 19:27:15 -07:00
Justin Anderson
61ce817030
Invoke startup hook from ApplyStartupHook diagnostic command (#87490) 2023-06-16 17:20:29 -07:00
Michal Strehovský
fd99b07549
Fix TLS access on Bionic (#87670)
Avoid inlined threadstatics for now.
2023-06-17 08:49:24 +09:00
Michal Strehovský
95b6115c02
Do not quote rpath passed to linker for Bionic (#87669)
* Do not quote rpath passed to linker

Looks like this is preserved literally, with the `'`.

The Android loader doesn't like this: `WARNING: linker: Warning: unable to normalize "'/data/data/com.termux/files/home'" (ignoring)`.

* Update Microsoft.NETCore.Native.Unix.targets

* Apply suggestions from code review

Co-authored-by: Jan Kotas <jkotas@microsoft.com>

---------

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
2023-06-16 16:36:56 -07:00
Michal Strehovský
8547ce623b
Hardcode Debugger.IsAttached to false (#87677)
Fixes #84736
2023-06-16 16:36:25 -07:00
Sven Boemer
ee1da26f85
Limit number of tracked values in trim dataflow analysis (#87634)
Places a limit on the number of values tracked in our dataflow analysis, to
prevent hangs in the illink analyzer. This avoids hangs when analyzing patterns
that currently lead to an exponential number of tracked values.
2023-06-16 16:34:33 -07:00
Sven Boemer
af70c369a7
Fix missing assemblyref for typeref only kept for debug info in illink (#87575)
Fixes https://github.com/dotnet/runtime/issues/86462 by walking
debug info to discover typerefs in the assembly that are only
preserved due to debug info. In this case the assembly has the
'save' action, so the reference to the typeref in the debug info
is not swept. This means that the presence of the typeref in the
final output depends on whether we are linking the PDB. Walking
the typeref will preserve the assemblyref that it refers to,
fixing the issue.

The fix also needs to walk up the parent import scopes,
discovered by reproducing the issue in our test infra.

The behavior needs to depend on whether we are linking debug
symbols, otherwise we will keep the assemblyref (but not the
typeref that uses it) when PDBs are present, and the output
should not depend on the presence of
PDBs. `AssemblyOnlyUsedByUsingSaveAction` tests this case - see
comments in there for more detail.

This includes some unrelated test infra changes (supporting
multiple additional compiler arguments) which were useful for
iterating on this, even though they aren't necessary in the final
version of the testcases.
2023-06-16 16:33:31 -07:00
Bruce Forstall
b84612bbf9 Make JIT-EE interface formatting a little more consistent 2023-06-16 15:57:50 -07:00
Bruce Forstall
9d73664d77 Remove slotNum argument from recordRelocation 2023-06-16 15:57:50 -07:00
Bruce Forstall
51d1a138a6 Remove CORINFO_DESKTOP_ABI 2023-06-16 15:57:50 -07:00
Bruce Forstall
85b9359a51 Remove getMethodModule 2023-06-16 15:57:50 -07:00
Bruce Forstall
59626c0fd8 Remove isValidStringRef 2023-06-16 15:57:50 -07:00
Bruce Forstall
c6cb68a989 Remove isValidToken 2023-06-16 15:57:50 -07:00
Bruce Forstall
8b7f850726 Remove tryResolveToken 2023-06-16 15:57:50 -07:00
Bruce Forstall
71f8d08307 Remove isRIDClassDomainID 2023-06-16 15:57:50 -07:00
Bruce Forstall
8dd7374cd3 Remove canAccessFamily 2023-06-16 15:57:50 -07:00