platform/upstream/dotnet/runtime.git
6 years agoDisable tracecontrol test on all platforms. (dotnet/coreclr#20374)
Brian Robbins [Thu, 11 Oct 2018 21:56:20 +0000 (14:56 -0700)]
Disable tracecontrol test on all platforms. (dotnet/coreclr#20374)

Commit migrated from https://github.com/dotnet/coreclr/commit/e6cdf8eed22c8811735409bdd67b9a445b58f7de

6 years agoChanging Number.BigInteger and Number.NumberBuffer to directly use fixed-sized buffer...
Tanner Gooding [Thu, 11 Oct 2018 21:25:40 +0000 (14:25 -0700)]
Changing Number.BigInteger and Number.NumberBuffer to directly use fixed-sized buffers (dotnet/coreclr#20371)

* Moving Number.BigInteger to directly use a `fixed-sized buffer`

* Moving Number.NumberBuffer to directly use a `fixed-sized buffer`

Commit migrated from https://github.com/dotnet/coreclr/commit/a8e724dc174231de87d2e34b8939af7ad56350f4

6 years agoMerge pull request dotnet/coreclr#20368 from sergign60/unwind_fix
Bruce Forstall [Thu, 11 Oct 2018 20:44:08 +0000 (13:44 -0700)]
Merge pull request dotnet/coreclr#20368 from sergign60/unwind_fix

Fix for CoreRT dotnet/coreclr#6253 Assertion slot != NO_REVERSE_PINVOKE_FRAME' fails

Commit migrated from https://github.com/dotnet/coreclr/commit/3792728f853432d9cff60244f30f25fb2ac5ddf1

6 years agoJitEE interface additions to support object stack allocation. (dotnet/coreclr#20283)
Eugene Rozenfeld [Thu, 11 Oct 2018 20:03:26 +0000 (13:03 -0700)]
JitEE interface additions to support object stack allocation. (dotnet/coreclr#20283)

Add two methods to JitEE interface: getHeapClassSize and canAllocateOnStack.

Change JITEEVersionIdentifier.

Commit migrated from https://github.com/dotnet/coreclr/commit/5f9f37432568b9abd91de39949ae860e9151798e

6 years agoUpdate BuildTools, CoreClr, CoreFx, CoreSetup to preview1-03311-01, preview1-27011...
dotnet-maestro-bot [Thu, 11 Oct 2018 19:22:56 +0000 (12:22 -0700)]
Update BuildTools, CoreClr, CoreFx, CoreSetup to preview1-03311-01, preview1-27011-04, preview1-27011-05, preview1-27011-01, respectively (dotnet/coreclr#20341)

Commit migrated from https://github.com/dotnet/coreclr/commit/5c039559b96bf71e4281331977160ff4c8c44af8

6 years agoEnable BSTR Field Marshaller for x-plat (dotnet/coreclr#20264)
Luqun Lou [Thu, 11 Oct 2018 19:21:40 +0000 (12:21 -0700)]
Enable BSTR Field Marshaller for x-plat (dotnet/coreclr#20264)

Commit migrated from https://github.com/dotnet/coreclr/commit/ebe631e4e0e3f1490c3052ad0a3983d9ba3f1a50

6 years agoRun xunit.console.dll with "-parallel collections" option on Linux/arm (dotnet/corecl...
Egor Chesakov [Thu, 11 Oct 2018 18:43:39 +0000 (11:43 -0700)]
Run xunit.console.dll with "-parallel collections" option on Linux/arm (dotnet/coreclr#20349)

Commit migrated from https://github.com/dotnet/coreclr/commit/dcfd8542629b87f213eb228b52a29915e731932a

6 years agoInitial work to enable ASM diff generation in CI (dotnet/coreclr#20366)
Bruce Forstall [Thu, 11 Oct 2018 18:29:21 +0000 (11:29 -0700)]
Initial work to enable ASM diff generation in CI (dotnet/coreclr#20366)

A set of CI jobs is defined to generate assembly diffs:

```
Windows_NT x64 Checked pmi_asm_diffs
Windows_NT x86 Checked pmi_asm_diffs
Ubuntu arm Cross Checked pmi_asm_diffs
Ubuntu16.04 arm64 Cross Checked pmi_asm_diffs
Windows_NT x64_arm64_altjit Checked pmi_asm_diffs
Windows_NT x86_arm_altjit Checked pmi_asm_diffs
```

Most of the work is in the run-pmi-diffs.py script. This script:

1. Expects a "diff" build to exist.
2. Clones the baseline branch and builds it.
3. Downloads the dotnet CLI and unpacks it.
4. Clones the jitutils tree and builds it.
5. Generates asm with both the "baseline" and "diff" compilers, currently just on System.Private.CoreLib.dll, but that can be easily expanded (and perhaps we could create new jobs that do different sets of diffs, such as frameworks or benchmarks or all tests)
6. Runs jit-analyze.

The Linux arm/arm64 jobs do cross-compilation, so much zip and copy the build artifacts to a test machine to run.

This has been tested in the dev/unix_test_workflow branch, e.g. dotnet/coreclr#20357

There is still some work to do:

1. Properly figure out the correct baseline commit.
2. Make the Linux arm/arm64 runs work (there are still some problems).
3. Do a better job surfacing the results, e.g., post back to the GitHub PR comments with the jit-analyze results.
4. Enable Linux x64 asm diffs jobs
5. Respond to code review feedback, e.g. (a) make various Python script improvements to handle failure modes, (b) do better temp directory creation, (c) use Tools\dotnetcli and init-tools instead of downloading/unpacking/installing a "live" dotnet CLI, (d) don't invoke run.cmd directly. Maybe use "build-test skipmanaged skipnative" instead?

Commit migrated from https://github.com/dotnet/coreclr/commit/d983e44fce5cf69822cbc2a51c6450b58ef8ad87

6 years agoMerge pull request dotnet/coreclr#20343 from stephentoub/timerevent
Vance Morrison [Thu, 11 Oct 2018 17:08:24 +0000 (10:08 -0700)]
Merge pull request dotnet/coreclr#20343 from stephentoub/timerevent

Add Timer duration/period to ThreadTransferSendObj

Commit migrated from https://github.com/dotnet/coreclr/commit/746da72fbd0ad480be9b2eca147f74eea36d2b5f

6 years agoAdded `-generatelayout` (dotnet/coreclr#20247)
Jurjen Biewenga [Thu, 11 Oct 2018 16:33:57 +0000 (18:33 +0200)]
Added `-generatelayout` (dotnet/coreclr#20247)

* Added `-generatelayout`

* Update build.cmd

Removed stray paranthesis

Commit migrated from https://github.com/dotnet/coreclr/commit/d9f51a323961526973cdf86fed0419d88714d7f6

6 years agofix enc issue where dav has an av because it tries to use the handlemanager, which...
David Mason [Thu, 11 Oct 2018 15:23:50 +0000 (08:23 -0700)]
fix enc issue where dav has an av because it tries to use the handlemanager, which isn't initialized in the dac (dotnet/coreclr#20362)

Commit migrated from https://github.com/dotnet/coreclr/commit/378318ddd04ab88d0c5a0e9effc3dc5b300c2889

6 years agoadd handle tracking for profiler (dotnet/coreclr#20361)
David Mason [Thu, 11 Oct 2018 15:23:39 +0000 (08:23 -0700)]
add handle tracking for profiler (dotnet/coreclr#20361)

Commit migrated from https://github.com/dotnet/coreclr/commit/5ad951d814f9cb1b7744eb04fe7c2ba52d5cf105

6 years agofix issue where we wouldn't throw OOM after failing to allocate more space for finali...
David Mason [Thu, 11 Oct 2018 15:22:02 +0000 (08:22 -0700)]
fix issue where we wouldn't throw OOM after failing to allocate more space for finalize queue (dotnet/coreclr#20363)

Commit migrated from https://github.com/dotnet/coreclr/commit/fe45ba34cd88e9890efbd03f0252cb536fc56a89

6 years agoFix for CoreRT issue Assertion slot != NO_REVERSE_PINVOKE_FRAME' failed dotnet/corecl...
Sergey Ignatov [Thu, 11 Oct 2018 13:56:17 +0000 (16:56 +0300)]
Fix for CoreRT issue Assertion slot != NO_REVERSE_PINVOKE_FRAME' failed dotnet/coreclr#6253

Commit migrated from https://github.com/dotnet/coreclr/commit/ae02bf5ccc0ae881fe6c5e319c936e8d9fd3ba46

6 years agoFix build breaks
Jan Kotas [Thu, 11 Oct 2018 00:25:43 +0000 (17:25 -0700)]
Fix build breaks

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/d089cf88395292e892246a4eb57779db6305792b

6 years agoMerge pull request dotnet/coreclr#20359 from BruceForstall/Disable_b152292
Bruce Forstall [Thu, 11 Oct 2018 04:31:45 +0000 (21:31 -0700)]
Merge pull request dotnet/coreclr#20359 from BruceForstall/Disable_b152292

Disable b152292 for Linux/arm64

Commit migrated from https://github.com/dotnet/coreclr/commit/cde10f350695b256b7c282faaa92b582b40f9144

6 years agoMinor dump improvements in R2RDump (dotnet/coreclr#20344)
Tomáš Rylek [Thu, 11 Oct 2018 00:53:14 +0000 (17:53 -0700)]
Minor dump improvements in R2RDump (dotnet/coreclr#20344)

* Minor dump improvements in R2RDump

1) Don't silently unify available types;

2) Display RVA's for import cells to enable searching the cell by RVA
in the dump;

3) Display cell signatures for method precodes.

Commit migrated from https://github.com/dotnet/coreclr/commit/c0c705aed6b92967a813b1b6df400754e889d8c4

6 years agoDisable b152292 for Linux/arm64
Bruce Forstall [Thu, 11 Oct 2018 00:43:40 +0000 (17:43 -0700)]
Disable b152292 for Linux/arm64

Tracked by dotnet/coreclr#20358

Commit migrated from https://github.com/dotnet/coreclr/commit/6c225379d4b393b4a81801587588c2f205ba25b6

6 years agoMerge pull request dotnet/coreclr#20347 from briansull/resolve-8648
Brian Sullivan [Wed, 10 Oct 2018 22:35:44 +0000 (15:35 -0700)]
Merge pull request dotnet/coreclr#20347 from briansull/resolve-8648

Enable the tests associated with the fixed issue 8648

Commit migrated from https://github.com/dotnet/coreclr/commit/89e87cf8cdd816e7e946b64506949b6d100e98d1

6 years agoAdd CancellationToken.UnsafeRegister (dotnet/coreclr#20342)
Stephen Toub [Wed, 10 Oct 2018 21:10:12 +0000 (17:10 -0400)]
Add CancellationToken.UnsafeRegister (dotnet/coreclr#20342)

Expose an equivalent to Register that doesn't flow ExecutionContext and thus doesn't capture AsyncLocals.

Commit migrated from https://github.com/dotnet/coreclr/commit/dd9c7b21dc17c34323b952c050db675e16523966

6 years agoAdded advice about using ZapDisable to get symbols
Vance Morrison [Wed, 10 Oct 2018 21:04:57 +0000 (14:04 -0700)]
Added advice about using ZapDisable to get symbols

Commit migrated from https://github.com/dotnet/coreclr/commit/6f44694e471309768bd3f66528fbf97c414e5649

6 years agoRemove obslete DBG_printf_gcc, all compilers now support DBG_printf_c99 (dotnet/corec...
Jonathan Marler [Wed, 10 Oct 2018 21:03:37 +0000 (15:03 -0600)]
Remove obslete DBG_printf_gcc, all compilers now support DBG_printf_c99 (dotnet/coreclr#20338)

Commit migrated from https://github.com/dotnet/coreclr/commit/a6159a640f09bc2628005b588340773a316969cf

6 years agoFix unwind on ARM64 Linux (dotnet/coreclr#20345)
Jan Vorlicek [Wed, 10 Oct 2018 21:00:28 +0000 (14:00 -0700)]
Fix unwind on ARM64 Linux (dotnet/coreclr#20345)

The libunwind cannot unwind from `__libc_start_main` to `_start` on
Linux ARM64 with glibc <= 2.27, because the `__libc_start_main` is
missing unwind info. While we already have a way to detect such case
when the same issue happens for `_start`, we were triggering it only in
case unw_step returned 0. For this case, it returns 1 though, which is
also a valid success indicator.
The result is that .NET core starts spinning infinitely in case an
unhandled exception happens on ARM64.
The fix is to update the check to test for the return value being >= 0.

Commit migrated from https://github.com/dotnet/coreclr/commit/eaf32b0359a414d8e218fb60e671a74524918237

6 years agoFix typo
Vance Morrison [Wed, 10 Oct 2018 20:29:39 +0000 (13:29 -0700)]
Fix typo

Commit migrated from https://github.com/dotnet/coreclr/commit/7dea3f558ee3193b8e7aeec064db79e2e8f92642

6 years agoImprove instructions on getting framework symbols
Vance Morrison [Wed, 10 Oct 2018 20:28:28 +0000 (13:28 -0700)]
Improve instructions on getting framework symbols

Commit migrated from https://github.com/dotnet/coreclr/commit/19b466821ce20977541a47a8bd255f7400539a5a

6 years agoMerge pull request dotnet/coreclr#20348 from BruceForstall/ReducePri1TestCount
Bruce Forstall [Wed, 10 Oct 2018 19:17:25 +0000 (12:17 -0700)]
Merge pull request dotnet/coreclr#20348 from BruceForstall/ReducePri1TestCount

Reduce the number of expected Pri-1 tests

Commit migrated from https://github.com/dotnet/coreclr/commit/886c0d3f021a5084cd09c0fe3369dac0c63c45a2

6 years agoReduce the number of expected Pri-1 tests
Bruce Forstall [Wed, 10 Oct 2018 19:14:21 +0000 (12:14 -0700)]
Reduce the number of expected Pri-1 tests

The number has shrunk lately due to removing CoreMangLib tests.

Commit migrated from https://github.com/dotnet/coreclr/commit/45f8fc05f68e46e0f81dfea9c4e638443177053c

6 years agoEnable the tests associated with the fixed issue 8648
Brian Sullivan [Wed, 10 Oct 2018 18:33:38 +0000 (11:33 -0700)]
Enable the tests associated with the fixed issue 8648

Commit migrated from https://github.com/dotnet/coreclr/commit/2bbced97e52890db8e4602f9a13e747313fc4c93

6 years agoThrow an exception when we try to marshal a non-blittable fixed buffer. (dotnet/corec...
Jeremy Koritzinsky [Wed, 10 Oct 2018 17:04:48 +0000 (10:04 -0700)]
Throw an exception when we try to marshal a non-blittable fixed buffer. (dotnet/coreclr#20263)

* Throw an exception when we try to marshal a non-blittable fixed buffer.

* Move function prototype into fieldmarshaler.cpp

Commit migrated from https://github.com/dotnet/coreclr/commit/737d0ea7c3e8a8ab42344f14b8338a0f7ffaf60d

6 years agoMerge pull request dotnet/coreclr#20337 from BruceForstall/DisableStackTracePreserveTests
Bruce Forstall [Wed, 10 Oct 2018 16:48:50 +0000 (09:48 -0700)]
Merge pull request dotnet/coreclr#20337 from BruceForstall/DisableStackTracePreserveTests

Disable StackTracePreserveTests

Commit migrated from https://github.com/dotnet/coreclr/commit/2d64c3fab5598a639d5f99083342553bcf01ff2b

6 years agoMerge pull request dotnet/coreclr#20310 from fiigii/nogeneric
Carol Eidt [Wed, 10 Oct 2018 16:29:19 +0000 (16:29 +0000)]
Merge pull request dotnet/coreclr#20310 from fiigii/nogeneric

 Explode generic Intel hardware intrinsic on all the supported types

Commit migrated from https://github.com/dotnet/coreclr/commit/c67837903476bae1ae2866574ffa18a2e2a6a7f6

6 years agoAdd Timer duration/period to ThreadTransferSendObj
Stephen Toub [Wed, 10 Oct 2018 15:45:40 +0000 (11:45 -0400)]
Add Timer duration/period to ThreadTransferSendObj

Commit migrated from https://github.com/dotnet/coreclr/commit/3535b50fd650032d1a77eff3ef706998d5bead03

6 years agoDelete redundant API tests (dotnet/coreclr#20336)
Jan Kotas [Wed, 10 Oct 2018 06:31:39 +0000 (23:31 -0700)]
Delete redundant API tests (dotnet/coreclr#20336)

Contributes to dotnet/coreclrdotnet/coreclr#12782

Commit migrated from https://github.com/dotnet/coreclr/commit/85efc293d4f92e828db8c2741fc2bafaed9e0b99

6 years agoFix test JIT\Regression\VS-ia64-JIT\M00\b80373 (dotnet/coreclr#20321)
mikedn [Wed, 10 Oct 2018 05:24:32 +0000 (08:24 +0300)]
Fix test JIT\Regression\VS-ia64-JIT\M00\b80373 (dotnet/coreclr#20321)

On 64 bit hosts it does a 64 bit store to a 32 bit parameter and corrupts the stack. A previous implementation of fgMarkAddressExposedLocals did not mark the parameter as address exposed, allowing the optimizer to remove the dead store and thus hide the incorrect code.

Commit migrated from https://github.com/dotnet/coreclr/commit/f3bce49cbd61a4101deffd34b8d813c32d2fc916

6 years agoFix issue 20261: infinite recursion for non PAL threads (dotnet/coreclr#20267)
Jonathan Marler [Wed, 10 Oct 2018 03:21:30 +0000 (21:21 -0600)]
Fix issue 20261: infinite recursion for non PAL threads (dotnet/coreclr#20267)

Commit migrated from https://github.com/dotnet/coreclr/commit/8bd74e1ca81ef6e4322358e1cc966e26c6153dcc

6 years agoDisable StackTracePreserveTests
Bruce Forstall [Tue, 9 Oct 2018 23:59:18 +0000 (16:59 -0700)]
Disable StackTracePreserveTests

Tracked by dotnet/coreclr#20322

Commit migrated from https://github.com/dotnet/coreclr/commit/bb415d6ed0eebb3d681ae813220a8ddad97b786a

6 years agoReduce CPU consumption by Timer's FireNextTimers (dotnet/coreclr#20302)
Stephen Toub [Tue, 9 Oct 2018 22:05:46 +0000 (18:05 -0400)]
Reduce CPU consumption by Timer's FireNextTimers (dotnet/coreclr#20302)

* Reduce CPU consumption by Timer's FireNextTimers

Historically, in certain applications that were Timer-heavy (either via direct use or via wrappers like Task.Delay), timer-related operations like creation (ctor), destruction (Dispose), and firing (internally in FireNextTimers) were relatively expensive. A single linked queue of timers was maintained and protected by a single lock, such that every creation, destruction, and firing would require taking that lock and operating on the list.

In .NET Core 2.1, we improved this significantly to reduce contention by splitting the single lock and queue into N partitions, each with its own lock and queue (and native timer that triggers the processing of that queue). This enables lots of threads that would otherwise all be contending for timer creation/destruction/firing to now spread the load across the various partitions. This made a significantly positive and measurable impact on these timer-heavy workloads, in particular for workloads that created and destroyed lots of timers with most never actually firing (e.g. where timers are used to implement timeouts, and most things don't timeout).

However, we still see some apps that rely heavily on timers firing, in particular with apps that have tens of thousands or hundreds of thousands of periodic timers, with lots of time spent inside FireNextTimers (the function that's invoked when the native timer for a partition fires to process whatever set of timers may be ready to fire in its queue). This operation currently walks the whole list of that queue's timers, such that it needs to touch and do a little work for every scheduled timer in that partition, even if only one or a few timers actually need to fire. The more timers are scheduled, even if they're for a time far in the future, the more costly FireNextTimers becomes. And as FireNextTimers is invoked while holding that partition's lock, this also then slows down any code paths trying to create/destroy timers on the same partition.

This PR attempts to address the most impactful cases of that. Instead of each partition maintaining a single queue, we simply split the queue into two: a "short" list that contains all scheduled timers with a next firing time that's <= some absolute threshold, and a "long" list for the rest. When FireNextTimers is invoked, we walk the "short" list, processing it as we do today. If the current time is less than or equal to the absolute threshold, then we know we don't need to examine the long list and can skip it and the (hopefully) majority of timers it contains. If, however, we're beyond that time or the short list becomes empty, we continue to process the long list as we do today, with the slight modification that we then also move to the short list anything with a due time that puts it at or under the threshold, which is reset to point to a time short into the future. When new timers are added, we just add them to the appropriate list based on their due time.

The theory behind this is that the problematic cases are when we have lots of long-lived timers that rarely fire but today we're having to examine them every time any timer fires; by maintaining a short list that ideally has only a small subset of the timers, we can avoid touching the majority of the timers each time FireNextTimers is called, on average. This doesn't change the O(N) complexity of FireNextTimers, but it should often reduce the size of N significantly.  Synthetic workloads have shown that it often reduces the cost of FireNextTimers to just 5-10% of what it was previously, and without increasing the cost of the fast add/dispose path measurably.

(An alternative approach considered is to use a priority queue / heap for the timer list. This would allow for FireNextTimers to pull off in O(log N) time each of the next timers to fire, hopefully making FireNextTimers much cheaper. However, it comes at the expense of making creation and destruction also O(log N) instead of O(1). And in cases where all timers in the list needed to fire, it would make FireNextTimers O(N log N) instead of O(N). It is, however, an approach that could be pursued if this approach proves less effective in real-world applications than expected.)

* Address PR feedback

Improve handling of the case where the short list ends up empty.

Also fix an issue I noticed around the setting of m_currentAbsoluteThreshold.

Commit migrated from https://github.com/dotnet/coreclr/commit/cfe51dd00e069e9fcbee6843e0eee2e80c9b3bd1

6 years agoUpdate BuildTools, CoreFx, CoreSetup to preview1-03309-01, preview1-27009-06, preview...
dotnet-maestro-bot [Tue, 9 Oct 2018 22:05:22 +0000 (15:05 -0700)]
Update BuildTools, CoreFx, CoreSetup to preview1-03309-01, preview1-27009-06, preview1-27009-01, respectively (dotnet/coreclr#20316)

Commit migrated from https://github.com/dotnet/coreclr/commit/f70036bd68b9a21221f642895f993e67affce9c9

6 years agoDo not promote struct field with type mistmatch. (dotnet/coreclr#20085)
Sergey Andreenko [Tue, 9 Oct 2018 22:03:19 +0000 (15:03 -0700)]
Do not promote struct field with type mistmatch. (dotnet/coreclr#20085)

* Add a test that reads int field as double.

It fails in `void CodeGen::genCodeForStoreInd(GenTreeStoreInd* tree)`  on `assert(!varTypeIsFloating(targetType) || (targetType == data->TypeGet()));`.

* Fix for the previous test.

No asm diffs.

* Add a test that reads struct field as another struct type.

It fails with assert `Compiler::StructPromotionHelper::CheckFakedType` `assert(fakedFieldsMap.Lookup(fieldHnd));`.

* Fix the previous test.

Check that we promote with the same class.

* Add a test case for accessing an invalid offset.

It fails in `fgMorphStructField` with `noway_assert(fieldLclIndex != BAD_VAR_NUM);`.

* Fix the previous test.

Reject field promotion if offset is invalid. No asm diffs.

Commit migrated from https://github.com/dotnet/coreclr/commit/13dc153a7718a6d9297b757f5969c403856ef618

6 years agoSimplify next command output for build-test.sh (dotnet/coreclr#19903)
Bruce Forstall [Tue, 9 Oct 2018 22:00:59 +0000 (15:00 -0700)]
Simplify next command output for build-test.sh (dotnet/coreclr#19903)

Simplify next command output for build-test.sh

Commit migrated from https://github.com/dotnet/coreclr/commit/36c9dd8e269a9ca8da203622fccde98ce476ffaa

6 years agoMove ARM64 Windows boxen to be Helix-provisioned (dotnet/coreclr#20204)
Matt Galbraith [Tue, 9 Oct 2018 21:18:50 +0000 (14:18 -0700)]
Move ARM64 Windows boxen to be Helix-provisioned (dotnet/coreclr#20204)

Commit migrated from https://github.com/dotnet/coreclr/commit/8502d4da3f8767eda617bdcc40741cbac089e981

6 years agoUse runtest.cmd for arm(64) windows testing (dotnet/coreclr#20301)
Jarret Shook [Tue, 9 Oct 2018 21:17:49 +0000 (14:17 -0700)]
Use runtest.cmd for arm(64) windows testing (dotnet/coreclr#20301)

* Use runtest.cmd for arm(64) windows testing

* Correct archival

* Address pr feedback

* Correct containsKey to containsValue

* Change to just use contains

Commit migrated from https://github.com/dotnet/coreclr/commit/8965f930a5374aede9922766fb615a3fe2039827

6 years agoMerge pull request dotnet/coreclr#20129 from briansull/vn-add-exception-sets
Brian Sullivan [Tue, 9 Oct 2018 20:32:50 +0000 (13:32 -0700)]
Merge pull request dotnet/coreclr#20129 from briansull/vn-add-exception-sets

Full support for exception sets in value numbering.

Commit migrated from https://github.com/dotnet/coreclr/commit/22a92290ac488ad3187e0ba2c8d4f014f9b22e5c

6 years agoDisable tests for generic hardware intrinsic
Fei Peng [Tue, 9 Oct 2018 19:49:05 +0000 (12:49 -0700)]
Disable tests for generic hardware intrinsic

Commit migrated from https://github.com/dotnet/coreclr/commit/f802a82f12c3b0861ea4b70ea521f62a420362a9

6 years agoExplode generic Intel hardware intrinsic on all the supported types
Fei Peng [Tue, 9 Oct 2018 19:48:49 +0000 (12:48 -0700)]
Explode generic Intel hardware intrinsic on all the supported types

Commit migrated from https://github.com/dotnet/coreclr/commit/a5cc85cf1567910b179f1ef4e1e09a858b574562

6 years agoImprove performance of String.ToUpper and friends (dotnet/coreclr#20304)
Levi Broderick [Tue, 9 Oct 2018 19:07:43 +0000 (12:07 -0700)]
Improve performance of String.ToUpper and friends (dotnet/coreclr#20304)

Commit migrated from https://github.com/dotnet/coreclr/commit/f065e47164a707d7c5f314ca0059cd25d46dff43

6 years agoCleanup MSDN URL's (dotnet/corefxdotnet/coreclr#32663)
Sam Neirinck [Tue, 9 Oct 2018 18:59:36 +0000 (20:59 +0200)]
Cleanup MSDN URL's (dotnet/corefxdotnet/coreclr#32663)

* Fix non-https msdn links

* Additional HTTPS treatment

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/baa4f19a7158e31b7012ff2dafebfb5f1b1edee4

6 years agoAvoid building DebugFinalizableAsyncStateMachineBox unless necessary (dotnet/coreclr...
Stephen Toub [Tue, 9 Oct 2018 18:52:34 +0000 (14:52 -0400)]
Avoid building DebugFinalizableAsyncStateMachineBox unless necessary (dotnet/coreclr#20318)

Commit migrated from https://github.com/dotnet/coreclr/commit/efe3c451fbd2a788f51340c28cd36777ef60b49d

6 years ago[arm64] Fix GitHub 20211 Issue (dotnet/coreclr#20240)
Egor Chesakov [Tue, 9 Oct 2018 18:37:02 +0000 (11:37 -0700)]
[arm64] Fix GitHub 20211 Issue (dotnet/coreclr#20240)

Bug with lowering SIMDIntrinsicGetItem on ARM64 when INS_mov (move w/o sign-extension) was used to copy signed value from Vn.b[i] (or Vn.h[i]) to general register Wd (or Xd) instead of INS_smov (move with sign-extension).

Commit migrated from https://github.com/dotnet/coreclr/commit/8aebd79e8cc3820875457471a543a5fc7cbe0cc4

6 years agoClear unnecessary state from completed Tasks (dotnet/coreclr#20294)
Stephen Toub [Tue, 9 Oct 2018 17:44:12 +0000 (13:44 -0400)]
Clear unnecessary state from completed Tasks (dotnet/coreclr#20294)

When Tasks backed by delegates are created, an ExecutionContext is captured.  When the task completes, its delegate is being cleared, but its ExecutionContext is not, which means if the Task is subsequently kept alive (e.g. stored in a cache), so too is its ExecutionContext, which can capture an arbitrary amount of ambient state via async locals.  This commit augments the clearing of the delegate to similarly clear the ExecutionContext.

Related, async methods can also capture ExecutionContext when awaits yield, so this clears out that context as well.  And as long as we're doing that, we may as well also clear the state machine state, so that any hoisted locals in the state machine aren't kept alive if the resulting task is kept alive.  Not doing so previously was a conscious choice, in order to aid in debugging, but as we've heard of at least a couple of cases where it unexpectedly caused a leak, I'm going ahead and changing it.

Commit migrated from https://github.com/dotnet/coreclr/commit/39ab08433d9506a338f7e86e723e4d26b95430a1

6 years agoMerge pull request dotnet/coreclr#20078 from CarolEidt/Fix20063
Carol Eidt [Tue, 9 Oct 2018 16:57:03 +0000 (16:57 +0000)]
Merge pull request dotnet/coreclr#20078 from CarolEidt/Fix20063

Handle partial multireg COPY

Commit migrated from https://github.com/dotnet/coreclr/commit/fe00e42185494bb7f27590909d5013b3fc3bbfa7

6 years agoDisabled outdates corefx test (dotnet/coreclr#20315)
Jan Kotas [Tue, 9 Oct 2018 05:08:35 +0000 (22:08 -0700)]
Disabled outdates corefx test (dotnet/coreclr#20315)

Commit migrated from https://github.com/dotnet/coreclr/commit/20cbebbeb151acf901d686dc6beb3a51435edd3d

6 years agoRemove mentions of Rotor from codebase (dotnet/coreclr#20298)
Austin Wise [Tue, 9 Oct 2018 03:46:27 +0000 (20:46 -0700)]
Remove mentions of Rotor from codebase (dotnet/coreclr#20298)

* Moving parsing from TypeNameParser ctor to a separate method.

It seems a bit odd to have the constructor parsing and then use
a dummy method (MakeRotorHappy) to make it look more normal.

* Remove CorMarkThreadInThreadPool.

It is neither referenced nor exported.

* Remove reference to rotor from securitywrapper.h

* Remove reference to rotor from Strike/vm.cpp.

This file is only built for Windows.

* Remove reference to rotor from debugreturn.h

This is the only file the defines these macros, so there is no need to
undef them first.

* Remove unused code refering to rotor from PAL.

* Remove references to Rotor from PAL.

* Remove references to deleted tests from DisabledTests.txt

I can't find any evidence that this file is actually used.

* Remove unneeded casts.

* Remove dead and misleading code from profilinghelper.cpp.

FEATURE_PROFAPI_EVENT_LOGGING is always defined when PROFILING_SUPPORTED
is defined. And the entire contents of profilinghelper.cpp is surrounded
with "ifdef PROFILING_SUPPORTED". So all sections in
"ifndef FEATURE_PROFAPI_EVENT_LOGGING" are dead.

Furthermore, in coreclr this does not use the eventlog, so the macro name
is misleading.

* Remove dead code in excep.cpp.

This entire function is surrounded with "ifndef FEATURE_PAL".

* Remove refererences to rotor from safemath.h

This does not appear to cause any compile problems, so nobody was using
safemath.h without _ASSERTE defined.

Also S_SIZE_T_WP64BUG is not used anywhere.

* Remove dead code from palclr.h.

I don't know why these check to see if the macro is undefined immediately
after defining them.

Also the comment appears to reference some unions that are no longer in
this file.

* Expose ISymUnmanagedWriter2 from SymWriter as required by COM.

The comment talks about the C# compiler using this, however I cannot see
a way for the C# compiler to get an instance of this. It is only used
internally by AssemblyBuilder and not exposed otherwise.

* Restore check for _ASSERTE in safemath.h.

On Windows sometimes that this file is included without
_ASSERTE being defined. As the existing comment suggests, it appears
that SOS explicitly does not want _ASSERTE to do anything.

Commit migrated from https://github.com/dotnet/coreclr/commit/3f40e5280e376a01cc06f921b01f68319aa10ecc

6 years agoDocument describing upcoming object stack allocation work. (dotnet/coreclr#20251)
Eugene Rozenfeld [Mon, 8 Oct 2018 23:25:44 +0000 (16:25 -0700)]
Document describing upcoming object stack allocation work. (dotnet/coreclr#20251)

Commit migrated from https://github.com/dotnet/coreclr/commit/913428d5915a9729c9405f57a75e7f912f9d29a5

6 years agoMerge pull request dotnet/coreclr#20289 from echesakovMSFT/FixBitOperationsInstructio...
Egor Chesakov [Mon, 8 Oct 2018 22:26:05 +0000 (15:26 -0700)]
Merge pull request dotnet/coreclr#20289 from echesakovMSFT/FixBitOperationsInstructionEncodingFormat

[arm64] Use IF_DR_2G for "Bit Operations" (IF_EN2L)

Commit migrated from https://github.com/dotnet/coreclr/commit/7ba5381b95a88417034e04156da5967ab20b4e02

6 years agoJIT: retrieve element class for arrays of ref types (dotnet/coreclr#20292)
Andy Ayers [Mon, 8 Oct 2018 20:15:36 +0000 (13:15 -0700)]
JIT: retrieve element class for arrays of ref types (dotnet/coreclr#20292)

Allows element-typed based optimizations for some array cases, say
virtual calls through a `string[]`.

Commit migrated from https://github.com/dotnet/coreclr/commit/bcc4cec7646f0df99c5a83e3dd72ec2d39e0ee01

6 years agoUpdate BuildTools, CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-03307...
dotnet-maestro-bot [Mon, 8 Oct 2018 19:02:23 +0000 (12:02 -0700)]
Update BuildTools, CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-03307-03, preview1-27008-04, preview1-27008-04, preview1-27008-01, master-20181008-0042, master-20181008-0040, respectively (dotnet/coreclr#20254)

Commit migrated from https://github.com/dotnet/coreclr/commit/9074e9d781ecaa0e9f58f09fc738fe52e4d7cfb0

6 years agoMerge pull request dotnet/coreclr#20210 from fiigii/lastavx2
Carol Eidt [Mon, 8 Oct 2018 16:38:31 +0000 (16:38 +0000)]
Merge pull request dotnet/coreclr#20210 from fiigii/lastavx2

 Implement the remaining AVX2 intrinsic

Commit migrated from https://github.com/dotnet/coreclr/commit/426b9f89e45993db52e4d1b87111907ad5b78b4a

6 years agoRuntest.py on Windows Arm(64) (dotnet/coreclr#20227)
Jarret Shook [Mon, 8 Oct 2018 16:25:16 +0000 (09:25 -0700)]
Runtest.py on Windows Arm(64) (dotnet/coreclr#20227)

* Initial infrastructure work to get arm(64) runtest.cmd working

* Add excludes and improve runtest.py

1) Adds a build_test_wrappers only to build-test.sh.
2) Adds arm64 windows excludes
3) Adds printlastresults to runtest.cmd
4) corrects runsequential in runtest.sh
5) Corrects SequentialRun in runtest.py
6) Minor improvements to printing test results and copying native test binaries

* Address pr feedback

* Add to issues targets for arm64

* Working Pri 0 testing.

* Remove unecessary common msbuild arguments

* add pri1 excludes

* Remove common msbuild args

* Fix silly python3 issue

Commit migrated from https://github.com/dotnet/coreclr/commit/dbf0bf11d120b2f7837ba767a7836b44474c82a5

6 years agoFix SegmentInitialize for OS_PAGE_SIZE > 4k (dotnet/coreclr#20280)
Jan Vorlicek [Mon, 8 Oct 2018 13:49:40 +0000 (15:49 +0200)]
Fix SegmentInitialize for OS_PAGE_SIZE > 4k (dotnet/coreclr#20280)

The function was incorrectly rounding the dwCommit down instead of up
to OS_PAGE_SIZE. It accidentally works for OSes where page size is 4096
bytes, because the dwCommit is 4096. But for ARM64 Linux distros where
the page size is 64kB, this was committing zero bytes and so the runtime
initialization was crashing a bit later when it tried to access the
memory it was supposed to be commited.

This problem was introduced in dotnet/coreclr#17769.

Commit migrated from https://github.com/dotnet/coreclr/commit/340b5708ce38230f1af66acf832547996aa0b2ff

6 years agoRemove mention of rotor from comments (dotnet/coreclr#20297)
Austin Wise [Mon, 8 Oct 2018 03:16:45 +0000 (20:16 -0700)]
Remove mention of rotor from comments (dotnet/coreclr#20297)

* Remove old reference to Rotor in documentation.

All remaining references relate to rotor's role in CoreCLR history.

* Remove rotor comment from enummem.cpp.

I can find no evidence that the presence of g_pStressLog is conditional
on FEATURE_PAL being defined.

* Remove old todo, DbgDllMain looks for thread detach.

* Update nativepipeline.h comment refernce to rotor.

All unix-like systems except android have FEATURE_DBGIPC_TRANSPORT_DI
defined, hence "most unix-like platforms".

* Update some comments to not refer to Rotor.

* Remove some more references to Rotor from comments.

* Remove old comment.

Though maybe this macro should be removed and everywhere use the & operator.
It appears there are only two places that use this macro.

Commit migrated from https://github.com/dotnet/coreclr/commit/e57c4fb8ff2346d5420247183b9af2b83184516c

6 years agoRemove some dead remoting and context static things (dotnet/coreclr#20277)
Austin Wise [Mon, 8 Oct 2018 01:58:10 +0000 (18:58 -0700)]
Remove some dead remoting and context static things (dotnet/coreclr#20277)

* Remove IsRemotingIntercepted methods that always return false.

* Remove GetOptionalMembersAllocationSize parameters that are always false.

* Remove references to context static.

Remove references in comments and methodnames.

* Remove RemotingVtsInfo.

Commit migrated from https://github.com/dotnet/coreclr/commit/eeef1c1379b9f49261f66093b355ac8c12e47485

6 years agoUpdate buildtools to v3 (dotnet/coreclr#20286)
Viktor Hofer [Sun, 7 Oct 2018 19:21:09 +0000 (21:21 +0200)]
Update buildtools to v3 (dotnet/coreclr#20286)

Commit migrated from https://github.com/dotnet/coreclr/commit/645faa5b24c32741944cad55f58fd66d6c8abfa4

6 years agoTypos (dotnet/corefxdotnet/coreclr#32625)
John Doe [Fri, 5 Oct 2018 00:25:37 +0000 (17:25 -0700)]
Typos (dotnet/corefxdotnet/coreclr#32625)

* Obejct -> Object

* Oberserver -> Observer

* objetcs -> objects

* observeable -> observable

* obsolated -> obsoleted

* occour -> occur

* occurance -> occurrence

* occures -> occurs

* occuring -> occurring

* occurrance -> occurrence

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/6f66b1e068e83b694d92e9c2103fc7292a6e03e7

6 years agoJIT: make sure to use normalized type when retyping box temp (dotnet/coreclr#20285)
Andy Ayers [Sat, 6 Oct 2018 18:05:24 +0000 (11:05 -0700)]
JIT: make sure to use normalized type when retyping box temp (dotnet/coreclr#20285)

Take advantage of the fact that `lvaSetStruct` figures out the right
type to use in the IR.

Fixes first part of dotnet/coreclr#20260.

Commit migrated from https://github.com/dotnet/coreclr/commit/8e880c667e999aa7d9da8d7ea30c2db92e419ba0

6 years agoMove BinaryPrimitives into coreclr shared source (dotnet/coreclr#20288)
Levi Broderick [Sat, 6 Oct 2018 14:58:51 +0000 (07:58 -0700)]
Move BinaryPrimitives into coreclr shared source (dotnet/coreclr#20288)

Commit migrated from https://github.com/dotnet/coreclr/commit/6b412b2eab5c06499c66553beffbd3f3c12d3ed7

6 years agoAdd BSTR xplat PInvoke testcase (dotnet/coreclr#20231)
Luqun Lou [Sat, 6 Oct 2018 02:07:48 +0000 (19:07 -0700)]
Add BSTR xplat PInvoke testcase (dotnet/coreclr#20231)

Commit migrated from https://github.com/dotnet/coreclr/commit/2676f267394392f49611811d488667ea081f2e2c

6 years agoImprove performance of span-based ToUpper and related APIs (dotnet/coreclr#20275)
Levi Broderick [Sat, 6 Oct 2018 02:04:58 +0000 (19:04 -0700)]
Improve performance of span-based ToUpper and related APIs (dotnet/coreclr#20275)

Commit migrated from https://github.com/dotnet/coreclr/commit/e16ff0bb0426ec02ea29a543ce500f197f7dbf2c

6 years agoUpdate the dllmap design doc (6)
annaaniol [Fri, 7 Sep 2018 17:02:21 +0000 (10:02 -0700)]
Update the dllmap design doc (6)

Commit migrated from https://github.com/dotnet/coreclr/commit/675ad93afd67ba03513c7c6cb17e5fbceada5be9

6 years agoUpdate the dllmap design doc (5)
annaaniol [Fri, 7 Sep 2018 00:41:51 +0000 (17:41 -0700)]
Update the dllmap design doc (5)

Commit migrated from https://github.com/dotnet/coreclr/commit/ffd336585f67a90853f802c201e6580661f4df51

6 years agoUpdate the dllmap design doc (4)
annaaniol [Thu, 23 Aug 2018 15:52:34 +0000 (08:52 -0700)]
Update the dllmap design doc (4)

Commit migrated from https://github.com/dotnet/coreclr/commit/683663b8401432a938822a13de0538300aa3e158

6 years agoUpdate the dllmap design doc (3)
annaaniol [Mon, 13 Aug 2018 20:58:06 +0000 (13:58 -0700)]
Update the dllmap design doc (3)

Commit migrated from https://github.com/dotnet/coreclr/commit/cfd39bdb4ddfa9ced1297c21d8be68951398d1f2

6 years agoUpdate the dllmap design doc (2)
annaaniol [Sat, 11 Aug 2018 00:32:38 +0000 (17:32 -0700)]
Update the dllmap design doc (2)

Commit migrated from https://github.com/dotnet/coreclr/commit/0d65fc16b7e379488b4bf8de5051637674d92bcb

6 years agoUpdate the dllmap design doc
annaaniol [Fri, 10 Aug 2018 01:24:02 +0000 (18:24 -0700)]
Update the dllmap design doc

Commit migrated from https://github.com/dotnet/coreclr/commit/71a5d5b8c36995f6c35a688832f5e7a6a379bee8

6 years agoAdd a dllmap design document
annaaniol [Thu, 9 Aug 2018 01:41:12 +0000 (18:41 -0700)]
Add a dllmap design document

Commit migrated from https://github.com/dotnet/coreclr/commit/8aab4f28a6e4f7f566524ac556b7e32c4082e7a1

6 years agoRefactoring of struct promotion code for the future fix. (dotnet/coreclr#20216)
Sergey Andreenko [Sat, 6 Oct 2018 00:07:41 +0000 (17:07 -0700)]
Refactoring of struct promotion code for the future fix. (dotnet/coreclr#20216)

Create StructPromotionHelper.

* Add the check for promoted fields with changed type.

`CanPromoteStructType` can fake a field type if the field type is "structs of a single field of scalar types aligned at their natural boundary.". Add a check in debug that when we morph struct field access we have an expected type in the field handle.

Commit migrated from https://github.com/dotnet/coreclr/commit/768911897f0921ef77ef991088359d248cb99613

6 years agoEnable Config-File Based Control of EventPipe (dotnet/coreclr#20238)
Brian Robbins [Fri, 5 Oct 2018 23:44:15 +0000 (16:44 -0700)]
Enable Config-File Based Control of EventPipe (dotnet/coreclr#20238)

Commit migrated from https://github.com/dotnet/coreclr/commit/457148064c836daa746542f1559b7958d6420c22

6 years agoAdd tests for AVX2 and new intrinsic
Fei Peng [Fri, 5 Oct 2018 22:54:05 +0000 (15:54 -0700)]
Add tests for AVX2 and new intrinsic

Commit migrated from https://github.com/dotnet/coreclr/commit/54af6bd370c1a93f6bc4041f06822a247f4b6f9a

6 years agoUse IF_DR_2G for "Bit Operations" (IF_EN2L) in src/jit/emitarm64.cpp
Egor Chesakov [Fri, 5 Oct 2018 22:38:49 +0000 (15:38 -0700)]
Use IF_DR_2G for "Bit Operations" (IF_EN2L) in src/jit/emitarm64.cpp

Commit migrated from https://github.com/dotnet/coreclr/commit/ddfd8db0d18f916f87feb2b2fe562d5f6b88e6d8

6 years agoAdded method header comments in optcse describing the algorithm
Brian Sullivan [Fri, 5 Oct 2018 22:37:57 +0000 (15:37 -0700)]
Added method header comments in optcse describing the algorithm

Commit migrated from https://github.com/dotnet/coreclr/commit/a552cfef25aaad7685e8b0e1968f8b8293be5314

6 years agoFull support for exception sets in value numbering.
Brian Sullivan [Tue, 25 Sep 2018 20:06:24 +0000 (13:06 -0700)]
Full support for exception sets in value numbering.

New method that add exception sets:
  fgValueNumberAddExceptionSet
  - fgValueNumberAddExceptionSetForIndirection
  - fgValueNumberAddExceptionSetForDivision
  - fgValueNumberAddExceptionSetForOverflow
  - fgValueNumberAddExceptionSetForCkFinite

Refactoring work added methods:
 VNEvalShouldFold - method to decide if constant folding should be performed
 EvalUsingMathIdentity - Uses math identities to simplify value number exoressions
 Renamed fgValueNumberHelperMethVNFunc to fgValueNumberJitHelperMethodVNFunc

Removed the suffixes from the method headers comments

Commit migrated from https://github.com/dotnet/coreclr/commit/4a6f0c8f0c706c3a5ed5e98feeca80de1da57b5d

6 years agoReport instantiation argument in non-virtual interface calls (dotnet/coreclr#20257)
Michal Strehovský [Fri, 5 Oct 2018 10:51:06 +0000 (12:51 +0200)]
Report instantiation argument in non-virtual interface calls (dotnet/coreclr#20257)

The existing code would incorrectly inhibit codegen from generating instantiation argument in non-virtual calls to default interface methods (i.e. those that can happen with the `base` syntax in C#).

Fixes dotnet/coreclr#16775.

Commit migrated from https://github.com/dotnet/coreclr/commit/27c848e37e9998142b60e776cf5b5d08a3543fe1

6 years agoTypos (dotnet/coreclr#20271)
John Doe [Fri, 5 Oct 2018 01:56:04 +0000 (18:56 -0700)]
Typos (dotnet/coreclr#20271)

* oportunistically -> opportunistically

* oppportunity -> opportunity

* Oppporunity -> Opportunity

* optinal -> optional

* optimisitic -> optimistic

* optionaly -> optionally

* origianl -> original

* orignally -> originally

* otheriwse -> otherwise

* otherrwise -> otherwise

Commit migrated from https://github.com/dotnet/coreclr/commit/af0c1f287d31ca3a641151df60baa7371635f508

6 years agoRemove context statics stuff (dotnet/coreclr#20256)
Jan Vorlicek [Fri, 5 Oct 2018 01:08:51 +0000 (03:08 +0200)]
Remove context statics stuff (dotnet/coreclr#20256)

* Remove context statics stuff part 1

This change removes all context statics stuff from the runtime since
context statics are not supported and this code was obsolete.

* Remove context statics stuff from the debugger code

Commit migrated from https://github.com/dotnet/coreclr/commit/da6498e6c1013dd38d33e782bc777bd89aa0f0ee

6 years agoSynchronize access to static variable call_count (dotnet/coreclr#20259)
Jonathan Marler [Fri, 5 Oct 2018 01:08:22 +0000 (19:08 -0600)]
Synchronize access to static variable call_count (dotnet/coreclr#20259)

call_count is a static variable that is being read/modified and written to without any synchronization. Fortunately, a critical section is already available that can be leveraged to synchronize access to it.

Commit migrated from https://github.com/dotnet/coreclr/commit/7f59d17e2741e69bf878b8b168828de3a0a3d12e

6 years agoAdd printing of LoaderAllocator to MethodTable in SOS (dotnet/coreclr#20255)
Jan Vorlicek [Fri, 5 Oct 2018 00:11:35 +0000 (02:11 +0200)]
Add printing of LoaderAllocator to MethodTable in SOS (dotnet/coreclr#20255)

This change adds printing of LoaderAllocator to MethodTable dump in SOS
for collectible types.

Commit migrated from https://github.com/dotnet/coreclr/commit/957eceed83cf635fc3146eadc448bf50efde5431

6 years agoR2RDump fixes for dumping method instance entrypoint table (dotnet/coreclr#20243)
Tomáš Rylek [Thu, 4 Oct 2018 19:29:24 +0000 (21:29 +0200)]
R2RDump fixes for dumping method instance entrypoint table (dotnet/coreclr#20243)

R2RDump fixes for dumping method instance entrypoint table

While investigating Michal's unit test demonstrating a bug in the
CPAOT compiler I found out that R2RDump is broken in multiple
aspects w.r.t. instantiated methods. Parsing of the method
signatures in the instance entrypoint table was just broken
and the R2RMethod was duplicating parts of the signature decoding
and name formatting process.

I created a new flag "normalize" that requests normalization of various R2R
tables in the dump aimed at improving diff quality. I have also
noticed and fixed somewhat weird formatting of method signatures.
As a slight cleanup I have lumped the various dump flags into
a helper class DumpOptions. Last but not least I have renamed "Canon"
to "__Canon".

Thanks

Tomas

Commit migrated from https://github.com/dotnet/coreclr/commit/030e0af89bb897554acef575075c69aaf5176268

6 years agoMerge pull request dotnet/coreclr#20252 from steveharter/FixIsAssignableFrom
Steve Harter [Thu, 4 Oct 2018 15:26:11 +0000 (10:26 -0500)]
Merge pull request dotnet/coreclr#20252 from steveharter/FixIsAssignableFrom

Fix compat issue with Type.IsAssignableFrom

Commit migrated from https://github.com/dotnet/coreclr/commit/e43bc521df71513061c7194efc4af4c70a1b9b42

6 years agoEnable thread statics for collectible classes (dotnet/coreclr#19944)
Jan Vorlicek [Thu, 4 Oct 2018 08:26:06 +0000 (10:26 +0200)]
Enable thread statics for collectible classes (dotnet/coreclr#19944)

* Enable thread statics for collectible classes

This change removes checks that were preventing usage of thread statics
in collectible classes and also implements all the necessary changes.
The handles that hold arrays with thread statics are allocated from
LoaderAllocator for collectible classes instead of using the global
strong handle like in the case of non-collectible classes.
The change very much mimics what is done for regular statics.

This change also adds ability to reuse freed handles to the
LoaderAllocator handle table. Freed handle indexes are stored into a
stack and when a new handle allocation is requested, the indices from
this stack are used first.
Due to the code path from which the FreeTLM that in turn frees the
handles is called, I had to modify the critical section flags and also
refactor the handle allocation so that the actual managed array
representing the handle table is allocated out of the critical section.
When I was touching the code, I have also moved the code that was
dealing with handles that are not stored in the LoaderAllocator handle
tables out of the critical section, since there is no point in having it
inside of it.

Commit migrated from https://github.com/dotnet/coreclr/commit/7559844bbe9e4230217a9a9cf4be8a857531c8c8

6 years agoRemove AppDomain unload (dotnet/coreclr#20250)
Jan Vorlicek [Thu, 4 Oct 2018 08:18:23 +0000 (10:18 +0200)]
Remove AppDomain unload (dotnet/coreclr#20250)

* Remove AppDomain unload

This change removes all code in AppDomain that's related to AppDomain
unloading which is obsolete in CoreCLR. It also removes all calls to the
removed methods.
In few places, I have made the change simpler by taking into account the
fact that there is always just one AppDomain.

Commit migrated from https://github.com/dotnet/coreclr/commit/11832401739148f1f1e9419cb51180ba5263a41b

6 years agoMerge pull request dotnet/coreclr#20235 from BruceForstall/Disable19361
Bruce Forstall [Thu, 4 Oct 2018 03:16:28 +0000 (20:16 -0700)]
Merge pull request dotnet/coreclr#20235 from BruceForstall/Disable19361

Disable GitHub_19361 for Linux arm64

Commit migrated from https://github.com/dotnet/coreclr/commit/0068168531e849cbad8388f00f3f23e58d3a01b4

6 years agoUpdate CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-27003-01, preview1...
dotnet-maestro-bot [Thu, 4 Oct 2018 02:38:12 +0000 (19:38 -0700)]
Update CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-27003-01, preview1-27003-02, preview1-27003-01, master-20181003-0045, master-20181003-0040, respectively (master) (dotnet/coreclr#20241)

* Update CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-27003-01, preview1-27003-02, preview1-27003-01, master-20181003-0045, master-20181003-0040, respectively

* Disabled outdated tests

Commit migrated from https://github.com/dotnet/coreclr/commit/209bca9c6caf59bc60bffd16a8da5c67c6d6138b

6 years agoFix compat issue with Type.IsAssignableFrom
Steve Harter [Wed, 3 Oct 2018 22:52:31 +0000 (17:52 -0500)]
Fix compat issue with Type.IsAssignableFrom

Commit migrated from https://github.com/dotnet/coreclr/commit/4d227d6f1d3a6032bde52af47099471c38f22840

6 years agoImplement the remaining AVX2 intrinsic
Fei Peng [Tue, 2 Oct 2018 00:13:02 +0000 (17:13 -0700)]
Implement the remaining AVX2 intrinsic

Commit migrated from https://github.com/dotnet/coreclr/commit/2689806563fb88c342a037c7da3aba72d43d30e6

6 years agoFix AVX2 intrinsic doc
Fei Peng [Tue, 2 Oct 2018 00:08:55 +0000 (17:08 -0700)]
Fix AVX2 intrinsic doc

Commit migrated from https://github.com/dotnet/coreclr/commit/e66c71b5dbc84f016e9ca542690d7853d9bbb1af

6 years agoMerge pull request dotnet/coreclr#20173 from fiigii/retest
Carol Eidt [Wed, 3 Oct 2018 21:18:47 +0000 (14:18 -0700)]
Merge pull request dotnet/coreclr#20173 from fiigii/retest

Optimize some SSE2 intrinsic importation and re-enable tests

Commit migrated from https://github.com/dotnet/coreclr/commit/bac49ea2198a958f018c8a6b0fb4c1c07561042b

6 years agoreport the entire generation table in EnumWksGlobalMemoryRegions and EnumSvrGlobalMem...
David Mason [Wed, 3 Oct 2018 19:52:32 +0000 (12:52 -0700)]
report the entire generation table in EnumWksGlobalMemoryRegions and EnumSvrGlobalMemoryRegions (dotnet/coreclr#20233)

Commit migrated from https://github.com/dotnet/coreclr/commit/d4b291c10ace6baf35d2c7b45f50f98d6cea4060

6 years agoSupport building cross-architecture components on armel (dotnet/coreclr#20190)
Egor Chesakov [Wed, 3 Oct 2018 17:21:23 +0000 (10:21 -0700)]
Support building cross-architecture components on armel (dotnet/coreclr#20190)

Commit migrated from https://github.com/dotnet/coreclr/commit/48a8c74e355fad5c1a569b131f4038218c98dfee

6 years agoMarshal blittable structs via memcpy even if nested within non-blittable struct ...
Jeremy Koritzinsky [Wed, 3 Oct 2018 16:32:34 +0000 (09:32 -0700)]
Marshal blittable structs via memcpy even if nested within non-blittable struct (dotnet/coreclr#20194)

* Add regression test for dotnet/coreclrdotnet/coreclr#18521.

* Add custom marshaler for fixed buffers that acts as a scalar memory copy of the length of the fixed buffer.

* Remove regression test. Moving it to a unit test in corefx.

* Move attribute class name into classnames.h

* Remove unreachable code left over from debugging.

* Marshal fixed buffers by reusing the field marshaler of the single field to pretend that there are multiple fields consecutively in the structure.

* Remove now-dead code paths.

* Use initializers in FieldMarshaler_NestedValueClass constructor where appropriate.

* Clean up IsFixedBuffer implementation.

* Remove unused GC_PROTECTs.

* Specifically check that the attribute exists, not just that there wasn't an error.

* Fix missing else statement.

* Add asserts so we don't corrupt the heap.

* Add unit test for masked bug (incorrect native size of structure calculated).

* Don't use new behavior on non-blittable fixed buffers.

* Revert "Add unit test for masked bug (incorrect native size of structure calculated)."

This reverts commit dotnet/coreclr@496eef5906638c3c2696ede0d922a5e707447b4e.

* Use memcpy instead of field emulation.

* Remove unused forward-declared class.

* Clean up code. Refactor one GetMethodTable call I missed.

* Remove now-unneeded custom attribute includes. More diff cleanup.

* Remove unneeded FixedBufferAttribute define.

Commit migrated from https://github.com/dotnet/coreclr/commit/302630ed5a3730470e9ffeeebcd38c737c03963d

6 years agoAdd MethodImplOptions.AggressiveOptimization and use it for tiering (dotnet/coreclr...
Koundinya Veluri [Wed, 3 Oct 2018 15:52:40 +0000 (08:52 -0700)]
Add MethodImplOptions.AggressiveOptimization and use it for tiering (dotnet/coreclr#20009)

Add MethodImplOptions.AggressiveOptimization and use it for tiering

Part of fix for https://github.com/dotnet/corefx/issues/32235
Workaround for https://github.com/dotnet/coreclr/issues/19751
- Added and set CORJIT_FLAG_AGGRESSIVE_OPT to indicate that a method is flagged with AggressiveOptimization
- For a method flagged with AggressiveOptimization, tiering uses a foreground tier 1 JIT on first call to the method, skipping the tier 0 JIT and call counting
- When tiering is disabled, a method flagged with AggressiveOptimization does not use r2r-pregenerated code
- R2r crossgen does not generate code for a method flagged with AggressiveOptimization

Commit migrated from https://github.com/dotnet/coreclr/commit/b68296ce2c56188cf2a7bd263903e27c67717702