platform/upstream/dotnet/runtime.git
4 years agoMerge pull request #1199 from lmolkova/w3cTestSuiteCrashes
Noah Falk [Sat, 18 Jan 2020 02:43:32 +0000 (18:43 -0800)]
Merge pull request #1199 from lmolkova/w3cTestSuiteCrashes

W3C Trace-Context: Allow hex chars in version and don't crash on non-hex chars in traceFlags

4 years agoMerge pull request #1873 from jaredpar/standard
Jared Parsons [Sat, 18 Jan 2020 01:12:43 +0000 (20:12 -0500)]
Merge pull request #1873 from jaredpar/standard

Disable Apline.38 ARM64 runs

4 years agoTweak documentation on NotNullAttribute (#1891)
Julien Couvreur [Sat, 18 Jan 2020 01:12:01 +0000 (17:12 -0800)]
Tweak documentation on NotNullAttribute (#1891)

Tagging @BillWagner @stephentoub @RikkiGibson

The use of `[NotNull]` on an input parameter is allowed. The typical example is an `AssertNotNull` method. That behavior was [specified](https://github.com/dotnet/csharplang/blob/master/meetings/2019/LDM-2019-05-15.md#simple-postconditions), but does not appear in the docs. Adding a mention.

I assume that changes here propagate to docs automatically.

4 years agoImprovements for null check folding. (#1735)
Eugene Rozenfeld [Fri, 17 Jan 2020 23:35:53 +0000 (15:35 -0800)]
Improvements for null check folding. (#1735)

optFoldNullChecks attempts to remove GT_NULLCHECK nodes that are
post-dominated by indirections on the same variable. These changes
implement a number of improvements.

1. Recognize more patterns.
Before these changes only the following pattern was recognized:
x = comma(nullcheck(y), add(y, const1))

followed by

indir(add(x, const2))

where const1 + const2 is sufficiently small.

With these changes the following patterns are recognized:

nullcheck(x)
or
x = comma(nullcheck(y), add(y, const1))

followed by

indir(x)
or
indir(add(x, const2))

where const1 + const2 is sufficiently small.

2. Indirections now include GT_ARR_LENGTH nodes.

3. Morph has an optimization
((x+icon1)+icon2) => (x+(icon1+icon2))
These changes generalize it to handle commas:
((comma(y, x+icon1)+icon2) => comma(y, x+(icon1+icon2))

That exposes more trees to null check folding.

4. Fix a bug in flow transformations that could lose BBF_HAS_NULLCHECK flag
on some basic blocks, which led to missing opportunities for null check folding.

5. Make safety checks in optCanMoveNullCheckPastTree
(for trees between the nullcheck and the indirection) both more correct
and less conservative. For example, we were not allowing any assignments
if we were inside try; however, assignments to compiler temps are safe since
they won't be visible in handlers.

5. Increase the maximum number of trees we check between GT_NULLCHECK and
the indirection from 25 to 50.

7. Refactor the code and move pattern recognition and safety checks to
helper methods.

8. Add missing BBF_HAS_NULLCHECK and OMF_HAS_NULLCHECK when we create GT_NULLCHECK nodes.

4 years agoMerge pull request #1525 from vitek-karas/OpenInstallerTestSln
Vitek Karas [Fri, 17 Jan 2020 23:05:24 +0000 (15:05 -0800)]
Merge pull request #1525 from vitek-karas/OpenInstallerTestSln

Setup environment to open the installer test sln

4 years agoRemove unused/unnecessary defines (#1878)
Steve MacLean [Fri, 17 Jan 2020 23:01:25 +0000 (18:01 -0500)]
Remove unused/unnecessary defines (#1878)

4 years agoPort stubbed out Regex.CompileToAssembly (#1850)
Stephen Toub [Fri, 17 Jan 2020 23:00:49 +0000 (18:00 -0500)]
Port stubbed out Regex.CompileToAssembly (#1850)

* Port stubbed out Regex.CompileToAssembly

This ports Regex.CompileToAssembly.  The "only" thing missing is the ability to actually save the Assembly out, which is obviously critical.  I'm putting this commit up because I've been using the generated assembly to help debug/improve the code generation, using temporary hacks locally to get the Assembly saved to disk.  Hopefully in the near future we can have a permanent solution in place.

* Code cleanup

4 years agoFix MSVC warn as errors... (#1876)
Steve MacLean [Fri, 17 Jan 2020 22:49:08 +0000 (17:49 -0500)]
Fix MSVC warn as errors... (#1876)

* Fix warning as error

* Fix mismatched declaration/definition

4 years agoRemove stray sos reference (#1875)
Steve MacLean [Fri, 17 Jan 2020 22:48:28 +0000 (17:48 -0500)]
Remove stray sos reference (#1875)

4 years agoUse bitmask operation to check if a slot is untracked (#1870)
Andrew Au [Fri, 17 Jan 2020 22:36:17 +0000 (14:36 -0800)]
Use bitmask operation to check if a slot is untracked (#1870)

4 years agoEnable overriding CoreCLR and Libraries configurations in root… (#1826)
Jeremy Koritzinsky [Fri, 17 Jan 2020 22:34:04 +0000 (14:34 -0800)]
Enable overriding CoreCLR and Libraries configurations in root… (#1826)

* Override the configuration of the CoreCLR and Libraries builds during the root build when CoreCLRConfiguration and LibrariesConfiguration are specified respectively.

* Add coreclrConfiguration and librariesConfiguration parameters to build scripts.

* Update docs.

* Make arguments lowercase on bash.

* Fix typos.

4 years agoAdd Crossgen pack for crossgen2 tool (#1859)
Davis Goodin [Fri, 17 Jan 2020 22:01:01 +0000 (16:01 -0600)]
Add Crossgen pack for crossgen2 tool (#1859)

* Add Crossgen pack for crossgen2 tool

* Inline sharedfx tooling support for Crossgen pack

* Support publishing crossgen pack

* "Crossgen pack" => "Crossgen2 pack"

4 years agoFix bug with PInvokes having byref arguments. (#1843)
Fadi Hanna [Fri, 17 Jan 2020 21:09:02 +0000 (16:09 -0500)]
Fix bug with PInvokes having byref arguments. (#1843)

* Fix bug with PInvokes having byref arguments.

Make IsMarshalingRequired return true for a byref argument

4 years agoDisable Apline.38 ARM runs
Jared Parsons [Fri, 17 Jan 2020 19:29:49 +0000 (11:29 -0800)]
Disable Apline.38 ARM runs

These are consistently failing on all runs. Disabling to get the build
green again while we dig into this

https://github.com/dotnet/runtime/issues/1871

4 years agoFixes runtime issue #1739 (#1840)
Brian Sullivan [Fri, 17 Jan 2020 19:59:45 +0000 (11:59 -0800)]
Fixes runtime issue #1739 (#1840)

* Fixes runtime issue 1739
Added additional check for Jit Stress mode STRESS_LCL_FLDS
This stress mode requires that the types exactly match

* Code review feedback

4 years agoMerge pull request #1759 from vitek-karas/NativeSearchDirsFix
Vitek Karas [Fri, 17 Jan 2020 19:22:44 +0000 (11:22 -0800)]
Merge pull request #1759 from vitek-karas/NativeSearchDirsFix

hostfxr_get_native_search_directories must fail when given CLI command

There's no check that when running with a "command" like hostfxr_get_native_search_directories that the code will not try to locate SDK and run CLI commands.
If it happens not only it does wrong things, but the return values are bogus (it doesn't fill the output buffer).

This change adds the necessary check to avoid this completely. It also makes sure that the output buffer size is always correctly set, even on errors.

Moved all the tests for hostfxr_get_native_search_directories to use nativehost and add a test to cover this case.

4 years agoFix Linux_x64_glibc condition to build RPM/Deb (#1861)
Davis Goodin [Fri, 17 Jan 2020 19:15:31 +0000 (13:15 -0600)]
Fix Linux_x64_glibc condition to build RPM/Deb (#1861)

4 years agoAdding area owners for new mono labels (#1865)
Maryam Ariyan [Fri, 17 Jan 2020 18:49:42 +0000 (10:49 -0800)]
Adding area owners for new mono labels (#1865)

4 years agoImplement required HttpClient apis in System.Net.Quic (#1703)
Justin Kotalik [Fri, 17 Jan 2020 18:21:13 +0000 (10:21 -0800)]
Implement required HttpClient apis in System.Net.Quic (#1703)

4 years agoUpdate status badge link (#1855)
Adam Sitnik [Fri, 17 Jan 2020 17:48:49 +0000 (18:48 +0100)]
Update status badge link (#1855)

4 years agoadd benchmarking and profiling workflow docs links (#1856)
Adam Sitnik [Fri, 17 Jan 2020 14:37:34 +0000 (15:37 +0100)]
add benchmarking and profiling workflow docs links (#1856)

4 years agoSpanify and cleanup System.Security.Principal.Windows
Wraith2 [Fri, 17 Jan 2020 14:21:50 +0000 (14:21 +0000)]
Spanify and cleanup System.Security.Principal.Windows

* spanify internal constructor, caller and callees
* rename locals and fields to match current style
* save the SecurityIdentifier objects for WindowsIdentity's Is(Something) properties as statics

4 years agorevert CPU clipping to 3.0, 2.x behavior (#1851)
Vladimir Sadov [Fri, 17 Jan 2020 13:20:10 +0000 (05:20 -0800)]
revert CPU clipping to 3.0, 2.x behavior (#1851)

4 years agoZipFile.CreateFromDirectory: ensure entryEncoding parameter is being passed (#1825)
Eirik Tsarpalis [Fri, 17 Jan 2020 11:51:34 +0000 (13:51 +0200)]
ZipFile.CreateFromDirectory: ensure entryEncoding parameter is being passed (#1825)

4 years agoRemove the option to specify VS path
vitek-karas [Fri, 17 Jan 2020 11:47:02 +0000 (03:47 -0800)]
Remove the option to specify VS path

4 years agoCoalesce adjacent loops in concatenation RegexNodes (#1838)
Stephen Toub [Fri, 17 Jan 2020 11:25:04 +0000 (06:25 -0500)]
Coalesce adjacent loops in concatenation RegexNodes (#1838)

* Coalesce adjacent loops in concatenation RegexNodes

This augments the reduction phase of concatenation nodes to combine adjacent one/notone/setloops, e.g. `a*a+a{1,2}b` becomes `a{2,}b` (previously added optimizations will then see that the a loop can be made atomic and replace it with the equivalent of `(?>a{2,})b`).  This has several benefits.  First, it simplifies the node tree, creating less work for IR writer and less work for the interpreter/compiler.  Second, it gives the compiler more opportunity to choose how the loop should be represented, when and how to unroll, etc.  Third, it enables the auto-atomicity step to apply to more loops (as in the previous example).  And most importantly, it can drastically reduce backtracking (especially with the atomicity optimization, but even without that).  An expression like `a*a*a*a*a*a*b` run against an input like `aaaaaaaaaaaaaa` could previously take a very long time; now, it'll be very fast.

* Follow-up from previous PRs this is now rebased on

4 years agoFix tests on linux
vitek-karas [Fri, 17 Jan 2020 11:06:35 +0000 (03:06 -0800)]
Fix tests on linux

Different path normalization behavior

4 years agoImplement SuppressGCTransition attribute in crossgen2 (#1772)
Michal Strehovský [Fri, 17 Jan 2020 10:49:57 +0000 (11:49 +0100)]
Implement SuppressGCTransition attribute in crossgen2 (#1772)

Fixes dotnet/coreclr#27188.

4 years agoFix tracing rundown tests with optimizations and large version bubble (#507)
Jan Vorlicek [Fri, 17 Jan 2020 09:52:57 +0000 (10:52 +0100)]
Fix tracing rundown tests with optimizations and large version bubble (#507)

* Fix tracing rundown tests with optimizations

The test is failing when compiled with crossgen2 with optimizations due
to the fact that it didn't find System.Diagnostics.Tracing loaded. The
reason is that due to cross module inlining, the
System.Diagnostics.Tracing was not needed anymore.
I have fixed it by checking for the
Microsoft.Diagnostics.Tracing.TraceEvent assembly.

4 years agoDo not look at Size when doing Auto layout (#1805)
Michal Strehovský [Fri, 17 Jan 2020 08:35:33 +0000 (09:35 +0100)]
Do not look at Size when doing Auto layout (#1805)

Seems like the deleted line was copypasted from the Sequential/Explicit case, but it's incorrect.

Fixes #1770.

4 years agoFlush GC log on shutdown (#1721)
Andrew Au [Fri, 17 Jan 2020 05:09:28 +0000 (21:09 -0800)]
Flush GC log on shutdown (#1721)

4 years agoRecording the reason why we change the generation to condemn during joined_generation...
Andrew Au [Fri, 17 Jan 2020 05:08:50 +0000 (21:08 -0800)]
Recording the reason why we change the generation to condemn during joined_generation_to_condemn() to the event stream (#1042)

4 years agoPort CreateDirectory method as a DirectorySecurity extension (#1834)
Carlos Sanchez Lopez [Fri, 17 Jan 2020 04:35:34 +0000 (20:35 -0800)]
Port CreateDirectory method as a DirectorySecurity extension (#1834)

4 years agoAddress PR feedback from old PR (#1837)
Santiago Fernandez Madero [Fri, 17 Jan 2020 03:54:36 +0000 (19:54 -0800)]
Address PR feedback from old PR (#1837)

4 years agomore tests
Liudmila Molkova [Sat, 28 Dec 2019 04:20:50 +0000 (20:20 -0800)]
more tests

4 years agofix IsW3C check
Liudmila Molkova [Sat, 28 Dec 2019 04:11:16 +0000 (20:11 -0800)]
fix IsW3C check

4 years agoAllow hex chars in W3C Trace-Context version and fix crash with invalid traceFlags
Liudmila Molkova [Sat, 28 Dec 2019 02:33:30 +0000 (18:33 -0800)]
Allow hex chars in W3C Trace-Context version and fix crash with invalid traceFlags

4 years agoExpand RegexNode atomicity test to loops at the end of alternation branches (#1769)
Stephen Toub [Fri, 17 Jan 2020 02:20:48 +0000 (21:20 -0500)]
Expand RegexNode atomicity test to loops at the end of alternation branches (#1769)

Given an expression like `(abcd*|efgh*)ijk`, we will now see that if the `i` after the alternation doesn't match and we backtrack into the alternation, we won't need to backtrack into the `d*`, as it can't give back anything that would allow the `i` to match.

4 years agoAutomatically anchor regexes beginning with .* (#1706)
Stephen Toub [Fri, 17 Jan 2020 02:19:25 +0000 (21:19 -0500)]
Automatically anchor regexes beginning with .* (#1706)

4 years agoReview large alignment code in GC (#1351)
Anton Lapounov [Fri, 17 Jan 2020 01:39:12 +0000 (17:39 -0800)]
Review large alignment code in GC (#1351)

Improve comments and fix a couple of places where large alignment was not taken into account. Set pad_in_front to zero if SHORT_PLUGS is not defined.

4 years agoPrompt dialog when running GUI app and hostfxr is < 3.* (#1222)
Mateo Torres-Ruiz [Fri, 17 Jan 2020 01:22:58 +0000 (17:22 -0800)]
Prompt dialog when running GUI app and hostfxr is < 3.* (#1222)

* Prompt dialog when trying to run a GUI app and hostfxr < 3.*

* Check for the ability to set custom error writer in hostfxr instead of checking its version.

* Put error writer inside main_fn_v2 scope.
Don't add unnecessary custom prefixed errors.

* Remove unnecessary if.

* Update error message and url.

* Trigger only when running an apphost gui.

* Check if we redirect apphost traces instead of using ifdefs.

* Add tests.

* Address feedback

* Cleanup.

* Remove unnecessary class HostFxrVersion

* Cast StatusError for comparison with rc

4 years agoFix dumping of GCSlotFlags in R2RDump (#1833)
Jan Vorlicek [Fri, 17 Jan 2020 00:08:15 +0000 (01:08 +0100)]
Fix dumping of GCSlotFlags in R2RDump (#1833)

There were two issues. If a slot was marked as untracked, we were
replacing whatever flags there were set by GC_SLOT_UNTRACKED. After
fixing that, the other problem was that the GCSlotFlags were not marked
as Flags and so we were not printing it as combination of flags.

4 years agoRemove Windows_NT_arm64 from checked libraries rolling tests (#1839)
Santiago Fernandez Madero [Thu, 16 Jan 2020 23:22:54 +0000 (15:22 -0800)]
Remove Windows_NT_arm64 from checked libraries rolling tests (#1839)

4 years agoJIT: ensure we get the right oper when constructing lcl var and lcl fld (#1824)
Andy Ayers [Thu, 16 Jan 2020 23:19:04 +0000 (15:19 -0800)]
JIT: ensure we get the right oper when constructing lcl var and lcl fld (#1824)

Remove the constructors that default in the oper and force callers to
be explicit about which one they want.

Fixes #1668

4 years agoFix Crossgen2 compilation of System.Private.CoreLib (#1762)
Tomáš Rylek [Thu, 16 Jan 2020 22:34:20 +0000 (23:34 +0100)]
Fix Crossgen2 compilation of System.Private.CoreLib (#1762)

With the switch-over from GetRawSzArrayData to GetArrayDataReference
we must now instantiate the method over the array element type.
Also, we shouldn't be harvesting pseudo-tokens generated during
stub emission.

Thanks

Tomas

4 years agoUpdate macOS build requirements to include openssl
Bruce Forstall [Thu, 16 Jan 2020 22:29:02 +0000 (14:29 -0800)]
Update macOS build requirements to include openssl

4 years agoRemove Windows_NT_arm64 run tests (#1827)
Santiago Fernandez Madero [Thu, 16 Jan 2020 21:16:41 +0000 (13:16 -0800)]
Remove Windows_NT_arm64 run tests (#1827)

4 years agomissing check for `readonly` case in x86 array ::Address stub (#1798)
Vladimir Sadov [Thu, 16 Jan 2020 20:48:52 +0000 (12:48 -0800)]
missing check for `readonly` case in x86 array ::Address stub (#1798)

The check was previously done off the flags after masking the lower 2 bits in the typedesc. The whole thing is now gone.

4 years agoDocumentation refinements (#1738)
Bruce Forstall [Thu, 16 Jan 2020 19:13:04 +0000 (11:13 -0800)]
Documentation refinements (#1738)

* Documentation refinements

* Fix a formatting issue

* Code review updates

4 years agoUpdate the CoreCLR testing workflow doc (#1806)
Michal Strehovský [Thu, 16 Jan 2020 18:26:57 +0000 (19:26 +0100)]
Update the CoreCLR testing workflow doc (#1806)

4 years agoNullable annotate System.IO.Compression.ZipFile (#1811)
Eirik Tsarpalis [Thu, 16 Jan 2020 18:21:09 +0000 (20:21 +0200)]
Nullable annotate System.IO.Compression.ZipFile (#1811)

* Nullable annotate System.IO.Compression.ZipFile

* address feedback

4 years agoenable nullable annotations for System.Dynamic.Runtime (#1810)
Eirik Tsarpalis [Thu, 16 Jan 2020 17:48:07 +0000 (19:48 +0200)]
enable nullable annotations for System.Dynamic.Runtime (#1810)

4 years agocopy CoreRun to the testhost directory to make benchmarking and profiling of local...
Adam Sitnik [Thu, 16 Jan 2020 11:13:25 +0000 (12:13 +0100)]
copy CoreRun to the testhost directory to make benchmarking and profiling of local builds easier (#1756)

4 years agoFix crossgen2 handling of sequential layout with explicit size (#1763)
Jan Vorlicek [Thu, 16 Jan 2020 10:36:39 +0000 (11:36 +0100)]
Fix crossgen2 handling of sequential layout with explicit size (#1763)

Crossgen2 is incorrectly not marking types with sequential layout and
explicit size as custom layout, which results in JIT generating incorrect
code for copying such structs. One example is the
Loader/classloader/SequentialLayout/Regress/ExplicitSize/ExplicitSize
test that has a struct with single int element, sequential layout and
explicitly set size to 16. The getClassAttribsInternal was not setting
CorInfoFlag.CORINFO_FLG_CUSTOMLAYOUT for this type and so JIT was
generating code that copied just the int element.

This change fixes it. Runtime uses similar check.

4 years agoJIT: refine handle blocking logic (#1788)
Andy Ayers [Thu, 16 Jan 2020 07:45:17 +0000 (23:45 -0800)]
JIT: refine handle blocking logic (#1788)

Assertion prop uses `O2K_CONST_INT` for handles, even on 64 bit targets. Make
suitable adjustments to the handle propagation blocking logic.

Problem was introduced in #1593 and exposed by #1309.

Fixes #1777

4 years agoFix Linux tests mainv1, mainv2 (#1790)
Bruce Forstall [Thu, 16 Jan 2020 07:31:48 +0000 (23:31 -0800)]
Fix Linux tests mainv1, mainv2 (#1790)

Don't use CR in Unix bash scripts.

This appears to be fallout from #583, which added a
second variable that then created a need to add newlines.

4 years agoDelete duplicated R2R version definition and sync to reality (#1764)
Michal Strehovský [Thu, 16 Jan 2020 04:46:26 +0000 (05:46 +0100)]
Delete duplicated R2R version definition and sync to reality (#1764)

We're not generating R2R version 3.0: we started generating 4.1 when nop padding/jump stamps were removed. (Seems like R2R 4.0 was actually skipped entirely but we ended up with the 4.0 version in one of the copies of the struct because only major version was bumped for jump stamps; minor was untouched - minor went up with cuckoo metadata before that and that didn't involve crossgen2 at that point)

Didn't dig into history to find out why it's duplicated in the first place, but it doesn't look like a good place to be in.

4 years agoChange all ActiveIssues to use Uris instead of numbers (#1768)
Stephen Toub [Thu, 16 Jan 2020 04:21:36 +0000 (23:21 -0500)]
Change all ActiveIssues to use Uris instead of numbers (#1768)

4 years agoUpdate repo link to dotnet/runtime (#1781)
Rich Lander [Thu, 16 Jan 2020 02:16:56 +0000 (18:16 -0800)]
Update repo link to dotnet/runtime (#1781)

4 years agoFix impSIMDMinMax (#1774)
Carol Eidt [Thu, 16 Jan 2020 01:30:43 +0000 (17:30 -0800)]
Fix impSIMDMinMax (#1774)

When taking the no-AVX, no-SSE42 path, ensure that it calls `lvaSetStruct` before `gtNewLclvNode`.

Fix #1667

4 years agoUse a single pipeline with runtime conditioned jobs in PRs (#1473)
Santiago Fernandez Madero [Thu, 16 Jan 2020 01:12:37 +0000 (17:12 -0800)]
Use a single pipeline with runtime conditioned jobs in PRs (#1473)

* Use a single pipeline with runtime conditioned jobs in PRs

* PR Feedback

* Disable long running tests checked runtime

4 years agoDelete checked-in Unicode data files in favor of runtime-assets package (#1743)
Levi Broderick [Thu, 16 Jan 2020 00:43:56 +0000 (16:43 -0800)]
Delete checked-in Unicode data files in favor of runtime-assets package (#1743)

IDNA files (in System.Globalization.Extensions.Tests) not yet deleted; will tackle this later

4 years agoFix Issue 1104 (#1734)
Brian Sullivan [Thu, 16 Jan 2020 00:16:25 +0000 (16:16 -0800)]
Fix Issue 1104 (#1734)

* Fix the incorrect change where 'alreadyPresent' was incorrectly initialized.
The PR that introduced this issue: https://github.com/dotnet/coreclr/pull/23109

* Add test case

4 years agoUpdate ReportGenerator to 4.4.2 (#1778)
Viktor Hofer [Wed, 15 Jan 2020 22:58:18 +0000 (23:58 +0100)]
Update ReportGenerator to 4.4.2 (#1778)

4 years agoJitstress fixes for tailcall tests (#1771)
Andy Ayers [Wed, 15 Jan 2020 21:06:59 +0000 (13:06 -0800)]
Jitstress fixes for tailcall tests (#1771)

Make STRESS_GENERIC_VARN more compatible with methods that make explicit tail
calls. Don't add gc checks for explicit tail calls, and remove the code in
morph that blocks tail calls if gc checks are active.

Update the tailcall test to to disable STRESS_UNSAFE_BUFFER_CHECKS. This can
be reverted when #341 is merged.

Fixes #1752.

4 years agoUpdate dotnet-tools.json (#1773)
Marco Rossignoli [Wed, 15 Jan 2020 20:45:48 +0000 (21:45 +0100)]
Update dotnet-tools.json (#1773)

4 years ago[master] Update dependencies from 4 repositories (#1758)
dotnet-maestro[bot] [Wed, 15 Jan 2020 19:26:36 +0000 (20:26 +0100)]
[master] Update dependencies from 4 repositories (#1758)

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

- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.20063.2
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.20063.2
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.20063.2
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.20063.2
- Microsoft.DotNet.Build.Tasks.Configuration - 5.0.0-beta.20063.2
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.20063.2
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.20063.2
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.20063.2
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.20063.2
- Microsoft.DotNet.GenAPI - 5.0.0-beta.20063.2
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.20063.2
- Microsoft.DotNet.GenFacades - 5.0.0-beta.20063.2
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.20063.2
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.20063.2

* Update dependencies from https://github.com/mono/linker build 20200112.1

- ILLink.Tasks - 0.1.6-prerelease.20062.1

* Update dependencies from https://github.com/microsoft/vstest build 20200113-03

- Microsoft.NET.Test.Sdk - 16.5.0-preview-20200113-03

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

- System.Windows.Extensions.TestData - 5.0.0-beta.19610.1
- System.Security.Cryptography.X509Certificates.TestData - 5.0.0-beta.19610.1
- System.Net.TestData - 5.0.0-beta.19610.1
- System.IO.Packaging.TestData - 5.0.0-beta.19610.1
- System.IO.Compression.TestData - 5.0.0-beta.19610.1
- System.Drawing.Common.TestData - 5.0.0-beta.19610.1
- System.ComponentModel.TypeConverter.TestData - 5.0.0-beta.19610.1

* Revert "Update dependencies from https://github.com/mono/linker build 20200112.1"

This reverts commit 0855288b45de9c39aacc55864fa42a32a4d80052.

Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
4 years agoFix build on Linux
vitek-karas [Wed, 15 Jan 2020 19:22:22 +0000 (11:22 -0800)]
Fix build on Linux

4 years agoJIT: handle some side effects in box pattern match (#1741)
Andy Ayers [Wed, 15 Jan 2020 18:35:42 +0000 (10:35 -0800)]
JIT: handle some side effects in box pattern match (#1741)

Handle simple side effects in the `box; br` pattern based optimization.

Fixes #1713.

4 years agoCse tuning (#1463)
Brian Sullivan [Wed, 15 Jan 2020 16:38:01 +0000 (08:38 -0800)]
Cse tuning (#1463)

* cse-tuning branch

1. Changed csdLiveAcrossCall to a bool (zero-diff)

* 2.  Added the remaining zero-diff changes from my old coreclr branch (zero-diff)

* 3. Incoming stack arguments don't use any local stack frame slots

x64  5 improvements 0 regressions,  Total PerfScore diff: -10.72
x86 16 improvements 5 regressions,  Total PerfScore diff: -72.95

* 4.  Locals with no references aren't enregistered  (zero-diffs)

* 5. Fix handling of long integer types, they only use one register not two.

    x64 250 improvements 51 regressions,  Total PerfScore diff:   -459.09
  arm64 162 improvements 16 regressions,  Total PerfScore diff:  -1712.52

* 6. Adjust computation of moderateRefCnt and aggressiveRefCnt values

     x64 280 improvements 81 regressions,  Total PerfScore diff:   -274.78
   arm64 264 improvements 61 regressions,  Total PerfScore diff:   -911.00
     x86  87 improvements 42 regressions,  Total PerfScore diff:   -123.46
   arm32 195 improvements 81 regressions,  Total PerfScore diff:   -239.10

* 7.  slotCount refactor (zero-diffs)

* 8.  Enable the use of the live across call information

      x64 125 improvements 136 regressions, Total PerfScore diff:   +427.43
    arm64  83 improvements 153 regressions, Total PerfScore diff:   +260.68
      x86 218 improvements 193 regressions, Total PerfScore diff:   +199.81
    arm32 145 improvements 181 regressions, Total PerfScore diff: -33283.10

arm32 method with improvement:
    -33864.40 (-2.87% of base) : System.Private.CoreLib.dasm - TypeBuilder:CreateTypeNoLock():TypeInfo:this (2 methods)

* 9.  Adjust the cse_use_costs for the LiveAcrossCall case

      x64  61 improvements  61 regressions, Total PerfScore diff:   -189.03
    arm64  90 improvements  49 regressions, Total PerfScore diff:   -463.42
      x86  88 improvements  80 regressions, Total PerfScore diff:   -238.61
    arm32 101 improvements  63 regressions, Total PerfScore diff:   -259.50

* 10.  If this CSE is live across a call then we may need to spill an additional caller save register

          x64  73 improvements  45 regressions, Total PerfScore diff:   -279.88
        arm64  45 improvements  76 regressions, Total PerfScore diff:    -90.94
          x86  13 improvements  14 regressions, Total PerfScore diff:    -21.55
        arm32  45 improvements  33 regressions, Total PerfScore diff:    -78.60

* 11.  (x64 only)  floating point loads/stores encode larger, so adjust the cse def/use cost for SMALL_CODE

   No diffs in System.Private.Corelib

* 12. Remove extra cse de/use costs for methods that have a largeFrame or a hugeFrame

       x64 199 improvements  50 regressions, Total PerfScore diff:   -2061.36
     arm64  11 improvements   3 regressions, Total PerfScore diff:     -46.84
       x86 136 improvements  80 regressions, Total PerfScore diff:   -1795.00
     arm32  50 improvements  35 regressions, Total PerfScore diff:    -132.30

* clang-format

* Code review feedback

Removed increment of enregCount on _TARGET_X86_ when we have compLongUsed:
    Framework diffs
    Total PerfScoreUnits of diff: -654.75 (-0.00% of base)  diff is an improvement.
    79 total methods with Perf Score differences (55 improved, 24 regressed), 146432 unchanged.

Fixed setting of largeFrame/hugeFrame for ARM64
    Zero framework diffs.

:

* run jit-format

* correct some wording in comments

* reword a comment

4 years agoAdd link to shared portion of CoreLib to .gitignore (#1607)
Michal Strehovský [Wed, 15 Jan 2020 15:49:42 +0000 (16:49 +0100)]
Add link to shared portion of CoreLib to .gitignore (#1607)

In the coreclr repo, one could simply findstr in the System.Private.CoreLib directory to find stuff.

Since in the runtime repo the shared portion of the CoreLib moved to src/libraries/, but private portion lives in src/coreclr, the files are split. We can work around it locally by making a symbolic link.

That way runtime devs that just grep/findstr stuff don't have to suffer entering the src/libraries directory where tab completion doesn't work because there's 180 directories prefixed by `System.`.

4 years agoFix PEReader creation and caching (#1742)
Fadi Hanna [Wed, 15 Jan 2020 15:37:01 +0000 (10:37 -0500)]
Fix PEReader creation and caching (#1742)

Can't use a fixed stack-based pointer to initialize something on the heap and expect it to continue working :)

4 years agoFix description of -skipnuget in src/coreclr/build.sh (#534)
Andrey Akinshin [Wed, 15 Jan 2020 15:28:05 +0000 (18:28 +0300)]
Fix description of -skipnuget in src/coreclr/build.sh (#534)

4 years agoRevert Async changes to SNIPacket to fix deadlock issues (#778)
Cheena Malhotra [Wed, 15 Jan 2020 14:21:00 +0000 (06:21 -0800)]
Revert Async changes to SNIPacket to fix deadlock issues (#778)

4 years agohostfxr_get_native_search_directories must fail when given command line for a CLI...
Vitek Karas [Thu, 19 Dec 2019 14:42:15 +0000 (06:42 -0800)]
hostfxr_get_native_search_directories must fail when given command line for a CLI command

There's no check that when running with a "command" like hostfxr_get_native_search_directories that the code will not try to locate SDK and run CLI commands.
If it happens not only it does wrong things, but the return values are bogus (it doesn't fill the output buffer).

This change adds the necessary check to avoid this completely. It also makes sure that the output buffer size is always correctly set, even on errors.

Moved all the tests for hostfxr_get_native_search_directories to use nativehost and add a test to cover this case.

4 years agoRemove two always false properties in UriSyntax (#696)
Marek Safar [Wed, 15 Jan 2020 13:15:34 +0000 (14:15 +0100)]
Remove two always false properties in UriSyntax (#696)

4 years agopal_random: Open /dev/urandom with O_CLOEXEC (#1249)
Leandro A. F. Pereira [Wed, 15 Jan 2020 12:12:19 +0000 (04:12 -0800)]
pal_random: Open /dev/urandom with O_CLOEXEC (#1249)

The third argument to open(2) is ignored by the system call unless
O_CREAT is passed in the second argument.  O_CLOEXEC should be OR-ed
with the second argument.

4 years agoMark some Nullable<T> members as readonly (#1727)
Lucas Trzesniewski [Wed, 15 Jan 2020 04:56:56 +0000 (05:56 +0100)]
Mark some Nullable<T> members as readonly (#1727)

Value, HasValue, GetValueOrDefault

4 years agoDisable TestOnExecuteCustomCommand (#1745)
Jared Parsons [Wed, 15 Jan 2020 03:26:21 +0000 (22:26 -0500)]
Disable TestOnExecuteCustomCommand (#1745)

This is failing on the libraries outerloop builds.

Tracked by #1724

4 years agoAdd minimum length optimization to regex (#1624)
Stephen Toub [Wed, 15 Jan 2020 03:25:28 +0000 (22:25 -0500)]
Add minimum length optimization to regex (#1624)

We now do a cursory examination of the RegexNode tree in order to determine the smallest length string that could possibly match.  For example, the regex "(?:123|4567)8" has a minimum length of 4 (if the input were "1238"), and the regex "\d{1-2}-\d{1-2}-\d{2-4}" has a minimum length of 6 (e.g. "1-10-20"). If the input string is shorter than that minimum length, FindFirstChar will now immediately return false, as it can't possibly match, avoiding spending time evaluating a pattern that couldn't possibly match.

4 years agoNullable annotate System.Linq.Queryable (#979)
Eirik Tsarpalis [Wed, 15 Jan 2020 01:56:53 +0000 (03:56 +0200)]
Nullable annotate System.Linq.Queryable (#979)

* Nullable annotate System.Linq.Queryable

* update annotations based on System.Linq.Expressions annotation

* address feedback

* revert System.Linq.Expressions reference source

* make IQueryable LINQ methods compatible with annotated IEnumerable signatures

* remove unnecessary nullable annotation

* address feedback

4 years agoFix token encoding crash when compiling without version bubble (#816)
Fadi Hanna [Wed, 15 Jan 2020 01:05:16 +0000 (20:05 -0500)]
Fix token encoding crash when compiling without version bubble (#816)

* Fix token encoding crash when compiling without version bubble

Implement the ability to get token values for typeRefs that are not part of the version bubble. This fixes the ability to compile the CoreFX set without the --large-bubble switch

4 years agoUpdate Version.Details.xml with new UnicodeData test asset (#1731)
Levi Broderick [Tue, 14 Jan 2020 23:21:34 +0000 (15:21 -0800)]
Update Version.Details.xml with new UnicodeData test asset (#1731)

4 years agoFix linuxnonjit that got accidentally renamed to linuxonjit (#1694)
Jan Vorlicek [Tue, 14 Jan 2020 23:12:06 +0000 (00:12 +0100)]
Fix linuxnonjit that got accidentally renamed to linuxonjit (#1694)

The PR #1292 has accidentally renamed the linuxnonjit to linuxonjit.
This change fixes it.

4 years agoUpdate System.Drawing.Common index to get latest package for harvesting (#1729)
Santiago Fernandez Madero [Tue, 14 Jan 2020 23:07:38 +0000 (15:07 -0800)]
Update System.Drawing.Common index to get latest package for harvesting (#1729)

4 years agoUpdate CharUnicodeInfo to Unicode 12.1; update StringInfo to UAX29 (#328)
Levi Broderick [Tue, 14 Jan 2020 22:07:53 +0000 (14:07 -0800)]
Update CharUnicodeInfo to Unicode 12.1; update StringInfo to UAX29 (#328)

- Updates CharUnicodeInfo.GetCategory from Unicode 11.0 to Unicode 12.1
- Optimizes some methods in Char and CharUnicodeInfo to have better codegen
- Updates StringInfo to use UAX29 extended grapheme cluster segmentation logic

4 years agoFix comments in zapimage.cpp (#1629)
Anton Lapounov [Tue, 14 Jan 2020 20:56:49 +0000 (12:56 -0800)]
Fix comments in zapimage.cpp (#1629)

I noticed that base addresses in the comments were not correct (constants in the switches.h file had been updated without updating the comments in this file), and while at it, fixed spelling and grammar in other comments.

4 years agoimprove cert validation diagnostic on OSX (#1513)
Tomas Weinfurt [Tue, 14 Jan 2020 20:05:05 +0000 (12:05 -0800)]
improve cert validation diagnostic on  OSX (#1513)

* propagate error if cert validation fails on OSX

* feedback from review

* feedback from review

* update style

* using System.Net

4 years agoCleanup remaining rhel/centos 6 conditions (#1659)
Adeel Mujahid [Tue, 14 Jan 2020 19:46:24 +0000 (21:46 +0200)]
Cleanup remaining rhel/centos 6 conditions (#1659)

* Cleanup remaining rhel/centos 6 conditions
Also fixes some errors reported by shellcheck in `init-distro-rid.sh`.

* Update function comments

4 years agoJIT: build basic block pred lists before morph (#1309)
Andy Ayers [Tue, 14 Jan 2020 19:25:22 +0000 (11:25 -0800)]
JIT: build basic block pred lists before morph (#1309)

Build basic block pred lists before morph, instead of after, and add an early
flow optimization pass. Fix up a few places where ref counts or pred lists
were not properly maintained in morph.

The early flow opt pass enhances the local assertion prop run in morph (by
fusing blocks), allows the jit to avoid morphing some unreachable blocks
(thus saving a bit of TP), and lays the groundwork for more aggressive early
branch folding that would be useful (eg dotnet/runtime#27935).

4 years agoFix test property evaluation on netfx vertical (#1715)
Viktor Hofer [Tue, 14 Jan 2020 19:05:57 +0000 (20:05 +0100)]
Fix test property evaluation on netfx vertical (#1715)

When running on netfx vertical there's a chance that the `XunitConsoleNetCore21AppPath` property which is defined in https://github.com/dotnet/arcade/blob/master/src/Microsoft.DotNet.XUnitConsoleRunner/src/build/Microsoft.DotNet.XUnitConsoleRunner.props#L4 isn't available because the packages isn't restored / imported. Guarding against that by checking if the property is set.

4 years agoEnable upgrading loops before alternations to be atomic (#1690)
Stephen Toub [Tue, 14 Jan 2020 18:48:26 +0000 (13:48 -0500)]
Enable upgrading loops before alternations to be atomic (#1690)

Changing loops to be atomic is beneficial because it avoids unnecessary backtracking (and if everything in the expression can be proven to avoid backtracking, we also can generate better code overall).  This change improves upon our detection to now consider the case where the second node is an alternation, e.g. with the expression `\s+(something|anything)`, we can change that to the equivalent of `(?>\s+)(something|anything)` because we can see that for the alternation to succeed, it would never begin with a space, and therefore there's nothing the preceding loop could "give back" that would let the alternation succeed.

4 years agoUse platform-matrix for Installer jobs (#1623)
Davis Goodin [Tue, 14 Jan 2020 18:04:27 +0000 (12:04 -0600)]
Use platform-matrix for Installer jobs (#1623)

* Use platform-matrix for Installer jobs

Minimal changes to root pipelines to avoid conflicts

* Fix Linux vs. linux mismatch in musl jobs

4 years agoFix runtest.py test analysis and repro creation (#1702)
Bruce Forstall [Tue, 14 Jan 2020 17:35:43 +0000 (09:35 -0800)]
Fix runtest.py test analysis and repro creation (#1702)

Comment out the code that munges characters in the test output.
This is corrupting the output. Don't delete it until it is
better understood if this is actually needed in some case.

Fixes #1682

Fix arguments to DebugEnv() constructor, which allows repro
scripts to be written for failing tests.

4 years agoRemove unused function in deps parsing (#1683)
Elinor Fung [Tue, 14 Jan 2020 17:21:38 +0000 (09:21 -0800)]
Remove unused function in deps parsing (#1683)

4 years ago[reflection] Add additional TypeInfo.FullName tests (#1613)
Ryan Lucia [Tue, 14 Jan 2020 16:14:17 +0000 (11:14 -0500)]
[reflection] Add additional TypeInfo.FullName tests (#1613)

4 years agoMove Assembly.GetEntryAssembly method to shared part (#1670)
Maxim Lipnin [Tue, 14 Jan 2020 15:05:25 +0000 (18:05 +0300)]
Move Assembly.GetEntryAssembly method to shared part (#1670)

4 years agoAdd basic Capture support to non-backtracking RegexCompiler (#1639)
Stephen Toub [Tue, 14 Jan 2020 14:51:44 +0000 (09:51 -0500)]
Add basic Capture support to non-backtracking RegexCompiler (#1639)

Lots of regexes end up using captures, either by design or accidentally because parens are a natural grouping mechanism.  Support for them means many more regexes can now use the non-backtracking compiler that produces much better code gen.

We now also auto-atomicify more loops by ensuring we traverse concatenations as part of the checks.  This means that an expression like "(a|b)*c" now becomes the equivalent of "(?>([ab])*)c.

And we remove unnecessary Atomic nodes at the root, e.g. "(?>foo)" becomes just "foo".

4 years agoPort changes to crossgen2 shared files (#1709)
Michal Strehovský [Tue, 14 Jan 2020 14:18:33 +0000 (15:18 +0100)]
Port changes to crossgen2 shared files (#1709)

Changes from dotnet/corert#7944 to enable x86 support.

4 years agoRemove codebase argument from AssemblyNative::Load (#1697)
Elinor Fung [Tue, 14 Jan 2020 14:12:14 +0000 (06:12 -0800)]
Remove codebase argument from AssemblyNative::Load (#1697)