platform/upstream/dotnet/runtime.git
4 years agoDelete dead code in Crossgen's Program.cs (#2304)
Michal Strehovský [Wed, 29 Jan 2020 09:30:39 +0000 (10:30 +0100)]
Delete dead code in Crossgen's Program.cs (#2304)

* We don't need a workaround for a desktop framework bug since we don't have an ambition to run on desktop framework anymore.
* We don't need the entrypoint module.

4 years agoEnable inline type checks for all type equality cases (#2276)
Andy Ayers [Wed, 29 Jan 2020 08:47:56 +0000 (00:47 -0800)]
Enable inline type checks for all type equality cases (#2276)

Now that method tables are not shared by distinct types, we can always emit
inlined type equality tests.

Closes #1258.

4 years ago[interp] Fix virtual calls in mixed mode (#2299)
monojenkins [Wed, 29 Jan 2020 08:05:00 +0000 (03:05 -0500)]
[interp] Fix virtual calls in mixed mode (#2299)

Alternative to https://github.com/mono/mono/pull/18475 which doesn't ignore mixed mode virtual call performance. It is 20% faster with this approach.

Fixes https://github.com/mono/mono/issues/14206

Co-authored-by: Vlad Brezae <brezaevlad@gmail.com>
4 years agoDead Ending Microsoft.CSharp Package and Bumping the leftout assembly versions to...
Anirudh Agnihotry [Wed, 29 Jan 2020 06:36:54 +0000 (22:36 -0800)]
Dead Ending Microsoft.CSharp Package and Bumping the leftout assembly versions to 5.0.0.0 (#2264)

* deadending Microsoft.Csharp Package and bumping the assembly versions

* retargeting and clean up

* Update Microsoft.CSharp.csproj

* fixing the build

* reference -> projectreference

* adding ignored reference

4 years agoRevert "Disable test based on #129 (#130)" (#2310)
Koundinya Veluri [Wed, 29 Jan 2020 03:05:08 +0000 (19:05 -0800)]
Revert "Disable test based on #129 (#130)" (#2310)

This reverts commit 3a2dc0f8429b922fa254a1ba6f751b79259275b1.

Fixed by https://github.com/dotnet/runtime/pull/1457. Closes https://github.com/dotnet/runtime/issues/129.

4 years agoAdd support for multiple char classes in FindFirstChars (#2254)
Stephen Toub [Wed, 29 Jan 2020 02:17:53 +0000 (21:17 -0500)]
Add support for multiple char classes in FindFirstChars (#2254)

* Add a "multi first" check for FindFirstChars

FindFirstChars already has multiple things it checks for:
- If the expression is anchored, it checks the current position for that anchor.
- If we were able to compute a min required length, it checks for that much space remaining.
- If we were able to analyze the expression and come up with a string of text of multiple characters that must be at the beginning of any expression, we use Boyer-Moore to find it.
- If we were able to analyze the expression to come up with a character class that must match the first character in the input, we iterate through looking for that (and if possible, use IndexOf{Any} to speed that along).

This PR extends that last check to try to create a character class not just for the first character in the input, but for the first N characters in the input.  The check isn't as robust, mainly focused on expressions beginning with an alternation (often when it's global), so it's a separate check we try first, and only fall back to the more robust single-class analysis if we were unsuccessful.

By checking multiple characters, we're able to stay in a tighter loop inside of FindFirstChars.  In the future, we could look at replacing this with something potentially even better, such as a vectorized search for multiple starting strings.

* Address PR feedback

4 years agoDisable System.Net.* tests on Mono that are also disabled on CoreCLR (#2318)
Alexander Köplinger [Wed, 29 Jan 2020 02:12:47 +0000 (03:12 +0100)]
Disable System.Net.* tests on Mono that are also disabled on CoreCLR (#2318)

Should help with https://github.com/dotnet/runtime/issues/2316

4 years agoRemove format.patch (#2323)
Steve MacLean [Wed, 29 Jan 2020 01:49:43 +0000 (20:49 -0500)]
Remove format.patch (#2323)

Thies file was added accidentally as part of #1735

4 years agoMove libraries internal restore before repo restore, produce a restore binlog and...
Santiago Fernandez Madero [Wed, 29 Jan 2020 01:01:36 +0000 (17:01 -0800)]
Move libraries internal restore before repo restore, produce a restore binlog and increase verbosity (#2311)

* Move libraries internal restore before repo restore, produce a restore binlog and increase verbosity

* Use SDK from global.json

4 years agoAdd build skip functionality for servicing builds (#2291)
Davis Goodin [Wed, 29 Jan 2020 00:24:24 +0000 (18:24 -0600)]
Add build skip functionality for servicing builds (#2291)

4 years agoJIT: remove inlining restriction for some methods that throw (#2232)
Andy Ayers [Wed, 29 Jan 2020 00:01:09 +0000 (16:01 -0800)]
JIT: remove inlining restriction for some methods that throw (#2232)

We were blocking inlines for methods that throw with more than one thing on the
evaluation stack. There was already logic for the non-inlining case to flush
the stack and preserve pending side effects. So we can simply remove the
inlining restriction.

Fixes #2156.

4 years agoImprove call counting mechanism (#1457)
Koundinya Veluri [Tue, 28 Jan 2020 22:19:27 +0000 (14:19 -0800)]
Improve call counting mechanism (#1457)

Improve call counting mechanism

- Call counting through the prestub is fairly expensive and can be seen immediately after call counting begins
- Added call counting stubs. When starting call counting for a method:
  - A `CallCountingInfo` is created and initializes a remaining call count with a threshold
  - A `CallCountingStub` is created. It contains a small amount of code that decrements the remaining call count and checks for zero. When nonzero, it jumps to the code version's native code entry point. When zero, it forwards to a helper function that handles tier promotion.
  - When the call count threshold is reached, the helper call enqueues completion of call counting for background processing
  - When completing call counting, the code version is enqueued for promotion, and the call counting stub is removed from the call chain
  - Once all work queued for promotion is completed and methods transitioned to optimized tier, call counting stubs are deleted based on some heuristics and under runtime suspension
- The `CallCountingManager` is the main class with most of the logic. Its private subclasses are just simple data structures.
- Call counting is done at a `NativeCodeVersion` level (stub association is with the code version)
- The code versioning lock is used for data structures used for call counting. Since installing a call counting stub requires that we know what the currently active code version is, it made sense to use the same lock.
- Call counting stubs have hardcoded code. x64 has short and long stubs, short stubs are used when possible (often) and use IP-relative branches to the method's code and helper stub. Other platforms have only one type of stub (a short stub).
- For tiered methods that don't have a precode (virtual and interface methods), a forwarder stub (a precode) is created and it forwards to the call counting stub. This is so that the call counting stub can be safely and easily deleted. The forwarder stubs are only used when counting calls, there is one per method (not per code version), and they are not deleted. See `CallCountingManager::SetCodeEntryPoint()` for more info.
- The `OnCallCountThresholdReachedStub()` takes a "stub-identifying token". The helper call gets a stub address from it, and tells whether it's a short or long stub. From the stub, the remaining call count pointer is used to get the `CallCountingInfo`, and from it gets the `NativeCodeVersion` associated with the stub.
- The `CallCountingStubManager` traces through a call counting stub so that VS-like debuggers can step into a method through the call counting stub
- Exceptions (OOM)
  - On foreground threads, exceptions are propagated unless they can be handled without any compromise
  - On background threads, exceptions are caught and logged as before. Tried to limit scope of exception to one per method or code version such that a loop over many would not all be aborted by one exception.
- Fixed a latent race where a method is recorded for call counting and then the method's code entry point is set to tier 0 code
  - With that order, the tiering delay may expire and the method's entry point may be updated for call counting in the background before the code entry point is set by the recording thread, and that last action would disable call counting for the method and cause it to not be optimized. The only thing protecting from this happening was the delay itself, but a configured shorter delay increases the possibility of this happening.
  - Inverted the order such that the method's code entry point is set before recording it for call counting, both on first and subsequent calls
  - Changed the tiered compilation lock to be an any-GC-mode lock so that it can be taken inside the code versioning lock, as some things were more naturally placed inside the code versioning lock where we know the active code version, like checking for the tiering delay to delay call counting and promoting the code version when the call count threshold is reached
    - Unfortunately, that makes code inside the lock a GC-no-trigger scope and things like scheduling a timer or queuing a work item to the thread pool could not be done inside that scope. This tradeoff seems to be better than alternatives, so refactored those pieces to occur outside that scope.
- Publishing an entry point after changing the active code version now takes call counting into account, fixes https://github.com/dotnet/coreclr/issues/22426
- After the changes:
  - Call counting overhead is much smaller and is not many orders of magnitude greater than a method call
  - Some config modes for tuning tiering are now much more reasonable and do not affect perf negatively nearly as much as before - increasing call count threshold, disabling or decreasing the tiering delay. Enables dynamic thresholds in the future, which is not feasible due to the overhead currently.
  - No change to startup or steady-state perf
- Left for later
  - Eventing work to report call counting stub code ranges and method name (also needs to be done for other stubs)
  - Some tests that consume events to verify run-time behavior in a few config modes
  - Debugger test to verify debugging while call-counting. Debugger tests also need to be fixed for tiering.
  - The call count threshold has not been changed for now. As we don't have many tests that measure the performance in-between startup and steady-state, some will need to be created maybe from existing tests, to determine the effects
- Fixes https://github.com/dotnet/coreclr/issues/23596

4 years agoUse process_vm_readv to read remote memory when available on createdump
Next Turn [Tue, 28 Jan 2020 22:03:24 +0000 (06:03 +0800)]
Use process_vm_readv to read remote memory when available on createdump

4 years agoInclude error details when stream can't be opened for parsing in host (#2287)
Elinor Fung [Tue, 28 Jan 2020 21:28:59 +0000 (13:28 -0800)]
Include error details when stream can't be opened for parsing in host (#2287)

4 years agoRemove workaround for Build.SourcesDirectory variable in containers (#2261)
Santiago Fernandez Madero [Tue, 28 Jan 2020 18:54:52 +0000 (10:54 -0800)]
Remove workaround for Build.SourcesDirectory variable in containers (#2261)

4 years agoMake string._stringLength readonly (#2001)
Ben Adams [Tue, 28 Jan 2020 18:44:36 +0000 (18:44 +0000)]
Make string._stringLength readonly (#2001)

4 years agoAnnotate System.Security.AccessControl for nullable (#1992)
buyaa-n [Tue, 28 Jan 2020 18:42:23 +0000 (10:42 -0800)]
Annotate System.Security.AccessControl for nullable (#1992)

* Annotate System.Security.AccessControl for nullable

4 years agoSmtpClientTest: re-enable TestZeroTimeout (#2085)
Tom Deseyn [Tue, 28 Jan 2020 18:38:50 +0000 (19:38 +0100)]
SmtpClientTest: re-enable TestZeroTimeout (#2085)

4 years agoRemove "ActiveIssue" attribute from test (#2146)
Jan Jahoda [Tue, 28 Jan 2020 18:37:41 +0000 (19:37 +0100)]
Remove "ActiveIssue" attribute from test (#2146)

4 years agoUpdate SerialPort.Linux.cs (#2009)
Johonis [Tue, 28 Jan 2020 18:28:04 +0000 (19:28 +0100)]
Update SerialPort.Linux.cs (#2009)

* Update SerialPort.Linux.cs

add ttyGSX devices to supported devices

* Apply suggestions from code review

Entry can only be ttyGSx. when its not ttySx

Co-Authored-By: Stephen Toub <stoub@microsoft.com>
* Update SerialPort.Linux.cs

ttyGSx creates a file in "/sys/class/tty/ttyGS0" named "dev" - use this file as an additional check

Co-authored-by: Stephen Toub <stoub@microsoft.com>
4 years agoAdd more diagnostics to DroppedIncompleteStateMachine_RaisesIncompleteAsyncMethodEven...
Stephen Toub [Tue, 28 Jan 2020 18:17:54 +0000 (13:17 -0500)]
Add more diagnostics to DroppedIncompleteStateMachine_RaisesIncompleteAsyncMethodEvent test (#2283)

4 years agoDisable HttpListener test on Mono (#2285)
Stephen Toub [Tue, 28 Jan 2020 18:16:30 +0000 (13:16 -0500)]
Disable HttpListener test on Mono (#2285)

4 years agoAttempt to fix restore internal tools (#2255)
Santiago Fernandez Madero [Tue, 28 Jan 2020 18:01:36 +0000 (10:01 -0800)]
Attempt to fix restore internal tools (#2255)

* Force re-install of nuget authenticator

* Update dotnet tools to latest daily build

* Remove AddUntrackedResourcesForSourceLink workaround for sourcelink

4 years agoPrevent LocalAddressVisitor from morphing x86 vararg params (#2157)
mikedn [Tue, 28 Jan 2020 16:44:59 +0000 (18:44 +0200)]
Prevent LocalAddressVisitor from morphing x86 vararg params (#2157)

fgMorphStackArgForVarArgs has no support for local address node nor LCL_FLD nodes.

4 years agoUse HashCode.Add rather than HashCode.Combine (#2200)
John Tur [Tue, 28 Jan 2020 13:46:57 +0000 (09:46 -0400)]
Use HashCode.Add rather than HashCode.Combine (#2200)

4 years agoMerge ReadyToRunCodegenNodeFactory into NodeFactory (#2277)
Michal Strehovský [Tue, 28 Jan 2020 13:22:04 +0000 (14:22 +0100)]
Merge ReadyToRunCodegenNodeFactory into NodeFactory (#2277)

This split existed because of a failed attempt to share too much of crossgen2 with the full AOT compiler. Now that we're sharing source files instead of entire assemblies, ILCompiler.ReadyToRun is free to claim the NodeFactory name.

4 years agoJIT: emit gc updates from RRR instruction forms (#2197)
Andy Ayers [Tue, 28 Jan 2020 06:41:17 +0000 (22:41 -0800)]
JIT: emit gc updates from RRR instruction forms (#2197)

These do not produce GC refs, so make sure we end any GC liveness for the
destination register.

Also, make sure all gc stress modes announce themselves in the jit dump log.

Fixes #2186.

4 years agoPort Microsoft.VisualBasic.CompilerServices.Utils.GetResourceString() (#1911)
Charles Stoner [Tue, 28 Jan 2020 06:37:41 +0000 (22:37 -0800)]
Port Microsoft.VisualBasic.CompilerServices.Utils.GetResourceString() (#1911)

4 years agoConvert AssemblyNative::Load to QCall (#1929)
Dong-Heon Jung [Tue, 28 Jan 2020 03:01:30 +0000 (12:01 +0900)]
Convert AssemblyNative::Load to QCall (#1929)

* Convert AssemblyNative::Load to QCall

- FCall uses libunwind to find Method description.
- Get rid of the libunwind overhead in AssemblyNative::Load
  by converting to QCall

* Add workaround for https://github.com/dotnet/runtime/issues/2240

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
4 years agoFix incorrect BAD_FORMAT_NOTHROW_ASSERTs in casting (#2237)
Jan Kotas [Tue, 28 Jan 2020 02:57:55 +0000 (18:57 -0800)]
Fix incorrect BAD_FORMAT_NOTHROW_ASSERTs in casting (#2237)

4 years agoAllow allocating large object from free list while background sweeping SOH (#2103)
Andrew Au [Tue, 28 Jan 2020 02:08:00 +0000 (18:08 -0800)]
Allow allocating large object from free list while background sweeping SOH (#2103)

4 years agoFix compilation of dbgtransportsession (#2247)
Steve MacLean [Tue, 28 Jan 2020 01:11:15 +0000 (20:11 -0500)]
Fix compilation of dbgtransportsession (#2247)

Fix unused variable warnings when RIGHT_SIDE_COMPILE is not defined

4 years agoAdd FEATURE_REMOTE_PROC_MEM (#2244)
Steve MacLean [Tue, 28 Jan 2020 01:10:36 +0000 (20:10 -0500)]
Add FEATURE_REMOTE_PROC_MEM (#2244)

The /proc/mem filesystem is only available on Linux hosts. Revise #ifdef
to use FEATURE_PROC_MEM to enable disable the use of /proc/mem on the
debug target shim.  Enable only when HOST and target are Unix, but not
Darwin.

4 years agoFix local test failures for System.Xml.Xsl.XslTransformApi.Tests & Rename old build...
Ganbarukamo41 [Tue, 28 Jan 2020 01:09:20 +0000 (10:09 +0900)]
Fix local test failures for System.Xml.Xsl.XslTransformApi.Tests & Rename old build variable in csproj (#1268)

The only failure in coreclr is not related to this change, merging it.
Thank you for your contribution @Gnbrkm41

4 years agoMerge pull request #2260 from dotnet/BatchCoreclrCi
Santiago Fernandez Madero [Tue, 28 Jan 2020 00:47:19 +0000 (16:47 -0800)]
Merge pull request #2260 from dotnet/BatchCoreclrCi

Batch CI builds for PRI2 testing of CoreCLR

4 years agoBatch CI builds for PRI2 testing of CoreCLR
Santiago Fernandez Madero [Tue, 28 Jan 2020 00:15:05 +0000 (16:15 -0800)]
Batch CI builds for PRI2 testing of CoreCLR

4 years agoMake sure R2RDump write to console in case --out is not specified (#2239)
Andrew Au [Mon, 27 Jan 2020 22:21:56 +0000 (14:21 -0800)]
Make sure R2RDump write to console in case --out is not specified (#2239)

4 years agoUpdating the IL.Sdk package to latest (#2235)
Anirudh Agnihotry [Mon, 27 Jan 2020 22:05:28 +0000 (14:05 -0800)]
Updating the IL.Sdk package to latest (#2235)

* using the latest il sdk package

* correcting the package version

* updating il.sdk version in versions.props as well

4 years agoFix concurrency issues in the regression test b426654 (#2211)
Tomáš Rylek [Mon, 27 Jan 2020 22:04:44 +0000 (23:04 +0100)]
Fix concurrency issues in the regression test b426654 (#2211)

After fixing the interruptible ranges by aligning intrinsics
inlined by Crossgen1 / 2 I have verified that the concurrency and
rooting fixes suggested by Kount finally fix the Crossgen2 build
of the test. I have made the following changes:

1) I have shortened the test to 5 seconds and I changed the add
instruction to xor so that the test cannot randomly start
overflowing again on some future faster HW.

2) I have changed the synchronization static s_timeUp to a volatile.
This probably doesn't matter on Intel but will most likely matter
a lot on ARM.

3) I have added a call to Dispose for the timeout timer to make
sure it remains rooted for the duration of the test.

Thanks

Tomas

4 years agoCrossgen2 - precompile generic instantiations (#2154)
Jan Vorlicek [Mon, 27 Jan 2020 20:42:34 +0000 (21:42 +0100)]
Crossgen2 - precompile generic instantiations (#2154)

* Crossgen2 - precompile generic instantiations

This change adds precompilation of all methods on generic instantiations
of types that are encountered during compilation. In my powershell
startup time experiments, it shaved off about 110 methods from the ones
that needed to be jitted at runtime and looking at e.g.
System.Private.CoreLib.dll precompilation result, it is much closer to
the version we get from the old crossgen now.

* Create a new node type to carry the method dependecies

4 years agoRemove workarounds in build scripts for netcoreapp and netfx versionless (#1841)
Santiago Fernandez Madero [Mon, 27 Jan 2020 20:13:14 +0000 (12:13 -0800)]
Remove workarounds in build scripts for netcoreapp and netfx versionless (#1841)

* Remove workarounds in build scripts for netcoreapp and netfx versionless

* Don't pass down netcoreapp in yml builds

* PR Feedback and condition passing -framework arg when not empty in yml files

* Condition TargetGroup global property in helix.yml

* PR Feedback to not use targetgroup for allconfigurations in sendtohelix

* Change from PackageTesting to BuildAllConfigurations

4 years agoMove official builds to OSX 10.14 pool (#2159)
Santiago Fernandez Madero [Mon, 27 Jan 2020 20:12:51 +0000 (12:12 -0800)]
Move official builds to OSX 10.14 pool (#2159)

* Move official builds to OSX 10.14 pool

* Use vmImage instead

4 years agoFix method and basic block flags used by early opts. (#2126)
Eugene Rozenfeld [Mon, 27 Jan 2020 20:03:06 +0000 (12:03 -0800)]
Fix method and basic block flags used by early opts. (#2126)

Fix method and basic block flags used by early opts.

Add missing BBF_HAS_NULLCHECK in loop test transformation.
This change had no diffs in frameworks and benchmark.

Add missing OMF_HAS_ARRAYREF and BBF_HAS_IDX_LEN in many places.
This change had diffs in frameworks and benchmark since the optimization
replacing GT_ARRLENGTH with a constant fires much more often.

Fix inlining to not lose basic block flags when the inlinee basic block
has a ret expr but no statements.

Change propGetType condition in optDoEarlyPropForFunc to check for OMF_HAS_NEWARRAY
in addition to OMF_HAS_NEWOBJ.

Check that methods and basic blocks that have calls to object allocation
helpers have OMF_HAS_NEWOBJ and BBF_HAS_NEWOBJ set.

Check that methods and basic blocks that have calls to array allocation
helpers have OMF_HAS_NEWARRAY and BBF_HAS_NEWARRAY set.

Check that methods and basic blocks that have GT_NULLCHECK nodes
helpers have OMF_HAS_NULLCHECK and BBF_HAS_NULLCHECK set.

Check that methods and basic blocks that access MethodTable
via GT_IND on a ref have OMF_HAS_VTABLEREF and BBF_HAS_VTABLEREF set.

Check that methods and basic blocks that have GT_ARRLENGTH
have OMF_HAS_ARRAYREF and BBF_HAS_IDX_LEN set.

Fix fgOptWhileLoop that could lose BBF_HAS_NEWOBJ and BBF_HAS_NEWARRAY.

Add asserts to make sure we don't have diverging codegen
in debug/checked/release because of early opts.

Add BBF_HAS_VTABREF to BBF_COMPACT_UPD and BBF_SPLIT_GAINED.

4 years agoFactor common prefix text out of Regex alternations (#2171)
Stephen Toub [Mon, 27 Jan 2020 19:56:04 +0000 (14:56 -0500)]
Factor common prefix text out of Regex alternations (#2171)

* Factor common prefix text out of Regex alternations

Given a regex like "this|that|there", we will now factor out the common prefix into a new node concatenated with the alternation, e.g. "th(?:is|at|ere)".  This has a few benefits, including exposing more text to FindFirstChar if this is at the beginning of the sequence, reducing backtracking, and enabling further reduction/optimization opportunities in the alternation.

* Address PR feedback

* Update RegexBoyerMoore.cs

4 years agoFixed Base64 EncodeToUtf8 / DecodeFromUtf8 return states (Done | NeedMoreData) (...
Günther Foidl [Mon, 27 Jan 2020 19:18:14 +0000 (20:18 +0100)]
Fixed Base64 EncodeToUtf8 / DecodeFromUtf8 return states (Done | NeedMoreData) (#281)

4 years agoDelete unused code related to ExtensibleClassFactory (#2224)
Jan Kotas [Mon, 27 Jan 2020 19:04:23 +0000 (11:04 -0800)]
Delete unused code related to ExtensibleClassFactory (#2224)

4 years agoFix for IlAsm round-trip issue #803 (#2168)
Brian Sullivan [Mon, 27 Jan 2020 19:01:25 +0000 (11:01 -0800)]
Fix for IlAsm round-trip issue #803 (#2168)

Remove the unnecessary assignment m_pCustomDescrList = NULL;
from the method RecordTypeConstraints that was added with my original fix.

4 years agoDelete dead ctor in RegexParseException (#2229)
Stephen Toub [Mon, 27 Jan 2020 18:29:52 +0000 (13:29 -0500)]
Delete dead ctor in RegexParseException (#2229)

It'll never be used because the exception gets serialized as its base type and thus is never deserialized.

4 years ago[utils] Default to g_print in mono_counters_dump if the stream is NULL (#2178)
monojenkins [Mon, 27 Jan 2020 18:25:00 +0000 (13:25 -0500)]
[utils] Default to g_print in mono_counters_dump if the stream is NULL (#2178)

This makes `mono_counters_dump` actually work on Android. If either this added default behavior or the macro is too terrible I can explore other options, but I'm tired and this was fast.

Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
4 years ago[mono-corelib] Embed linker descriptor. (#2141)
Zoltan Varga [Mon, 27 Jan 2020 18:11:29 +0000 (13:11 -0500)]
[mono-corelib] Embed linker descriptor. (#2141)

Import illink.targets correctly for Mono System.Private.CoreLib.

This causes an issue when running tests so disable trimming for now.

Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
4 years agoAvoid large switch in compiled FindFirstChar (#2169)
Stephen Toub [Mon, 27 Jan 2020 17:43:12 +0000 (12:43 -0500)]
Avoid large switch in compiled FindFirstChar (#2169)

* Avoid large switch in compiled FindFirstChar

Rather than branching for each value, we can get the value from a lookup table.

* Address PR feedback

Along with some additional style cleanup while addressing that feedback.

4 years agoUse latest System.Memory for ns2.0 refs (#2112)
Eric StJohn [Mon, 27 Jan 2020 17:08:35 +0000 (09:08 -0800)]
Use latest System.Memory for ns2.0 refs (#2112)

4 years ago[runtime] Miscellaneous printf cleanup (#2177)
monojenkins [Mon, 27 Jan 2020 16:59:33 +0000 (11:59 -0500)]
[runtime] Miscellaneous printf cleanup (#2177)

Done to unblock the externs. More work should probably be done, see mono/mono#18580.

Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
4 years agoRemove obsolete files from mono netcore. (#2223)
Steve Pfister [Mon, 27 Jan 2020 16:11:32 +0000 (11:11 -0500)]
Remove obsolete files from mono netcore. (#2223)

Since we moved to dotnet/runtime, they are no longer needed.

4 years agoUpdate locale tables - add Tatar CLDR files tt.xml and tt_RU.xml (#2219)
monojenkins [Mon, 27 Jan 2020 15:56:03 +0000 (10:56 -0500)]
Update locale tables - add Tatar CLDR files tt.xml and tt_RU.xml (#2219)

Fixes mono/mono#18524

The `tt.xml` and `tt_RU.xml` files were added in CLDR 34: http://cldr.unicode.org/index/downloads/cldr-34

Upgrading to v34 (or the latest v36) introduced a larger number of new cultures.  I went with the smallest change possible to have Tatar added.

I wasn't sure if this warranted a test in `CultureInfoTest.cs`, let me know if that would be required and I am happy to add.

Co-authored-by: Adrian <adrianluisgonzalez@gmail.com>
4 years agoAdd pull requests guide doc (#2145)
Marek Safar [Mon, 27 Jan 2020 14:46:23 +0000 (15:46 +0100)]
Add pull requests guide doc (#2145)

* Add pull requests guide doc

Co-Authored-By: Ryan Lucia <ryan@luciaonline.net>
Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
Co-authored-by: Dan Moseley <danmose@microsoft.com>
4 years agoDelete AvailableType/ExternalTypeNode (#2218)
Michal Strehovský [Mon, 27 Jan 2020 14:11:42 +0000 (15:11 +0100)]
Delete AvailableType/ExternalTypeNode (#2218)

These nodes didn't do anything.

4 years agoDelete orphaned file (#2217)
Michal Strehovský [Mon, 27 Jan 2020 14:01:30 +0000 (15:01 +0100)]
Delete orphaned file (#2217)

Became orphaned in #172.

4 years agoMinor R2RDump facelift w.r.t. diffing dump (#2184)
Tomáš Rylek [Mon, 27 Jan 2020 13:04:51 +0000 (14:04 +0100)]
Minor R2RDump facelift w.r.t. diffing dump (#2184)

Based on offline chat with JanV I added initial provisions to simplify
diffing Crossgen1- and 2-compiled SPC. In essence, the --diff option
newly ends up emitting two extra files with the ".r2rdump" extension
representing the methods common to the left and right R2R file. This
is formerly untrodden territory, I'm pioneering R2RDump usability for
this purpose.

Thanks

Tomas

4 years agoConfig for CredScan suppresions (#2212)
Marie Píchová [Mon, 27 Jan 2020 10:54:22 +0000 (11:54 +0100)]
Config for CredScan suppresions (#2212)

4 years agoFix for -mminimal-toc detection, enable BTLS on FreeBSD PowerPC (#2175)
monojenkins [Mon, 27 Jan 2020 10:21:29 +0000 (05:21 -0500)]
Fix for -mminimal-toc detection, enable BTLS on FreeBSD PowerPC (#2175)

Fixes mono/mono#18554 by making autoconf actually check if `-mminimal-toc` works instead of assuming on powerpc. Tested with FreeBSD 12.x and 13.x on powerpc64 ELFv2.
While we are in here, also enable BTLS which has passed testing.

Co-authored-by: Phil Jaenke <prj@rootwyrm.com>
4 years agoAllow passing IntPtr values with UnmanagedType.AsAny. (#2039)
monojenkins [Mon, 27 Jan 2020 10:19:26 +0000 (05:19 -0500)]
Allow passing IntPtr values with UnmanagedType.AsAny. (#2039)

This is used by the SplashScreen class of WindowsBase in .NET Core to pass a NULL pointer.

Co-authored-by: Vincent Povirk <madewokherd@gmail.com>
4 years ago[mono-corelib] Throw exception on an invalid use of short form opcodes for locals...
Alexis Christoforides [Mon, 27 Jan 2020 10:13:32 +0000 (05:13 -0500)]
[mono-corelib] Throw exception on an invalid use of short form opcodes for locals. (#2201)

4 years agoAdd HTTP/3 draft 25 support. (#1294)
Cory Nelson [Mon, 27 Jan 2020 07:50:54 +0000 (23:50 -0800)]
Add HTTP/3 draft 25 support. (#1294)

4 years agoUnify remaining CoreLib interop files (#2203)
Jan Kotas [Mon, 27 Jan 2020 02:24:51 +0000 (18:24 -0800)]
Unify remaining CoreLib interop files (#2203)

Fixes #1232

4 years agoMerge pull request #2206 from vargaz/disable-lldb
Zoltan Varga [Sun, 26 Jan 2020 19:31:17 +0000 (14:31 -0500)]
Merge pull request #2206 from vargaz/disable-lldb

[runtime] Disable lldb backtrace display on osx, it hangs on attaching in lldb.

4 years agoMake JIT configuration a single-init static (#2208)
Michal Strehovský [Sun, 26 Jan 2020 17:52:08 +0000 (18:52 +0100)]
Make JIT configuration a single-init static (#2208)

This fixes two things:
* UseJitPath on compilation builder doesn't make sense for any other backends this file is shared with (CppCodegen/LLVM). Moving that to ReadyToRunCodenCompilationBuilder.
* JitConfigProvider made it look like a configurable JIT path and configurable COMPlus RyuJIT options are a thing, but they're in fact per process and can only be initialized once (first is an implementation limitation in CorInfoImpl, the second is a RyuJIT limitation). Making the config class static+throwing for double-initialization to make this very clear.

4 years ago[runtime] Disable lldb backtrace display on osx, it hangs on attaching in lldb.
Zoltan Varga [Sun, 26 Jan 2020 13:22:05 +0000 (08:22 -0500)]
[runtime] Disable lldb backtrace display on osx, it hangs on attaching in lldb.

4 years agoMerge pull request #2079 from monojenkins/sync-pr-18537-from-mono
Thays Grazia [Sun, 26 Jan 2020 02:59:45 +0000 (23:59 -0300)]
Merge pull request #2079 from monojenkins/sync-pr-18537-from-mono

[debugger] Access invalid memory address using PointerValue Command.

4 years ago[debugger] Access invalid memory address using PointerValue Command.
thaystg [Sun, 26 Jan 2020 00:23:38 +0000 (00:23 +0000)]
[debugger] Access invalid memory address using PointerValue Command.

Creating a fork process to access address that came from IDE using PointerValue. The IDE can send an invalid address and it was crashing mono.

Fixes mono/mono#18191

4 years agoCPU utilization computation fixes (#2196)
Jan Kotas [Sat, 25 Jan 2020 23:56:23 +0000 (15:56 -0800)]
CPU utilization computation fixes (#2196)

* CPU utilization computation fixes
- On Unix, move scalling for total number of processors from PAL to managed side, so that it can use container limit aware ProcessorCount
- Delete asserts for CPU utilization being between 0 and 100. These asserts can fail due to races or rounding errors.
- Converted a few classes to structs

Fixes #2195

* Fix buildbreak

4 years agoFix typos (#2179)
monojenkins [Sat, 25 Jan 2020 18:55:53 +0000 (13:55 -0500)]
Fix typos (#2179)

Co-authored-by: Maher Jendoubi <maher.jendoubi@gmail.com>
4 years agoReduce execution time of RegexCharacterSetTests (#2194)
Stephen Toub [Sat, 25 Jan 2020 18:29:32 +0000 (13:29 -0500)]
Reduce execution time of RegexCharacterSetTests (#2194)

I recently wrote a large, exhaustive set of tests to validate our handling of regex character sets.  Unfortunately it ends up being too much for our CI system.  We were validating ~440 different character sets, for both RegexOptions.None and RegexOptions.Compiled, and for each validating all 65,536 character inputs... that's ~58M regex matches.  In most cases locally it was taking around 15s, but on a loaded, underwhelming CI machine, it was taking minutes in some cases.

I've reduced the load (primarily by only validating the specified characters that should be included or excluded in cases where we're already testing both the positive and negative variants of the same set), while trying to keep a reasonable semblence of the coverage.

I also made it outerloop, and moved a few other longer-running regex tests to outerloop as well.

4 years agoInitialize HashSizeValue for digest algorithms.
Kevin Jones [Sat, 25 Jan 2020 18:00:12 +0000 (13:00 -0500)]
Initialize HashSizeValue for digest algorithms.

The abstract types SHAx and MD5 did not set HashSizeValue, which
would lead to derived types to have HashSize a value of 0. This
initializes the field to match .NET Framework behavior.

4 years agoMerge pull request #2081 from monojenkins/sync-pr-18552-from-mono
Zoltan Varga [Sat, 25 Jan 2020 14:20:20 +0000 (09:20 -0500)]
Merge pull request #2081 from monojenkins/sync-pr-18552-from-mono

[jit] Compute has_references correctly for gshared types whose constraint is a generic valuetype.

4 years ago[jit] Compute has_references correctly for gshared types whose constraint is a generi...
vargaz [Sat, 25 Jan 2020 13:06:43 +0000 (13:06 +0000)]
[jit] Compute has_references correctly for gshared types whose constraint is a generic valuetype.

4 years agoFixed typo in docker readme (#2190)
Marie Píchová [Sat, 25 Jan 2020 13:01:23 +0000 (14:01 +0100)]
Fixed typo in docker readme (#2190)

4 years agoFix intrinsics treatment in Crossgen2 (#1926)
Tomáš Rylek [Sat, 25 Jan 2020 10:27:13 +0000 (11:27 +0100)]
Fix intrinsics treatment in Crossgen2 (#1926)

* Fix intrinsics treatment in Crossgen2

This change fixes unintentional differences in the treatment of
intrinsics in Crossgen2 compared to Crossgen1 I found while
investigating failures in the regression test b426654. While the
change by itself doesn't fully fix the test, I believe it to be
generally useful towards removing the remaining codegen
differences between the compilers.

Thanks

Tomas

* Address JanK's PR feedback

I have audited all entries in the intrinsics table and I added
the [Intrinsic] annotation to all applicable methods. I haven't
found <code>System.EETypePtr.EETypePtrOf</code> and
<code>System.Activator.DefaultConstructorOf</code> anywhere.
I have reverted the additional check for IsInternalCall that
I put in CorInfoImpl in the 1st commit.

Thanks

Tomas

* Revert assertion check for IsInternalCall

* Remove superfluous check for the intrinsic attribute

* Put back the CORINFO_FLG_JIT_INTRINSIC flag

* Remove superfluous namespace name on Intrinsic per JanK's suggestion

* One more removal of superfluous namespace specification

4 years agoMove Strings.resx from CoreCLR to shared System.Private.CoreLib folder (#2151)
Alexander Köplinger [Sat, 25 Jan 2020 10:08:02 +0000 (11:08 +0100)]
Move Strings.resx from CoreCLR to shared System.Private.CoreLib folder (#2151)

* Move Strings.resx from CoreCLR to shared System.Private.CoreLib folder

Mono and CoreCLR both use the same file.

* Get rid of duplicate string

4 years agoRemove unused parts of resource loading (#2164)
Elinor Fung [Sat, 25 Jan 2020 10:01:18 +0000 (02:01 -0800)]
Remove unused parts of resource loading (#2164)

4 years agoFix restore of internal tools and enable IBC merge (#1846)
Santiago Fernandez Madero [Sat, 25 Jan 2020 03:02:49 +0000 (19:02 -0800)]
Fix restore of internal tools and enable IBC merge (#1846)

4 years agoMerge pull request #2142 from vargaz/runtime-no-abort
Zoltan Varga [Sat, 25 Jan 2020 01:12:53 +0000 (20:12 -0500)]
Merge pull request #2142 from vargaz/runtime-no-abort

[runtime] Avoid loading ThreadAbortException class on netcore.

4 years agoIncrease crossgen-comparison job timeout (#2160)
Santiago Fernandez Madero [Sat, 25 Jan 2020 00:45:09 +0000 (16:45 -0800)]
Increase crossgen-comparison job timeout (#2160)

4 years agoChange from PackageTesting to BuildAllConfigurations
Santiago Fernandez Madero [Fri, 24 Jan 2020 19:30:47 +0000 (11:30 -0800)]
Change from PackageTesting to BuildAllConfigurations

4 years agoJIT: merge fgMorph into compCompile (#2110)
Andy Ayers [Sat, 25 Jan 2020 00:19:50 +0000 (16:19 -0800)]
JIT: merge fgMorph into compCompile (#2110)

This gives us a single method that controls most of the jit's phase behavior.
Largely a manual inline, though I updated some comments and changed one assert.

Follow up from #1309; also see #2109.

4 years agoJIT: fix another jitstress/gcstress issue with profiler leave hook (#2105)
Andy Ayers [Sat, 25 Jan 2020 00:05:27 +0000 (16:05 -0800)]
JIT: fix another jitstress/gcstress issue with profiler leave hook (#2105)

Need to also report the hidden return buffer pointer as GC live, in case it
happens to refer to a heap location (method invoked via reflection).

Also did some minor cleanup; we weren't using `returnsGCr` in `emitEndCodeGen`
and we were munging return value liveness unnecessarily when not emitting
a profiler leave hook.

Closes #1971.

4 years agofixed few races when setting or clearing card bundle bits (#2132)
Vladimir Sadov [Fri, 24 Jan 2020 22:58:45 +0000 (14:58 -0800)]
fixed few races when setting or clearing card bundle bits (#2132)

4 years agoRefactor CMake system to allow cross OS DAC compile (#2054)
Steve MacLean [Fri, 24 Jan 2020 22:09:26 +0000 (17:09 -0500)]
Refactor CMake system to allow cross OS DAC compile (#2054)

* Refactor CMake system to allow cross OS DAC compile

Add CLR_CMAKE_HOST_OS

Add rules to determine which cross OS combinations are valid

Make add_definitions depend on TARGET OS properties. Wherever reasonable
make C++ defines depend on runtime target rather than host.

4 years agoUpdate perfview link (#2161)
Bill Wert [Fri, 24 Jan 2020 22:00:28 +0000 (14:00 -0800)]
Update perfview link (#2161)

4 years agoMerge pull request #2108 from vargaz/mono-cmake-build
Zoltan Varga [Fri, 24 Jan 2020 22:00:12 +0000 (17:00 -0500)]
Merge pull request #2108 from vargaz/mono-cmake-build

Initial CMAKE build system support for Mono.

4 years agoFix validation of uninstantiated generic methods (#2137)
Michal Strehovský [Fri, 24 Jan 2020 20:56:32 +0000 (21:56 +0100)]
Fix validation of uninstantiated generic methods (#2137)

Matches what we do for uninstatiated generic types - no need to look at generic parameters.

4 years agoOne more removal of superfluous namespace specification
Tomas [Fri, 24 Jan 2020 19:57:31 +0000 (20:57 +0100)]
One more removal of superfluous namespace specification

4 years agoReenable Http2_ServerSendsInvalidSettingsValue_Error test (#2134)
Tomas Weinfurt [Fri, 24 Jan 2020 19:42:20 +0000 (11:42 -0800)]
Reenable Http2_ServerSendsInvalidSettingsValue_Error test (#2134)

4 years agoRemove superfluous namespace name on Intrinsic per JanK's suggestion
Tomas [Fri, 24 Jan 2020 19:05:40 +0000 (20:05 +0100)]
Remove superfluous namespace name on Intrinsic per JanK's suggestion

4 years agoRemove date number from dev build version (#1835)
Davis Goodin [Fri, 24 Jan 2020 18:17:11 +0000 (12:17 -0600)]
Remove date number from dev build version (#1835)

* Remove date number from dev build version

* Set Library assembly version back to 5.0.0.0

* Use default assembly version in versions.props and fix package testing

* Add missed change to define AssemblyVersion to match MajorVersion.MinorVersion.0.0 in the root

* Don't change AssemblyVersions in installer, leave as it was

* Fix installer tests

* Move AssemblyVersion for installer test assets to right place

Co-authored-by: Santiago Fernandez Madero <safern@microsoft.com>
4 years agocorefx => runtime (#2068)
Youssef Victor [Fri, 24 Jan 2020 17:30:18 +0000 (19:30 +0200)]
corefx => runtime (#2068)

* corefx => runtime

* Update adding-api-guidelines.md

* Update adding-api-guidelines.md

4 years agoRecognize the `Vector128/256.AsVector*` methods as intrinsic (#1280)
Tanner Gooding [Fri, 24 Jan 2020 15:49:44 +0000 (07:49 -0800)]
Recognize the `Vector128/256.AsVector*` methods as intrinsic (#1280)

* Recognize the `Vector128/256.AsVector*` methods as intrinsic

* Ensure we normalize the struct handle for S.Numerics to S.R.Intrinsic vector conversions

* Marking the Vector128/256.As* methods as intrinsic

* Don't handle AsVector2 or AsVector3 as intrinsic right now

4 years agoenable PostAsync_ReuseRequestContent_Success on Unix (#2118)
Tomas Weinfurt [Fri, 24 Jan 2020 15:00:44 +0000 (07:00 -0800)]
enable PostAsync_ReuseRequestContent_Success on Unix (#2118)

4 years agoRemove ActiveIssue(39075) (#2119)
Eric StJohn [Fri, 24 Jan 2020 14:59:47 +0000 (06:59 -0800)]
Remove ActiveIssue(39075) (#2119)

Issue was fixed but test was not enabled.

4 years agoenable GetAsync_SupportedSSLVersion_Succeeds (#2125)
Tomas Weinfurt [Fri, 24 Jan 2020 14:59:01 +0000 (06:59 -0800)]
enable GetAsync_SupportedSSLVersion_Succeeds (#2125)