Sergey Andreenko [Wed, 17 Oct 2018 18:37:20 +0000 (11:37 -0700)]
Delete `FixupIfSIMDLocal`. (dotnet/coreclr#20360)
* Fix the strange `ifdef ` placement.
* Fix comments/refactoring of `LinearScan::BuildReturn`.
* Delete `FixupIfSIMDLocal`.
Do not change `LCL_FLD(long)` back to `LCL_VAR(simd8)`,
Commit migrated from https://github.com/dotnet/coreclr/commit/
f825219b77bc6545cd2c29216934ad7621f00ab1
Antoine Blanchet [Wed, 17 Oct 2018 17:24:55 +0000 (13:24 -0400)]
Replace 'VSCode' by 'Visual Studio Code' in doc (dotnet/coreclr#20441)
Visual Studio Code is also broadly known as VSCode. But since this document already contained a typo
and Visual Studio Code is not referred as VSCode elsewhere in the CoreCLR documentation I figured it could
be nice to _clean_ this documentation page.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b52ab56aa5035c389c1bf1816d4855212fffed3f
Bruce Forstall [Wed, 17 Oct 2018 16:21:13 +0000 (09:21 -0700)]
Merge pull request dotnet/coreclr#20455 from BruceForstall/DisableFinalize
Disable GC finalizearraysleep, finalizearray tests for arm32
Commit migrated from https://github.com/dotnet/coreclr/commit/
782d1b60f9f40bf6d2a1ae8bae8e3650826f381c
Nick Craver [Wed, 17 Oct 2018 16:02:34 +0000 (12:02 -0400)]
Fix duplicate cast in RuntimeMethodInfo.GetCustomAttributes() (dotnet/coreclr#20463)
The "as RuntimeType as RuntimeType" cast was redundant here - noticed this when digging into other issues. I couldn't trace how far back this goes due to file moves, but full framework has the same code issue.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1f4f005ff53b0d8321c5fb0223d4db8c01e6f212
Tomas Weinfurt [Wed, 17 Oct 2018 14:30:46 +0000 (07:30 -0700)]
make coreclr buildable on FreeBSD again (dotnet/coreclr#20459)
Commit migrated from https://github.com/dotnet/coreclr/commit/
8b0019c927b6cfb1d35e91ab7a902c54c233eac8
Nick Craver [Wed, 17 Oct 2018 03:40:03 +0000 (23:40 -0400)]
Optimizes StackTrace string generation (dotnet/coreclr#20448)
When looking for compiler generated async state machine types and methods, we need not look at parents in the reflection path. This introduces additional overhead in both .IsDefined() and .GetCustomAttributes<T>() in every path.
See the short circuit path in: https://github.com/dotnet/coreclr/blob/dotnet/coreclr@
57f8358221a3c4ad7f1608f625bc3c5936618505/src/System.Private.CoreLib/src/System/Reflection/CustomAttribute.cs#L1315-L1320
We can avoid the list allocation, the array from it, and the resulting combined array by not looking for inherited attributed members that cannot exist for our purposes of creating a stack trace.
Commit migrated from https://github.com/dotnet/coreclr/commit/
34327d31eb4f0e57e2a886ac31ca5eadfaa2985b
David Wrighton [Wed, 17 Oct 2018 03:39:34 +0000 (20:39 -0700)]
Fix resetting of m_hasArgLocDescForStructInRegs (dotnet/coreclr#20450)
- Also add testcase
Fixes dotnet/coreclr#20449
Commit migrated from https://github.com/dotnet/coreclr/commit/
cf1b104f428bcb0cd1667ecdc1a613b7ddf1d1cd
Tomáš Rylek [Wed, 17 Oct 2018 03:08:11 +0000 (20:08 -0700)]
Structured dump of instance entrypoints and decoding generic lookups (dotnet/coreclr#20433)
1) Dump method signatures in the INSTANCE_METHOD_ENTRYPOINTS section;
2) Add logic for decoding generic lookups;
3) Add previously missing support for dumping MVAR index.
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
57d101bf25c31973ec01872506f9c7e12933f2b3
Jarret Shook [Wed, 17 Oct 2018 01:26:56 +0000 (18:26 -0700)]
Add hack for arm64/x86 to skip build tools restore (dotnet/coreclr#20390)
* Add hack for arm64/x86 to skip build tools restore
* Address pr feedback
* Correct PROCESSOR_ARCHITEW6432 comparison
Commit migrated from https://github.com/dotnet/coreclr/commit/
683aa87d4649e62a1429aafb6441fce3c3ff1420
Simon Nattress [Tue, 16 Oct 2018 18:07:25 +0000 (11:07 -0700)]
High entropy ASLR for native images
Enable high entropy for 64bit native images, which expands the set of virtual address bases a native image can be loaded at.
Commit migrated from https://github.com/dotnet/coreclr/commit/
75a5f7042e7ce91ba97ae00ccbe53a3c57880fa9
Bruce Forstall [Wed, 17 Oct 2018 00:19:30 +0000 (17:19 -0700)]
Merge pull request dotnet/coreclr#20431 from BruceForstall/IlasmArm64
Add ARM64 support to ilasm/ildasm
Commit migrated from https://github.com/dotnet/coreclr/commit/
2ad81aeb22b2dda33c2911bb88038403b5ff6d40
Bruce Forstall [Wed, 17 Oct 2018 00:14:25 +0000 (17:14 -0700)]
Disable GC finalizearraysleep, finalizearray tests for arm32
Tracked by dotnet/coreclr#19218
Commit migrated from https://github.com/dotnet/coreclr/commit/
90ad42bfa0a178b4182a67878f73c6c20b073141
Stephen Toub [Wed, 17 Oct 2018 00:09:11 +0000 (20:09 -0400)]
Fix behavior of TextWriter.Write with null StringBuilder (dotnet/coreclr#20451)
With other overloads (including Write(object)) if you passed null it just wouldn't write anything out, so we shouldn't throw for the StringBuilder overload either.
Commit migrated from https://github.com/dotnet/coreclr/commit/
fae09cbe1c1d66beccf6cc4917732e2d0a6dc84c
Jan Vorlicek [Tue, 16 Oct 2018 23:42:33 +0000 (16:42 -0700)]
Remove per-AppDomain TLB (dotnet/coreclr#20423)
Since there is only one AppDomain, there is no need for a per-AppDomain
TLB table for each Thread. This change removes that table and thus gets
rid of the extra indirection needed to access the TLB.
Commit migrated from https://github.com/dotnet/coreclr/commit/
afb6185394511fb30c9278d40d6e6e2ca59cb6f8
Jan Vorlicek [Tue, 16 Oct 2018 23:42:07 +0000 (16:42 -0700)]
Enable building with Clang 7 (dotnet/coreclr#20417)
The Clang 7 is the first version in which only the major version is used in
file names and paths. So the change needed to massage the build files a bit
more than what was needed for the previous versions.
Commit migrated from https://github.com/dotnet/coreclr/commit/
5c2c5961a6142fc0bf0c9f992ff76b4a32ad65e4
Wes Haggard [Tue, 16 Oct 2018 23:41:42 +0000 (16:41 -0700)]
Update command lines for building corefx repo (dotnet/coreclr#20415)
* Update command lines for building corefx repo
* Combine build-managed and build-native to avoid some init issues
cross and portable parameters correctly default for native builds
Commit migrated from https://github.com/dotnet/coreclr/commit/
116461030e106f14d7fc53a2143930db21d6eaa6
Egor Chesakov [Tue, 16 Oct 2018 23:12:07 +0000 (16:12 -0700)]
Use build-test.sh script on Linux (dotnet/coreclr#20430)
* Use build-test.sh script on Linux (dotnet/coreclr#20333)
* Use *.tgz archive format and tar tool on Unix (dotnet/coreclr#20381)
* Fix paths to "..\Common\common.csproj" in ilproj (dotnet/coreclr#20407)
Commit migrated from https://github.com/dotnet/coreclr/commit/
3e7950e9425106ccfaadbaa96710ccc6dea7d886
Bruce Forstall [Tue, 16 Oct 2018 18:39:46 +0000 (11:39 -0700)]
Remove ExportStubARM64Template support
Commit migrated from https://github.com/dotnet/coreclr/commit/
5c08f2985d08dae56ab65a3941cd2596fe1a33a8
Bruce Forstall [Tue, 16 Oct 2018 18:39:27 +0000 (11:39 -0700)]
Clarify /ARM64 argument usage
Commit migrated from https://github.com/dotnet/coreclr/commit/
7fcbe4dc9ed5f72c70a741ed695923e9293d7486
Sergey Andreenko [Tue, 16 Oct 2018 18:03:45 +0000 (11:03 -0700)]
Fix compilation error when `FEATURE_HFA` is disabled. (dotnet/coreclr#20432)
Commit migrated from https://github.com/dotnet/coreclr/commit/
57f8358221a3c4ad7f1608f625bc3c5936618505
Andy Ayers [Tue, 16 Oct 2018 15:34:45 +0000 (08:34 -0700)]
JIT: refactor logic to find compile time handle from a helper call (dotnet/coreclr#20380)
There were 3 copies of this logic inlined into `gtFoldTypeCompare`.
Also having this functionality split out will be useful in a subsequent
change that extends `gtGetClassHandle` for some helper call cases.
So pull out the logic as a utility and refactor the 3 uses.
Commit migrated from https://github.com/dotnet/coreclr/commit/
142e77d60e60442b6f31fcea0f06e0c904140337
Carol Eidt [Tue, 16 Oct 2018 15:26:28 +0000 (15:26 +0000)]
Extract argInfo building from fgMorphArgs (dotnet/coreclr#19658)
* Extract argInfo building from fgMorphArgs
This extracts the code to build the `fgArgInfo` on a call from the code that modifies the arguments.
Eliminated a pre-existing repeated traversal of the argList by changing `EvalToTmp` to take the `fgArgTabEntry` which the caller always has available.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d61257b1e85bbe9cc7b126e1ededabd244d5c934
Jan Kotas [Tue, 16 Oct 2018 04:39:18 +0000 (21:39 -0700)]
Optimize Span.GetPinnableReference (dotnet/coreclr#20428)
* Optimize Span.GetPinnableReference
* CR feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
d3ed7cb8da830657c376d4adb2862bc3c09cfef7
Bruce Forstall [Tue, 16 Oct 2018 01:15:48 +0000 (18:15 -0700)]
Enable building with older SDKs
Commit migrated from https://github.com/dotnet/coreclr/commit/
203d9c62787a35a51ebef9b7531170455094c70d
Bruce Forstall [Tue, 16 Oct 2018 00:14:37 +0000 (17:14 -0700)]
Add ARM64 support to ilasm/ilasm
Remove IA-64/Itanium support.
Commit migrated from https://github.com/dotnet/coreclr/commit/
777002ce2150ab0aea1588d0fc569325799839b3
Levi Broderick [Mon, 15 Oct 2018 20:53:02 +0000 (13:53 -0700)]
Fix code comments in Utf16Utility (dotnet/coreclr#20425)
Commit migrated from https://github.com/dotnet/coreclr/commit/
85ed652fef5f1dec7c532bd4963dd3cde0199211
Stephen Toub [Mon, 15 Oct 2018 19:44:57 +0000 (15:44 -0400)]
Null out CancellationTokenSource._timer on Dispose/Cancel (dotnet/coreclr#20410)
We already Dispose the Timer in such cases, but we don't null out the field. That's generally fine, unless an errant CancellationToken is held onto somewhere that references the CancellationTokenSource, in which case it in turn may end up keeping the Timer alive and whatever its delegate/state reference, prolonging their GC unnecessarily. Minor, but good house keeping, as CancellationTokens can be used in a manner that makes them longer-lived than expected.
Commit migrated from https://github.com/dotnet/coreclr/commit/
0af70b614ded7636e6615bf035bbd5149670142b
Fei Peng [Mon, 15 Oct 2018 19:30:25 +0000 (12:30 -0700)]
Fix GitHub dotnet/coreclr#20389 (dotnet/coreclr#20391)
Commit migrated from https://github.com/dotnet/coreclr/commit/
7c04af489975d715d314a86177a47061d9ac9d75
Carol Eidt [Mon, 15 Oct 2018 17:27:22 +0000 (17:27 +0000)]
Merge pull request dotnet/coreclr#19914 from CarolEidt/AltJitTailCall
Dummy TailCallCopyArgsThunk for altjit
Commit migrated from https://github.com/dotnet/coreclr/commit/
9ff41e739123909894e70494d03affb864d8cf6e
Mike McLaughlin [Mon, 15 Oct 2018 17:26:13 +0000 (10:26 -0700)]
Upgrade symuploader to version 1.0.0-beta-63412-03 (dotnet/coreclr#20394)
Turn off verbose symbol publish logging.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d0d26d15d48bc87b8643c203354d8e6bb28b59e6
Egor Chesakov [Sat, 13 Oct 2018 21:28:28 +0000 (14:28 -0700)]
Print target arch on arm64 and target OS during in JIT_Disasm (dotnet/coreclr#20327)
Commit migrated from https://github.com/dotnet/coreclr/commit/
ffc347acdbcaa05bc85fcd51bca57c551bc33955
Joakim Skoglund [Sat, 13 Oct 2018 07:25:13 +0000 (09:25 +0200)]
Corrected misspelled comment (dotnet/coreclr#20408)
Commit migrated from https://github.com/dotnet/coreclr/commit/
6a33b50b6ba2812f8ba271d9411c05bf9b6e578f
Andy Ayers [Sat, 13 Oct 2018 01:30:10 +0000 (18:30 -0700)]
JIT: add some devirtualization info to the inline context (dotnet/coreclr#20395)
Allows the jit to remember which calls were devirtualized and which
of those were then optimized to use an unboxed entry point. This info
is then dumped out as part of the inline tree.
Also remove some of the clutter from the COMPlus_JitPrintInlinedMethods
output stream -- we don't need to see both the in-stream results and
the final results, and we don't really need to know about the budget.
This information is still dumped for COMPlus_JitDump.
Commit migrated from https://github.com/dotnet/coreclr/commit/
10a8e2523bceb49b04dbd21cacbd9b34d77e18af
Eugene Rozenfeld [Sat, 13 Oct 2018 00:35:28 +0000 (17:35 -0700)]
Move ObjectAllocator phase to run right after inlining. (dotnet/coreclr#20377)
This change will support object stack allocation for the following reasons:
1. Objects should be allocated on the stack before struct promotion phase
so that their fields have a chance to be promoted.
2. Eventually object stack allocation will be performed in the same phase
as inlining since inlining heuristics will need to be aware of object stack allocation
opportunities.
I verified no x64 diffs with jit-diffs --frameworks --tests --pmi
Commit migrated from https://github.com/dotnet/coreclr/commit/
cb2d6ee13fe94d3112f3ac886c8e981456351e57
jbhensley [Sat, 13 Oct 2018 00:25:19 +0000 (17:25 -0700)]
Fix "Non-static method requires a target" caused by trying to access the HasValue property of a nullable type through reflection when the value is null. (dotnet/coreclr#20350)
Commit migrated from https://github.com/dotnet/coreclr/commit/
d6c35b6274a49bf83eff4e1089b8013c3741d936
Mike McLaughlin [Fri, 12 Oct 2018 17:49:40 +0000 (10:49 -0700)]
Fix MacOS launch bug when spaces in module names. (dotnet/coreclr#20385)
Commit migrated from https://github.com/dotnet/coreclr/commit/
e0637d0e83582543e7367a417465438c14120b8d
Egor Chesakov [Fri, 12 Oct 2018 04:13:06 +0000 (21:13 -0700)]
Implement LeadingSignCount and LeadingZeroCount ARM64 Base Intrinsics (dotnet/coreclr#20306)
Commit migrated from https://github.com/dotnet/coreclr/commit/
8558599cfe92e64d741a842d62e977a56fffc797
Vance Morrison [Fri, 12 Oct 2018 00:02:43 +0000 (17:02 -0700)]
fix hyperlink
Commit migrated from https://github.com/dotnet/coreclr/commit/
52f56db5de361dbc22564e2c5a57fefd9599f179
Vance Morrison [Fri, 12 Oct 2018 00:00:06 +0000 (17:00 -0700)]
Added docs for native DLLs
Commit migrated from https://github.com/dotnet/coreclr/commit/
c2891ef02b637d2d368eab86f380180950b54fd8
Levi Broderick [Thu, 11 Oct 2018 23:25:20 +0000 (16:25 -0700)]
Improve performance of OrdinalIgnoreCase hash code calculation (dotnet/coreclr#20309)
Commit migrated from https://github.com/dotnet/coreclr/commit/
e2bcca7d9d0e36510eaba9b1028e16a5de39cee9
Jarret Shook [Thu, 11 Oct 2018 22:23:17 +0000 (15:23 -0700)]
Do not restore or initialize buildtools for x86/arm64 (dotnet/coreclr#20370)
* Do not restore or initialize buildtools for x86/arm64
* Remove string to download cli correctly
Commit migrated from https://github.com/dotnet/coreclr/commit/
907c013a7f5bf6ef4e37519ca27b7ea6fb998153
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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