Anton Firszov [Mon, 20 Jan 2020 17:17:55 +0000 (18:17 +0100)]
fix path for Interop.WSADuplicateSocket.cs
Anton Firszov [Fri, 17 Jan 2020 18:39:50 +0000 (19:39 +0100)]
address review findings
Anton Firszov [Fri, 17 Jan 2020 17:09:09 +0000 (18:09 +0100)]
ungroup PNSE tests, no RemoteExecutor timeout
Anton Firszov [Fri, 17 Jan 2020 15:12:52 +0000 (16:12 +0100)]
additional cleanup
Anton Firszov [Fri, 17 Jan 2020 15:02:29 +0000 (16:02 +0100)]
reimplement socket duplication, fix #1760
Adam Sitnik [Fri, 17 Jan 2020 14:37:34 +0000 (15:37 +0100)]
add benchmarking and profiling workflow docs links (#1856)
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
Vladimir Sadov [Fri, 17 Jan 2020 13:20:10 +0000 (05:20 -0800)]
revert CPU clipping to 3.0, 2.x behavior (#1851)
Eirik Tsarpalis [Fri, 17 Jan 2020 11:51:34 +0000 (13:51 +0200)]
ZipFile.CreateFromDirectory: ensure entryEncoding parameter is being passed (#1825)
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
Michal Strehovský [Fri, 17 Jan 2020 10:49:57 +0000 (11:49 +0100)]
Implement SuppressGCTransition attribute in crossgen2 (#1772)
Fixes dotnet/coreclr#27188.
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.
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.
Andrew Au [Fri, 17 Jan 2020 05:09:28 +0000 (21:09 -0800)]
Flush GC log on shutdown (#1721)
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)
Carlos Sanchez Lopez [Fri, 17 Jan 2020 04:35:34 +0000 (20:35 -0800)]
Port CreateDirectory method as a DirectorySecurity extension (#1834)
Santiago Fernandez Madero [Fri, 17 Jan 2020 03:54:36 +0000 (19:54 -0800)]
Address PR feedback from old PR (#1837)
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.
Stephen Toub [Fri, 17 Jan 2020 02:19:25 +0000 (21:19 -0500)]
Automatically anchor regexes beginning with .* (#1706)
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.
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
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.
Santiago Fernandez Madero [Thu, 16 Jan 2020 23:22:54 +0000 (15:22 -0800)]
Remove Windows_NT_arm64 from checked libraries rolling tests (#1839)
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
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
Bruce Forstall [Thu, 16 Jan 2020 22:29:02 +0000 (14:29 -0800)]
Update macOS build requirements to include openssl
Santiago Fernandez Madero [Thu, 16 Jan 2020 21:16:41 +0000 (13:16 -0800)]
Remove Windows_NT_arm64 run tests (#1827)
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.
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
Michal Strehovský [Thu, 16 Jan 2020 18:26:57 +0000 (19:26 +0100)]
Update the CoreCLR testing workflow doc (#1806)
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
Eirik Tsarpalis [Thu, 16 Jan 2020 17:48:07 +0000 (19:48 +0200)]
enable nullable annotations for System.Dynamic.Runtime (#1810)
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)
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.
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
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.
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.
Stephen Toub [Thu, 16 Jan 2020 04:21:36 +0000 (23:21 -0500)]
Change all ActiveIssues to use Uris instead of numbers (#1768)
Rich Lander [Thu, 16 Jan 2020 02:16:56 +0000 (18:16 -0800)]
Update repo link to dotnet/runtime (#1781)
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
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
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
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
Viktor Hofer [Wed, 15 Jan 2020 22:58:18 +0000 (23:58 +0100)]
Update ReportGenerator to 4.4.2 (#1778)
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.
Marco Rossignoli [Wed, 15 Jan 2020 20:45:48 +0000 (21:45 +0100)]
Update dotnet-tools.json (#1773)
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>
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.
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
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.`.
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 :)
Andrey Akinshin [Wed, 15 Jan 2020 15:28:05 +0000 (18:28 +0300)]
Fix description of -skipnuget in src/coreclr/build.sh (#534)
Cheena Malhotra [Wed, 15 Jan 2020 14:21:00 +0000 (06:21 -0800)]
Revert Async changes to SNIPacket to fix deadlock issues (#778)
Marek Safar [Wed, 15 Jan 2020 13:15:34 +0000 (14:15 +0100)]
Remove two always false properties in UriSyntax (#696)
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.
Lucas Trzesniewski [Wed, 15 Jan 2020 04:56:56 +0000 (05:56 +0100)]
Mark some Nullable<T> members as readonly (#1727)
Value, HasValue, GetValueOrDefault
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
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.
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
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
Levi Broderick [Tue, 14 Jan 2020 23:21:34 +0000 (15:21 -0800)]
Update Version.Details.xml with new UnicodeData test asset (#1731)
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.
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)
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
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.
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
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
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).
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.
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.
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
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.
Elinor Fung [Tue, 14 Jan 2020 17:21:38 +0000 (09:21 -0800)]
Remove unused function in deps parsing (#1683)
Ryan Lucia [Tue, 14 Jan 2020 16:14:17 +0000 (11:14 -0500)]
[reflection] Add additional TypeInfo.FullName tests (#1613)
Maxim Lipnin [Tue, 14 Jan 2020 15:05:25 +0000 (18:05 +0300)]
Move Assembly.GetEntryAssembly method to shared part (#1670)
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".
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.
Elinor Fung [Tue, 14 Jan 2020 14:12:14 +0000 (06:12 -0800)]
Remove codebase argument from AssemblyNative::Load (#1697)
Stephen Toub [Tue, 14 Jan 2020 12:54:50 +0000 (07:54 -0500)]
Add Regex test to validate character-by-character comparison (#1693)
Tomáš Rylek [Tue, 14 Jan 2020 12:53:37 +0000 (13:53 +0100)]
Fix indentation bug in helix-queues-setup, sigh (#1701)
Tomáš Rylek [Tue, 14 Jan 2020 08:29:46 +0000 (09:29 +0100)]
Temporarily disable outerloop crossgen comparison runs (#1695)
Disable crossgen comparison runs that systematically fail in
CoreCLR outerloop runs.
Tracking issue: https://github.com/dotnet/runtime/issues/1282
Thanks
Tomas
Tomáš Rylek [Tue, 14 Jan 2020 08:29:22 +0000 (09:29 +0100)]
Fix gcstress0x3-gcstress0xC pipeline (#1685)
Andy Ayers [Tue, 14 Jan 2020 06:15:31 +0000 (22:15 -0800)]
JIT: some jitstress fixes (#1705)
Jitstress' `STRESS_LCL_FLD` mode was not handling `LCL_VAR_ADDR` nodes, leading
to bad "stress only" codegen. Handle these node types properly.
Fixes #1704.
Also initialize `compMethodName` early, so we can check for nullptr later on
when considering the jit stress range and avoid an AV.
Fixes #1684.
Stephen Toub [Tue, 14 Jan 2020 02:48:54 +0000 (21:48 -0500)]
Remove unnecessary DynamicMethod from in-memory compiled regex (#1665)
We're generating a dynamic method just to store a value into a base field, and we can more easily just due that directly without any code gen.
Stephen Toub [Tue, 14 Jan 2020 02:47:30 +0000 (21:47 -0500)]
Remove faulty assert from MethodDebugInformation (#1662)
* Remove faulty assert from MethodDebugInformation
* Update MetadataReaderTests.cs
Bruce Forstall [Tue, 14 Jan 2020 00:51:10 +0000 (16:51 -0800)]
Update macOS dependencies (#1691)
* Explicitly mention Xcode as a dependency
* Delete obsolete Xcode version comment
Stephen Toub [Tue, 14 Jan 2020 00:43:11 +0000 (19:43 -0500)]
Process "multi" strings in compiled regexes 4 or 2 chars at a time when possible (#1654)
* Process "multi" strings in compiled regexes 4 or 2 chars at a time when possible
When we encounter a series of characters in a regex pattern, we emit a comparison check per character. This updates that codegen to compare 2 or 4 characters at a time, when possible. In general these sequences are not long, but they can easily be a handful of characters, and comparing with ints and longs instead of chars slightly improves both throughput and the size of the IL and JIT'd asm.
* Address PR feedback
And add a test.
* Use StartsWith for long strings in EmitMultiChar
Avoids potentially very long generated Go methods and the resulting long JIT times and potentially stack overflows at invocation time. Prior to this change, a test added for 100K-long string takes a very long time to run and then stack overflows, whereas with this change it's very fast.
* Address PR feedback
* Tweak test per PR feedback
Tomáš Rylek [Tue, 14 Jan 2020 00:00:30 +0000 (01:00 +0100)]
Globally disable Windows ARM32 runs to reduce noise in CoreCLR runs (#1687)
As we still don't have a final resolution w.r.t. a new Windows
queue to run ARM32 tests on, I propose globally disable them before
the issue is resolved. We're tracking the underlying problem in:
https://github.com/dotnet/runtime/issues/1097
https://github.com/dotnet/runtime/issues/1663
https://github.com/dotnet/core-eng/issues/8490
Thanks
Tomas
Andrew Au [Mon, 13 Jan 2020 21:08:08 +0000 (13:08 -0800)]
Make parsing of debug info lazy (#1657)
Vitek Karas [Mon, 13 Jan 2020 20:33:43 +0000 (12:33 -0800)]
Merge pull request #1672 from vitek-karas/HostStartupInfoParseVoid
Tiny cleanup - make host_startup_info return void
Carol Eidt [Mon, 13 Jan 2020 17:51:42 +0000 (09:51 -0800)]
Don't reload a lclVar if it's RegOptional (#1627)
I encountered this while working on enregistering SIMD8. If a RegOptional reference has a register during allocation, but is spilled during resolution, it is beneficial to make it contained instead of loading it.
Bruce Forstall [Mon, 13 Jan 2020 17:40:27 +0000 (09:40 -0800)]
Several improvements to superpmi.py (#1516)
Several improvements to superpmi.py
1. The "diff" JIT in asmdiffs is now assumed to be in the current
repo if not specified. (That is, a computed default is attempted.)
2. jit-analyze is run on the generated diffs, if it is found on the
PATH. This has some limitations, as we generate a file for each
function, so the "top file" sections are not interesting.
3. Elapsed time is computed and displayed at the end of the task.
4. Remove unneeded "-runtime_repo_root" argument.
5. Remove unneeded "-product_location" argument from collection.
6. Add new "-spmi_location" argument to allow specifying a directory
in which to place SuperPMI artifacts. Defaults to the "spmi" directory
in the repo's "artifacts" directory.
7. Changed "repro" and "asm" directory name formats (they now have
OS/arch/build flavor components), and ensure each is unique.
8. Update various messages, including better messages on how to reproduce
asm and JitDump output.
9. On collection, don't allow specifying a target MCH file that already exists
(and would thus be destroyed).
10. Allow using "list-collections" without having a built core_root.
11. Allow specifying "-host_os" for "list-collections" (allows
querying for Linux collections while on Windows, for example).
12. Display directories where JitDump files were placed.
13. Improve defaults and default checking for host_os, arch, build_type
14. Greatly simplify argument parsing
15. Improve help messages
16. Implement altjit replay support using "-altjit" argument
17. Implement non-parallel replay support with "--sequential" argument
18. Made "-previous_temp_location" an argument
19. Update superpmi.py documentation in superpmi.md
Bruce Forstall [Mon, 13 Jan 2020 16:58:11 +0000 (08:58 -0800)]
runtest.py: allow skipping test run (#1618)
runtest.py contains the logic to precompile the Core_Root
directory. Allow this to be used without also running the
tests. Introduce a `--skip_test_run` argument to allow this,
used as:
`python runtest.py --precompile_core_root --skip_test_run`
Mateo Torres-Ruiz [Mon, 13 Jan 2020 16:55:13 +0000 (08:55 -0800)]
Stop buffering traces by default (#1645)
* Stop buffering the traces by default.
* Don't modify stream buffering before we validate that we have a tracing file.
Add test.
Vitek Karas [Mon, 13 Jan 2020 13:31:55 +0000 (05:31 -0800)]
Tiny cleanup - make host_startup_info return void
The original return value was always 0 and never actually checked.
Bruce Forstall [Mon, 13 Jan 2020 09:50:13 +0000 (01:50 -0800)]
Fix invocation of runtest.py (#1660)
If you pass arguments to runtest.cmd, the argument parsing "shift"
commands will lose the `%0` argument, so using `%~dp0` to find
the script location no longer works.
Use the cached script location to invoke runtest.py.
buyaa-n [Mon, 13 Jan 2020 06:32:45 +0000 (22:32 -0800)]
Annotate System.Security.Cryptography.Encoding for nullable (#1535)
* Annotate System.Security.Cryptography.Encoding for nullable
Jan Kotas [Mon, 13 Jan 2020 02:58:25 +0000 (18:58 -0800)]
Throw NotSupportedException for WaitHandle.WaitAny with 64 handle on STA threads (#1647)
This change is technically a breaking change, but it is better to throw than silently do the wrong thing.
Fixes #1646
NN [Sun, 12 Jan 2020 22:56:20 +0000 (00:56 +0200)]
Make PhysicalAddress.GetHashCode thread-safe. (#1649)
Jan Kotas [Sun, 12 Jan 2020 20:49:27 +0000 (12:49 -0800)]
Delete RHEL6 leftovers (#1648)
Fixes #423
Closes dotnet/corefx#24525
Closes dotnet/corefx#37739
Closes dotnet/corefx#31792