platform/upstream/coreclr.git
7 years agoCorrect typos in reporoot/build.cmd
Jacek Blaszczynski [Mon, 18 Sep 2017 16:07:36 +0000 (18:07 +0200)]
Correct typos in reporoot/build.cmd

7 years agoCorrect reporoot/CMakeList.txt typos
Jacek Blaszczynski [Mon, 18 Sep 2017 16:03:34 +0000 (18:03 +0200)]
Correct reporoot/CMakeList.txt typos

7 years agoCorrect typos in reporoot/dir.props
Jacek Blaszczynski [Mon, 18 Sep 2017 15:57:24 +0000 (17:57 +0200)]
Correct typos in reporoot/dir.props

7 years agoMerge pull request #13878 from sdmaclea/PR-ARM64-LowerCompare-Cast-Const
Carol Eidt [Mon, 18 Sep 2017 15:40:25 +0000 (08:40 -0700)]
Merge pull request #13878 from sdmaclea/PR-ARM64-LowerCompare-Cast-Const

[Arm64] LowerCompare Cast-Bool/UBYTE CMP immediate #0 to TST immediate

7 years agoMerge pull request #13926 from sdmaclea/PR-ARM64-BOUND-CHECK
Carol Eidt [Mon, 18 Sep 2017 15:38:09 +0000 (08:38 -0700)]
Merge pull request #13926 from sdmaclea/PR-ARM64-BOUND-CHECK

[Arm64] Enable Lowering GT_ARR_BOUNDS_CHECK

7 years agoMerge pull request #14025 from mikedn/cmp-dead-code
Carol Eidt [Mon, 18 Sep 2017 15:34:39 +0000 (08:34 -0700)]
Merge pull request #14025 from mikedn/cmp-dead-code

Remove dead code from TreeNodeInfoInitCmp

7 years agoMerge pull request #13994 from JosephTremoulet/BenchmarksGame
Joseph Tremoulet [Sat, 16 Sep 2017 12:39:43 +0000 (08:39 -0400)]
Merge pull request #13994 from JosephTremoulet/BenchmarksGame

Update BenchmarksGame benchmarks to latest

7 years agoRemove dead code from TreeNodeInfoInitCmp
Mike Danes [Sat, 16 Sep 2017 08:32:10 +0000 (11:32 +0300)]
Remove dead code from TreeNodeInfoInitCmp

7 years agoMark removed tests EXPECTED_FAIL
Joseph Tremoulet [Sat, 16 Sep 2017 02:49:14 +0000 (22:49 -0400)]
Mark removed tests EXPECTED_FAIL

The next update to the Tests.lst files will need to include the new
variants of these tests.

7 years ago[RyuJit] fix the inconsistency between setContained and isContained. (#13991)
Sergey Andreenko [Sat, 16 Sep 2017 00:13:03 +0000 (17:13 -0700)]
[RyuJit] fix the inconsistency between setContained and isContained. (#13991)

* show the problem with contained arg_place

We set contained on PUTARG_REG, but it doesn't pass IsContained check.

* Fix problem with gtControlExpr

* fix problem with ARGPLACE

* additional improvements1

We should never have a contained node that is the last node in the
execution order.

* additional impovement2 for xarch.

It is redundant, do not need to set as contained.

* additional improvement2 for arm

`GenTree* ctrlExpr = call->gtControlExpr;` was unused.

* additional improvement3: unify CheckLir.

7 years agoMerge pull request #14023 from dotnet-bot/from-tfs
Bruce Forstall [Fri, 15 Sep 2017 23:24:20 +0000 (16:24 -0700)]
Merge pull request #14023 from dotnet-bot/from-tfs

Merge changes from TFS

7 years agoMerge pull request #14004 from noahfalk/fix_tiered_dynamicmethod
Noah Falk [Fri, 15 Sep 2017 23:21:07 +0000 (16:21 -0700)]
Merge pull request #14004 from noahfalk/fix_tiered_dynamicmethod

Disable tiered compilation for dynamic methods

7 years ago[Arm64] LowerCompare enable bool cast removal
Steve MacLean [Fri, 8 Sep 2017 19:48:18 +0000 (15:48 -0400)]
[Arm64] LowerCompare enable bool cast removal

7 years agoRevert two changes to thread requests (#14015)
Koundinya Veluri [Fri, 15 Sep 2017 21:15:25 +0000 (14:15 -0700)]
Revert two changes to thread requests (#14015)

Reverting 99db31c41d5057e08cc4701c79f11246b9191a9b and fd91ee1fa23f35130f576c19dfaf35934dc2ce24 to unblock others while trying to figure out what the issues are and how to fix them.

fd91ee1fa23f35130f576c19dfaf35934dc2ce24 is causing @benaadams thread pool perf test (https://github.com/benaadams/ThreadPoolTaskTesting) to hang due to a missed thread request. Somehow wsqActive is ending up at zero while there is a work item in the queue and with no pending thread requests. I don't understand how yet.

99db31c41d5057e08cc4701c79f11246b9191a9b appears to have a potential issue because the order of MarkThreadRequestSatisfied and Dequeue are reversed. For instance, assuming a proc count of 1:
- Initial state: 1 work item enqueued, 1 thread request
- T1 Dispatch: dequeues a work item and requests a thread (0 work items, 1 thread request)
- T1 Dispatch: sees no more work items, returns
- T1 calls Dispatch again due to its own thread request
- T1 Dispatch: After Dequeue (which saw 0 work items) and before MarkThreadRequestSatisfied:
  - Current state: 0 work items, 1 thread request
  - T2 enqueues a work item, sees 1 thread request and does not request a thread (1 work item, 1 thread request)
- T1 Dispatch: MarkThreadRequestSatisfied decrements thread requests (1 work item, 0 thread requests)
- Now after T1 returns, it won't wake up again but there is still one work item in the queue

7 years agoJIT: Fix crossgen failure in gtTryRemoveBoxUpstreamEffects (#14016)
Andy Ayers [Fri, 15 Sep 2017 21:09:19 +0000 (14:09 -0700)]
JIT: Fix crossgen failure in gtTryRemoveBoxUpstreamEffects (#14016)

In some R2R expansions the type handle is not an explicit operand to
the newobj helper. So we must bail out of removal attempts when the
type handle is desired and we see such an expansion.

Closes #13942.
Also likely will fix #13930.

7 years agoFix check for recursive call in the importer. (#13990)
Eugene Rozenfeld [Fri, 15 Sep 2017 20:34:21 +0000 (13:34 -0700)]
Fix check for recursive call in the importer. (#13990)

The check for recursive call was incorrect when processing an inlineee.
The change had no diffs with jit-diff --frameworks --tests so I added a test where
this change results in a codegen diff: the call to C is inlined with this change but
is not inlined without it.

7 years agoFix build breaks after moving files to shared and misc cleanup
Jan Kotas [Fri, 15 Sep 2017 17:06:23 +0000 (10:06 -0700)]
Fix build breaks after moving files to shared and misc cleanup

- Delete redundant collection and dictionary debug view implementations

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
7 years agofix ilgen after: "Add the capability to specify JIT options from smpi command line"
dotnet-bot [Fri, 15 Sep 2017 18:17:00 +0000 (11:17 -0700)]
fix ilgen after: "Add the capability to specify JIT options from smpi command line"

[tfs-changeset: 1674327]

7 years agoMerge pull request #13923 from sdmaclea/PR-ARM64-LOWER-SHIFT
Jarret Shook [Fri, 15 Sep 2017 18:06:16 +0000 (11:06 -0700)]
Merge pull request #13923 from sdmaclea/PR-ARM64-LOWER-SHIFT

[Arm64] Enable LowerShift

7 years agoMerge pull request #13852 from hqueue/jit/JitNoInline
Bruce Forstall [Fri, 15 Sep 2017 17:50:00 +0000 (10:50 -0700)]
Merge pull request #13852 from hqueue/jit/JitNoInline

Remove COMPlus_JitNoInline from RETAIL

7 years agoManual formatting adjustments
Joseph Tremoulet [Fri, 15 Sep 2017 14:48:39 +0000 (10:48 -0400)]
Manual formatting adjustments

Auto-formatting was leaving some new array expressions oddly indented.

7 years agoAdd references to source CVS
Joseph Tremoulet [Fri, 15 Sep 2017 13:59:05 +0000 (09:59 -0400)]
Add references to source CVS

This will make it easier to track changes in the future.

7 years agoRename BenchmarksGame files
Joseph Tremoulet [Thu, 14 Sep 2017 19:48:25 +0000 (15:48 -0400)]
Rename BenchmarksGame files

Name each variant after its index on the site, not its comparative
status.

7 years agoRemove old versions of BenchmarksGame benchmarks
Joseph Tremoulet [Thu, 14 Sep 2017 19:23:20 +0000 (15:23 -0400)]
Remove old versions of BenchmarksGame benchmarks

7 years agoModify benchmarks to run in perf test harness
Joseph Tremoulet [Thu, 14 Sep 2017 19:11:48 +0000 (15:11 -0400)]
Modify benchmarks to run in perf test harness

 - Add result validation
 - Add [Benchmark] attributes and appropriate iteration counts
 - Minor edits here and there to target .NET Standard 1.4
 - Exception: pi-digits rewritten to use managed BitInteger instead of
   p/invoke out to GMP.

7 years agoMerge pull request #13853 from hqueue/tests/MyStructReturn
Bruce Forstall [Fri, 15 Sep 2017 17:31:31 +0000 (10:31 -0700)]
Merge pull request #13853 from hqueue/tests/MyStructReturn

Add a test for struct return to JIT/CodeGenBringUpTests

7 years agoApply default VS formatting
Joseph Tremoulet [Thu, 14 Sep 2017 18:56:50 +0000 (14:56 -0400)]
Apply default VS formatting

Also insert namespace BenchmarksGame.

7 years agoUpdate BenchmarksGame benchmarks to latest
Joseph Tremoulet [Thu, 31 Aug 2017 18:32:57 +0000 (14:32 -0400)]
Update BenchmarksGame benchmarks to latest

For each benchmark, grab the current best C# .NET entry, and also grab
the current best serial implementation (since these are easier to work
with from the benchmarking perspective).

7 years agoMerge pull request #13944 from ayuckhulk/fix-arm-set-debuggerregdisplay-from-context
Bruce Forstall [Fri, 15 Sep 2017 17:25:01 +0000 (10:25 -0700)]
Merge pull request #13944 from ayuckhulk/fix-arm-set-debuggerregdisplay-from-context

[ARM] Fix SetDebuggerREGDISPLAYFromREGDISPLAY() function

7 years agoMerge pull request #13998 from jashook/devdiv_491210
Jarret Shook [Fri, 15 Sep 2017 16:16:42 +0000 (09:16 -0700)]
Merge pull request #13998 from jashook/devdiv_491210

Fix devdiv 491210

7 years agoMove List to shared partition (#14006)
Jan Kotas [Fri, 15 Sep 2017 15:01:18 +0000 (08:01 -0700)]
Move List to shared partition (#14006)

7 years agoDelete JitHelpers.UnsafeCast (#14005)
Ben Adams [Fri, 15 Sep 2017 06:27:39 +0000 (07:27 +0100)]
Delete JitHelpers.UnsafeCast (#14005)

7 years agoMerge pull request #13976 from stephentoub/fix_memorystream_delegation
Stephen Toub [Fri, 15 Sep 2017 05:17:45 +0000 (22:17 -0700)]
Merge pull request #13976 from stephentoub/fix_memorystream_delegation

Change delegation in {Unmanaged}MemoryStream.Read/WriteAsync(Memory)

7 years agoJIT: Use AllocObj for box allocations (#13988)
Andy Ayers [Fri, 15 Sep 2017 04:58:11 +0000 (21:58 -0700)]
JIT: Use AllocObj for box allocations (#13988)

Model box object allocations using the AllocObj tree node. Update
the box deconstruction utility to compensate.

Also set the OMF_HAS_NEWOBJ flag when we generate Box IR; this both
fixes an oversight from before and is a necessary step to trigger the
morphing of AllocObj into a helper call.

No diffs.

Closes #13905.

7 years agoUpdate logic in arm CodeGen::genCallInstruction to match xarch version (#13974)
Jan Kotas [Fri, 15 Sep 2017 04:03:52 +0000 (21:03 -0700)]
Update logic in arm CodeGen::genCallInstruction to match xarch version (#13974)

This is makes it work for CoreRT, and faster for everybody (avoids JIT/EE call).

7 years agoDisable tiered compilation for dynamic methods
noahfalk [Fri, 15 Sep 2017 02:46:07 +0000 (19:46 -0700)]
Disable tiered compilation for dynamic methods

Fixing an oversight from earlier, tiered compilation isn't designed to handle dynamic methods yet because of their limited lifetime. There may be other issues but a basic one would be having the method get collected while its MethodDesc is in the tiered compilation queue which results in use after free memory issues.

7 years agoMerge pull request #13965 from CarolEidt/Fix13568
Carol Eidt [Fri, 15 Sep 2017 01:43:49 +0000 (18:43 -0700)]
Merge pull request #13965 from CarolEidt/Fix13568

Allow a RET_EXPR as a BYREF operand for SIMD intrinsics.

7 years agoApply format patch
jashook [Thu, 14 Sep 2017 22:15:49 +0000 (15:15 -0700)]
Apply format patch

7 years agoFix devdiv 491210
jashook [Thu, 14 Sep 2017 21:55:05 +0000 (14:55 -0700)]
Fix devdiv 491210

Specifically, this insures the GT_LIST nodes of gtCallArgs
and gtCallLateArgs flags are set correctly, based on their
child nodes.

7 years agoImprove ReaderWriterLockSlim scalability (#13243)
Koundinya Veluri [Thu, 14 Sep 2017 21:48:33 +0000 (14:48 -0700)]
Improve ReaderWriterLockSlim scalability (#13243)

Improve ReaderWriterLockSlim scalability

Fixes #12780

The _myLock spin lock runs into some bad scalability issues. For example:
- Readers can starve writers for an unreasonable amount of time. Typically there would be more readers than writers, and it doesn't take many readers to starve a writer. On my machine with 6 cores (12 logical processors with hyperthreading), 6 to 16 reader threads attempting to acquire the spin lock to acquire or release a read lock can starve one writer thread from acquiring the spin lock for several or many seconds. The issue magnifies with more reader threads.
- Readers and especially writers that hold the RW lock can be starved from even releasing their lock. Releasing an RW lock requires acquiring the spin lock, so releasers are easliy starved by acquirers. How badly they are starved depends on how many acquirers there are, and it doesn't take many to show a very noticeable scalability issue. Often, these acquirers are those that would not be able to acquire the RW lock until one or more releasers release their lock, so the acquirers effectively starve themselves.

Took some suggestions from @vancem and landed on the following after some experiments:
- Introduced some fairness to _myLock acquisition by deprioritizing attempts to acquire _myLock that are not likely to make progress on the RW lock
- Limited spinning in some cases where it is very unlikely that spinning would help

7 years agoUpdate test
Carol Eidt [Thu, 14 Sep 2017 21:29:44 +0000 (14:29 -0700)]
Update test

7 years agoMerge pull request #13916 from pgodeq/PR-ARM64-WINDOWS-STELEM-REF-CORRECTED
Jarret Shook [Thu, 14 Sep 2017 19:25:47 +0000 (12:25 -0700)]
Merge pull request #13916 from pgodeq/PR-ARM64-WINDOWS-STELEM-REF-CORRECTED

[ARM64/Windows] Corrected stack overflow in JIT_Stelem_ref

7 years agoMerge pull request #13977 from jashook/add_arm64_user
Jarret Shook [Thu, 14 Sep 2017 19:23:57 +0000 (12:23 -0700)]
Merge pull request #13977 from jashook/add_arm64_user

Add pgodeq to the list of arm64 users

7 years agoPGI: Load pgort<ver>.dll from the VS native tools env; do not `install` it (#12581)
Daniel Podder [Thu, 14 Sep 2017 17:35:42 +0000 (10:35 -0700)]
PGI: Load pgort<ver>.dll from the VS native tools env; do not `install` it (#12581)

On Windows, PGO instrumented builds (build.cmd release <arch>
pgoinstrument) introduce a runtime dependency on pgort<ver>.dll for
instrumented binaries. This DLL is distributed alongside the C++
compiler, and is made available via the native tools environment that
ships with Visual Studio.

Previously, we were using cmake to find and "install" this binary
alongside the product when doing an instrumented build, so that the
resulting bin\Product drop is free of any added external dependencies.
However, this approach is fragile, and despite a best effort to make the
implementation work across multiple VS releases, it already broke with
VS 2017.

To fix support for pgoinstrument on VS 2017, and to harden the
implementation for future releases of VS, I'm removing the custom cmake
install logic for the pgort DLL. Instead, we fall back to the officially
supported method: load the correct (native tools) environment before
invoking any command that uses an instrumented binary. This happens in
one place in the build today--loading the JIT to crossgen
System.Private.CoreLib.dll.

Note that there's still an existing CLI/Setup bug that requires copying
the pgort DLL. We're now doing it from within build.cmd, which is not
nearly as fragile for this as cmake is. The workaround is also isolated,
so when the referenced issue is fixed, the workaround (as documented)
can simply be removed.

Fixes #12347.

7 years agoEventPipeProvider destructor hardening (#13958)
Victor "Nate" Graf [Thu, 14 Sep 2017 16:30:07 +0000 (09:30 -0700)]
EventPipeProvider destructor hardening (#13958)

* Take lock before manipulating list in desctructor

* Add NULL checks for provider list

* Remove asserts that duplicate conditional check

7 years agoAdd pgodeq to the list of arm64 users
jashook [Thu, 14 Sep 2017 16:17:35 +0000 (09:17 -0700)]
Add pgodeq to the list of arm64 users

7 years agoMerge pull request #13971 from dotnet-maestro-bot/master-UpdateDependencies
Stephen Toub [Thu, 14 Sep 2017 15:37:49 +0000 (08:37 -0700)]
Merge pull request #13971 from dotnet-maestro-bot/master-UpdateDependencies

Update PgoData to master-20170914-0028 (master)

7 years agoChange delegation in {Unmanaged}MemoryStream.Read/WriteAsync(Memory)
Stephen Toub [Thu, 14 Sep 2017 15:35:23 +0000 (08:35 -0700)]
Change delegation in {Unmanaged}MemoryStream.Read/WriteAsync(Memory)

Read/WriteAsync(Memory) on MemoryStream and UnmanagedMemoryStream need to delegate to one of the existing virtual methods, in case an existing stream has overridden the virtuals in order to change or augment the behavior (e.g. checking on each write to ensure the length doesn't exceed some amount).  Currently these delegate to the synchronous Read/Write(Span) methods.  The problem with that is, for exactly the case where there is a derived class, Read/Write(Span) themselves need to delegate to Read/Write(byte[]), which means they use ArrayPool and copy.  But with a {ReadOnly}Memory, we may already have access to the underlying array, in which case we're going from an array to a span and back to different rented array along with an unnecessary copy.  To address that, this commit changes the delegation to prefer Read/Write(byte[],...) if possible, falling back to Read/Write(Span) only if we couldn't get an array from the Memory.

7 years agoFix crossgen memory mappings (#13972)
Jan Vorlicek [Thu, 14 Sep 2017 14:43:13 +0000 (16:43 +0200)]
Fix crossgen memory mappings (#13972)

This change removes executable memory mappings from crossgen. Now it
can be run on systems with PAX set to prevent executable mappings
without any marking using the paxctl.

7 years agoMerge pull request #13954 from jashook/disable_arm_tests
Jarret Shook [Thu, 14 Sep 2017 14:04:34 +0000 (07:04 -0700)]
Merge pull request #13954 from jashook/disable_arm_tests

Disable tests based on 13952

7 years ago[ARM64/Windows] Corrected the address used to push fp,lr in JIT_Stelem_Ref
Pankaj Gode [Thu, 14 Sep 2017 14:01:32 +0000 (19:31 +0530)]
[ARM64/Windows] Corrected the address used to push fp,lr in JIT_Stelem_Ref

7 years agoThe !heapstat sos command emits difficult to read output as the "Percentage" column...
tvass83 [Thu, 14 Sep 2017 12:05:29 +0000 (14:05 +0200)]
The !heapstat sos command emits difficult to read output as the "Percentage" column is not aligned properly (#13856)

7 years agoUpdate PgoData to master-20170914-0028
dotnet-maestro-bot [Thu, 14 Sep 2017 07:49:08 +0000 (00:49 -0700)]
Update PgoData to master-20170914-0028

7 years agoJIT: mark part of runtime lookup tree as nonfaulting and invariant (#13953)
Andy Ayers [Thu, 14 Sep 2017 06:13:25 +0000 (23:13 -0700)]
JIT: mark part of runtime lookup tree as nonfaulting and invariant (#13953)

An indir in the runtime lookup sequence wasn't marked as nonfaulting
so dead context trees could not be entirely cleaned up.

Also added invariant since this particular lookup sequence will always
return the same result.

7 years agoMerge pull request #13934 from dotnet-maestro-bot/master-UpdateDependencies
Stephen Toub [Thu, 14 Sep 2017 05:24:08 +0000 (22:24 -0700)]
Merge pull request #13934 from dotnet-maestro-bot/master-UpdateDependencies

Update BuildTools, CoreClr, PgoData to prerelease-02014-02, preview1-25714-01, master-20170913-0045, respectively (master)

7 years agoDelete JitHelpers.UnsafeCast
Jan Kotas [Thu, 14 Sep 2017 01:07:51 +0000 (18:07 -0700)]
Delete JitHelpers.UnsafeCast

7 years agoReplace JitHelpers.UnsafeCast with Unsafe.As
Jan Kotas [Wed, 13 Sep 2017 22:59:37 +0000 (15:59 -0700)]
Replace JitHelpers.UnsafeCast with Unsafe.As

Both methods to the same, but the latter one is the offficial public name for the functionality

7 years agoUndo more JIT layout workarounds (#13961)
Joseph Tremoulet [Thu, 14 Sep 2017 03:49:38 +0000 (23:49 -0400)]
Undo more JIT layout workarounds (#13961)

Remove some `goto`s that were added  to work around undesirable jit
layout (#9692, fixed in #13314) and epilog factoring (improved in
 #13792 and #13903), which are no longer needed.

Resolves #13466.

7 years agoMerge pull request #13957 from JosephTremoulet/LoopNestFix
Joseph Tremoulet [Thu, 14 Sep 2017 03:21:07 +0000 (23:21 -0400)]
Merge pull request #13957 from JosephTremoulet/LoopNestFix

Renumber blocks before computing loop nest

7 years agoCall the fast generic impl from the non-generic one where possible
Jan Kotas [Wed, 13 Sep 2017 23:36:57 +0000 (16:36 -0700)]
Call the fast generic impl from the non-generic one where possible

7 years agoMake Array.Reverse faster
Jan Kotas [Wed, 13 Sep 2017 22:53:18 +0000 (15:53 -0700)]
Make Array.Reverse faster

Array.Reverse showed up as hot method in profiles of real workloads (e.g. it is called from Json.NET frequently via List.Reverse)

7 years agoEnable end to end Alpine build (#13966)
Jan Vorlicek [Thu, 14 Sep 2017 02:52:39 +0000 (04:52 +0200)]
Enable end to end Alpine build (#13966)

This change enables full end to end build of coreclr including
managed code on Alpine Linux.

7 years agoMerge pull request #13967 from dotnet-bot/from-tfs
Brian Sullivan [Thu, 14 Sep 2017 01:48:47 +0000 (18:48 -0700)]
Merge pull request #13967 from dotnet-bot/from-tfs

Merge changes from TFS

7 years agoUpdate BuildTools, CoreClr, PgoData to prerelease-02014-02, preview1-25714-01, master...
dotnet-maestro-bot [Thu, 14 Sep 2017 00:55:54 +0000 (17:55 -0700)]
Update BuildTools, CoreClr, PgoData to prerelease-02014-02, preview1-25714-01, master-20170913-0045, respectively

7 years agoMerge pull request #13626 from mikedn/test-bt
Carol Eidt [Thu, 14 Sep 2017 00:36:55 +0000 (17:36 -0700)]
Merge pull request #13626 from mikedn/test-bt

Lower TEST(x, LSH(1, y)) to BT(x, y)

7 years agoFix potentially unused variable in lb arm
Brian Sullivan [Thu, 14 Sep 2017 00:09:33 +0000 (17:09 -0700)]
Fix potentially unused variable in lb arm

[tfs-changeset: 1674030]

7 years agoAllow a RET_EXPR as a BYREF operand for SIMD intrinsics.
Carol Eidt [Thu, 14 Sep 2017 00:07:40 +0000 (17:07 -0700)]
Allow a RET_EXPR as a BYREF operand for SIMD intrinsics.

Fix #13568

7 years agoEliminate double delete in EventPipeProvider cleanup (#13833)
Victor "Nate" Graf [Wed, 13 Sep 2017 21:51:46 +0000 (14:51 -0700)]
Eliminate double delete in EventPipeProvider cleanup (#13833)

* Eliminate double delete in EventProvider cleanup

* Fix access after deletion error

* Simplify control flow

7 years agoRenumber blocks before computing loop nest
Joseph Tremoulet [Wed, 13 Sep 2017 18:29:05 +0000 (14:29 -0400)]
Renumber blocks before computing loop nest

The loop nest computation expects to be able to test block numbers for
lexical inclusion, so do a renumbering pass first if blocks have been
moved.

Fixes #13919.

7 years agoFix setting PAX options for crossgen (#13950)
Jan Vorlicek [Wed, 13 Sep 2017 21:33:55 +0000 (23:33 +0200)]
Fix setting PAX options for crossgen (#13950)

In my previous PR that added marking executables with paxctl, I've made
a mistake in the order of calling _add_library and add_dependencies.
But that was hidden due to the fact that we have yet another copy of the
add_library_clr and add_executable_clr functions in src/CMakeLists.txt.
I have no idea how that happened.
This one has overriden the other, which has hidden the problem, but also
caused the crossgen to not to be modified by the paxctl.
So I am fixing the order and removing the extra definitions of those
functions.

7 years agoDisable tests based on 13952
jashook [Wed, 13 Sep 2017 20:00:12 +0000 (13:00 -0700)]
Disable tests based on 13952

7 years agoMerge pull request #13943 from jashook/fix_lb_build_break
Jarret Shook [Wed, 13 Sep 2017 19:50:12 +0000 (12:50 -0700)]
Merge pull request #13943 from jashook/fix_lb_build_break

Fix potentially unused variable in lb arm

7 years agoFix ARM build break (#13932)
Jan Kotas [Wed, 13 Sep 2017 19:49:24 +0000 (12:49 -0700)]
Fix ARM build break (#13932)

7 years ago[ARM] Fix SetDebuggerREGDISPLAYFromREGDISPLAY() function
Igor Kulaychuk [Wed, 13 Sep 2017 17:39:44 +0000 (20:39 +0300)]
[ARM] Fix SetDebuggerREGDISPLAYFromREGDISPLAY() function

Use the same logic as in AMD64 code: when setting DebuggerREGDISPLAY from the context,
the context flags might not be initialized. Since it is only called from stackwalker,
we can copy valid integer, control, and floating point sections from the context.

7 years agoFix potentially unused variable in lb arm
jashook [Wed, 13 Sep 2017 17:54:48 +0000 (10:54 -0700)]
Fix potentially unused variable in lb arm

7 years agoDisable PAX mprotect for native executables (#13940)
Jan Vorlicek [Wed, 13 Sep 2017 17:19:20 +0000 (19:19 +0200)]
Disable PAX mprotect for native executables (#13940)

This change adds marking native executables that coreclr build produces
(corerun, coreconsole, crossgen, ilasm, ildasm, crashdump) to using the
paxctl tool to allow them running on systems with PAX configured so that
creating executable memory mappings by applications is prohibited.

7 years agoFix AV in corerun on invalid filename
Jan Kotas [Wed, 13 Sep 2017 03:32:08 +0000 (20:32 -0700)]
Fix AV in corerun on invalid filename

Before this fix, corerun would AV on certain invalid paths e.g.: corerun test.exe\

7 years agoMark Span.Length as non-versionable
Jan Kotas [Wed, 13 Sep 2017 03:30:30 +0000 (20:30 -0700)]
Mark Span.Length as non-versionable

This allows inlining Span.Length accross versioning boundaries in R2R images. We are leaking the Span implementation details already because the Span indexer is treated as intrinsic. Marking a few more trivial methods as non-versionable should not do any future harm.

7 years agoMerge pull request #13806 from hqueue/arm/ryujit/issue_13739_jitstress_NYI_addr
Carol Eidt [Wed, 13 Sep 2017 16:30:46 +0000 (09:30 -0700)]
Merge pull request #13806 from hqueue/arm/ryujit/issue_13739_jitstress_NYI_addr

[RyuJIT/ARM32] Add ADDR and fixup return type correctly

7 years agoFix Hebrew date parsing (#13929)
Tarek Mahmoud Sayed [Wed, 13 Sep 2017 15:20:46 +0000 (08:20 -0700)]
Fix Hebrew date parsing (#13929)

This fix when parsing Hevrew dat e string formatted as dd/MM/yy. we didn't encounter the same on Windows before because default short date pattern on Windows is dd MMM yyyy which we can parse it successfully.

7 years agoLower TEST(x, LSH(1, y)) to BT(x, y)
Mike Danes [Mon, 28 Aug 2017 17:28:56 +0000 (20:28 +0300)]
Lower TEST(x, LSH(1, y)) to BT(x, y)

7 years agoAdd GT_BT
Mike Danes [Sat, 29 Apr 2017 10:49:20 +0000 (13:49 +0300)]
Add GT_BT

7 years agoAdd INS_bt
Mike Danes [Sat, 29 Apr 2017 10:12:21 +0000 (13:12 +0300)]
Add INS_bt

7 years agoMerge pull request #13903 from JosephTremoulet/PlaceReturns
Joseph Tremoulet [Wed, 13 Sep 2017 13:04:04 +0000 (09:04 -0400)]
Merge pull request #13903 from JosephTremoulet/PlaceReturns

Improve const return block placement

7 years agoMerge pull request #13835 from sdmaclea/PR-ARM64-GT_MULHI
Joseph Tremoulet [Wed, 13 Sep 2017 13:03:13 +0000 (09:03 -0400)]
Merge pull request #13835 from sdmaclea/PR-ARM64-GT_MULHI

[Arm64] Add GT_MULHI

7 years agoMerge pull request #13799 from sdmaclea/PR-ARM64-Transform-AND-CMP
Joseph Tremoulet [Wed, 13 Sep 2017 12:58:31 +0000 (08:58 -0400)]
Merge pull request #13799 from sdmaclea/PR-ARM64-Transform-AND-CMP

[Arm64] Transform AND-CMP to TST

7 years agoIntroduce FEATURE_GDBJIT_SYMTAB (#13567)
Konstantin Baladurin [Wed, 13 Sep 2017 12:17:55 +0000 (15:17 +0300)]
Introduce FEATURE_GDBJIT_SYMTAB (#13567)

* Introduce FEATURE_GDBJIT_SYMTAB

This commit adds new feature FEATURE_GDBJIT_SYMTAB. When it's set
ELF file with symtab section will be generated for all JITed methods.

It helps lldb and gdb correctly unwind frames of JITed methods as they
can use assembly language inspection to determine location of saved
registers on stack.

* gdbjit symtab feature: use different symbols for each function in JITed code

7 years agoChange how numProc is derived on Linux (#13909)
Jarret Shook [Wed, 13 Sep 2017 08:43:06 +0000 (01:43 -0700)]
Change how numProc is derived on Linux (#13909)

Before the decision for numProcs to run in parallel for runtests.sh
was based on _NPROCESSORS_ONLN which harware which attempts to save
power (eg arm(64)) this number may be < numProcs.

7 years agoUpdate BuildTools, CoreClr, CoreFx, PgoData to prerelease-02012-02, preview1-25713...
dotnet-maestro-bot [Wed, 13 Sep 2017 02:49:01 +0000 (19:49 -0700)]
Update BuildTools, CoreClr, CoreFx, PgoData to prerelease-02012-02, preview1-25713-01, preview1-25712-02, master-20170912-0038, respectively (#13928)

7 years agoRe-implemented the ecvt function. (#12894)
Jim Ma [Wed, 13 Sep 2017 01:33:40 +0000 (09:33 +0800)]
Re-implemented the ecvt function. (#12894)

* Re-implemented the ecvt function.

Instead of leveraging snprintf, re-implement the ecvt function according to the paper: https://www.cs.indiana.edu/~dyb/pubs/FP-Printing-PLDI96.pdf

Note:
1. This commit won't fix any existing bug.
2. This is a raw implementation of the paper. The performance on Linux only gain 10%. We could tune the performance further.

Fix #10651

* Resolve a cross platform header file issue.

Fix #10651

* Fixed a minor bug. Improved the performance.

Fix #10651

* Modified code according to code review feedback.

This commit fixed most of the issue found in code review. However, some of the feedback may not be involved due to either little performance improvement or need a POC.

Fix #10651

* Try to fix constexpr compile error on Windows.

Fix #10651

* Fixed a potential overflow bug in BigNum::Compare.

Fix #10651

* Improved multiply 10 operation.

Use shift and add operation to replace actual multiply operation.

Fix #10651

* Remove old _ecvt function.

Fix #10651

* Documented the reason why we do not need m+ and m-.

Fix #10651

* Changed exp > 0 to exp != 0 to remove any confusion.

exp should fall in 1 ~ 2046 for normalized value. Denormalized value has exp = 0.

Fix #10651

* Disable the _ecvt tests.

Fix #10651

* Removed _ecvt tests.

Fix #10651

* Re-implemented LogBase2.

Fix #10651

* Use DWORD and DWORD64 for _BitScanReverse and _BitScanReverse64

Fix #10651

* Fixed x86 compile issue for _BitScanReverse64

x86 does not support _BitScanReverse64 so we have to add additional shift operations to handle it.

Fix #10651

* Implemented BitScanReverse64 and BitScanReverse in pal.h

Fix #10651

* Remove the confusion comment which is unrelated to BitScanReverse.

Fix #10651

* Introduced wmemset to enhance the perf for 0.0

Fix #10651

* Improved the performance of converting 0.0.

Fix #10651

* Renamed ecvt to DoubleToNumberWorker.

Fix #10651

* Updated code according to the code review feedback.

Fix #10651

7 years agoUpdate the third party notices file to reference the floating point number algorithm...
Alex Ghiondea [Wed, 13 Sep 2017 01:30:20 +0000 (18:30 -0700)]
Update the third party notices file to reference the floating point number algorithm (#13920)

7 years ago[RyuJIT/ARM32] Implement CreateDictionaryLookupHelper only via helper (#13733)
Sujin Kim [Wed, 13 Sep 2017 00:55:55 +0000 (09:55 +0900)]
[RyuJIT/ARM32] Implement CreateDictionaryLookupHelper only via helper (#13733)

* [RyuJIT/ARM32] Implement CreateDictionaryLookupHelper only via run-time helper

Implement CreateDictionaryLookupHelper only via run-time helper

* Add assertion for checking CORINFO_USEHELPER

7 years agoFix ARM32 secure delegate bug (#13922)
Jan Vorlicek [Wed, 13 Sep 2017 00:30:55 +0000 (02:30 +0200)]
Fix ARM32 secure delegate bug (#13922)

This change fixes a bug that causes crashes when secure delegate is
invoked on ARM32 with legacy codegen. Register R4 was loaded with
indirection slot address and immediatelly marked as trashed, so the JIT
compiler reused it before the call that was supposed to have that value
in R4.
The fix was to move the reg trashing after the call.
There was also an incorrect marking of that address as EA_PTRSIZE
while it should be EA_BYREF, so I've fixed that too.

7 years agoMake dangerous Span APIs less discoverable. (#13927)
Ahson Ahmed Khan [Wed, 13 Sep 2017 00:29:14 +0000 (17:29 -0700)]
Make dangerous Span APIs less discoverable. (#13927)

7 years agoRemove redundant zero-initialization of struct temps with GC fields. (#13868)
Eugene Rozenfeld [Wed, 13 Sep 2017 00:15:08 +0000 (17:15 -0700)]
Remove redundant  zero-initialization of struct temps with GC fields. (#13868)

Remove redundant  zero-initialization of struct temps with GC fields.

Structs with GC pointer fields are fully zero-initialized in the prolog if compInitMem is true.
Therefore, we don't need to insert zero-initialization for the result of newobj or for inlinee locals
when they are structs with GC pointer fields and the basic bock is not in a loop.

7 years ago[Arm64] Enable Lowering GT_ARR_BOUNDS_CHECK
Steve MacLean [Tue, 12 Sep 2017 22:00:58 +0000 (18:00 -0400)]
[Arm64] Enable Lowering GT_ARR_BOUNDS_CHECK

7 years agoJIT: optimize case where box feeds GetType (#13710)
Andy Ayers [Tue, 12 Sep 2017 22:02:54 +0000 (15:02 -0700)]
JIT: optimize case where box feeds GetType (#13710)

If the only use of a box is in a call to Type:GetType, remove the box and
obtain the type directly. Get the handle needed for obtaining the type from
the newobj call in the original box, via a new box removal option.

Also add some logging to the type optimizations done in morph.

Closes #13187.

7 years agoMerge pull request #13819 from sdmaclea/PR-ARM64-MOD-AND-TRANSFORM
Jarret Shook [Tue, 12 Sep 2017 20:49:13 +0000 (13:49 -0700)]
Merge pull request #13819 from sdmaclea/PR-ARM64-MOD-AND-TRANSFORM

[Arm64] Allow a%b to a&(b-1) transform

7 years agofix stack depth in DevDiv_278523 test source code(#13912)
Sergey Andreenko [Tue, 12 Sep 2017 20:11:29 +0000 (13:11 -0700)]
fix stack depth in DevDiv_278523 test source code(#13912)

7 years ago[Arm64] Enable LowerShift
Steve MacLean [Tue, 12 Sep 2017 19:45:58 +0000 (15:45 -0400)]
[Arm64] Enable LowerShift