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.
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
Steve MacLean [Fri, 17 Jan 2020 23:01:25 +0000 (18:01 -0500)]
Remove unused/unnecessary defines (#1878)
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
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
Steve MacLean [Fri, 17 Jan 2020 22:48:28 +0000 (17:48 -0500)]
Remove stray sos reference (#1875)
Andrew Au [Fri, 17 Jan 2020 22:36:17 +0000 (14:36 -0800)]
Use bitmask operation to check if a slot is untracked (#1870)
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.
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"
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
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
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.
Davis Goodin [Fri, 17 Jan 2020 19:15:31 +0000 (13:15 -0600)]
Fix Linux_x64_glibc condition to build RPM/Deb (#1861)
Maryam Ariyan [Fri, 17 Jan 2020 18:49:42 +0000 (10:49 -0800)]
Adding area owners for new mono labels (#1865)
Justin Kotalik [Fri, 17 Jan 2020 18:21:13 +0000 (10:21 -0800)]
Implement required HttpClient apis in System.Net.Quic (#1703)
Adam Sitnik [Fri, 17 Jan 2020 17:48:49 +0000 (18:48 +0100)]
Update status badge link (#1855)
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)
vitek-karas [Fri, 17 Jan 2020 11:47:02 +0000 (03:47 -0800)]
Remove the option to specify VS path
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
vitek-karas [Fri, 17 Jan 2020 11:06:35 +0000 (03:06 -0800)]
Fix tests on linux
Different path normalization behavior
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>
vitek-karas [Wed, 15 Jan 2020 19:22:22 +0000 (11:22 -0800)]
Fix build on Linux
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)
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.
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