platform/upstream/coreclr.git
7 years ago[RyuJIT/ARM32] JitStress=1 test: padding local variable
Hyeongseok Oh [Thu, 21 Sep 2017 07:18:30 +0000 (16:18 +0900)]
[RyuJIT/ARM32] JitStress=1 test: padding local variable

JitStress=1 test make padding offset for local variable.
On ARM32, padding value must support stack alignment.

7 years agoMerge pull request #14039 from OpenVisionLabs/typos
Bruce Forstall [Wed, 20 Sep 2017 22:02:00 +0000 (15:02 -0700)]
Merge pull request #14039 from OpenVisionLabs/typos

Correction of typos in several infrastructure files

7 years agoMerge pull request #13541 from hqueue/arm/ryujit/issue_12614_enable_unrolling_for_cpblk
Bruce Forstall [Wed, 20 Sep 2017 21:23:00 +0000 (14:23 -0700)]
Merge pull request #13541 from hqueue/arm/ryujit/issue_12614_enable_unrolling_for_cpblk

[RyuJIT/ARM32] enable unrolling for cpblk

7 years agoMerge pull request #14089 from BredPet/switch_generation
Bruce Forstall [Wed, 20 Sep 2017 19:48:48 +0000 (12:48 -0700)]
Merge pull request #14089 from BredPet/switch_generation

ARM32: fix switch jump table generation bug for RyuJIT

7 years agoMerge pull request #14048 from wtgodbe/RIDs
William Godbe [Wed, 20 Sep 2017 19:34:09 +0000 (12:34 -0700)]
Merge pull request #14048 from wtgodbe/RIDs

Restore packages for every Windows architecture by default

7 years agoMerge pull request #14086 from sdmaclea/PR-ARM-REMOVE-OBS-ASSERT
Bruce Forstall [Wed, 20 Sep 2017 18:35:20 +0000 (11:35 -0700)]
Merge pull request #14086 from sdmaclea/PR-ARM-REMOVE-OBS-ASSERT

[Arm] Remove obsolete assert

7 years agoImprove instructions for installing VS2017 and building for ARM (#14073)
Bruce Forstall [Wed, 20 Sep 2017 18:12:14 +0000 (11:12 -0700)]
Improve instructions for installing VS2017 and building for ARM (#14073)

* Improve instructions for installing VS2017 and building for ARM

* Add section on cross-building ARM for Windows

7 years agomark argplace node as no_lir (#14044)
Sergey Andreenko [Wed, 20 Sep 2017 18:04:16 +0000 (11:04 -0700)]
mark argplace node as no_lir (#14044)

mark argplace node as no_lir

7 years agoARM32: fix switch jump table generation bug for RyuJIT
Petr Bred [Wed, 20 Sep 2017 17:05:52 +0000 (20:05 +0300)]
ARM32: fix switch jump table generation bug for RyuJIT

Signed-off-by: Petr Bred <bredpetr@gmail.com>
7 years agoWhen building as standalone GC the free object is initialized with 0 flags. This...
Jeff Schwartz [Wed, 20 Sep 2017 17:17:32 +0000 (10:17 -0700)]
When building as standalone GC the free object is initialized with 0 flags.  This leads to the free list plugs not having the right size on heap traversal (often leading to a crash).   The fix is for the free object to be an array with a compenent size of 1 byte.

7 years agoMerge pull request #14085 from qmfrederik/marshal-utf8-intptr-zero
Tijoy Tom [Wed, 20 Sep 2017 16:44:37 +0000 (09:44 -0700)]
Merge pull request #14085 from qmfrederik/marshal-utf8-intptr-zero

Fix marshaling IntPtr.Zero to UTF8 strings, add unit tests

7 years ago[Arm] Remove obsolete assert
Steve MacLean [Wed, 20 Sep 2017 15:29:31 +0000 (11:29 -0400)]
[Arm] Remove obsolete assert

Assert should have been removed with #14018

Fixes #14082

7 years agoReset static state per iteration for k-nucleotide-9 (#14081)
Andy Ayers [Wed, 20 Sep 2017 15:15:44 +0000 (08:15 -0700)]
Reset static state per iteration for k-nucleotide-9 (#14081)

Otherwise iterations keep getting slower and slower.

Also bump inner iteration count to 10 to restore the nominal one second
duration per iteration.

7 years ago16-byte Stack Aligned StubDispatchFixupStub (#14078)
Jonghyun Park [Wed, 20 Sep 2017 14:43:05 +0000 (23:43 +0900)]
16-byte Stack Aligned StubDispatchFixupStub (#14078)

7 years agoTest marshaling IntPtr.Zero to UTF8 strings, add unit tests
Frederik Carlier [Wed, 20 Sep 2017 14:21:59 +0000 (16:21 +0200)]
Test marshaling IntPtr.Zero to UTF8 strings, add unit tests

7 years agoMerge pull request #14075 from BruceForstall/AllowMoreStressModes
Bruce Forstall [Wed, 20 Sep 2017 06:03:08 +0000 (23:03 -0700)]
Merge pull request #14075 from BruceForstall/AllowMoreStressModes

Refine ARM64 CI stress modes allowed

7 years agoRefine ARM64 CI stress modes allowed
Bruce Forstall [Wed, 20 Sep 2017 00:28:32 +0000 (17:28 -0700)]
Refine ARM64 CI stress modes allowed

For JitStressRegs, allow 0x10, 0x80, 0x1000; don't use simple 10 or 80
in names (to match netci.groovy).

Remove "tieredcompilation" from allowed modes; it is not supported in the
CI smarty helper currently.

7 years agoMerge pull request #14068 from JosephTremoulet/HelixExclude
Joseph Tremoulet [Tue, 19 Sep 2017 23:25:53 +0000 (19:25 -0400)]
Merge pull request #14068 from JosephTremoulet/HelixExclude

Update exclusions for moved tests

7 years agoMerge pull request #14069 from BruceForstall/FixFormatting
Bruce Forstall [Tue, 19 Sep 2017 21:59:46 +0000 (14:59 -0700)]
Merge pull request #14069 from BruceForstall/FixFormatting

Fix jit-format error

7 years agoFix rlimit setting of RLIM_NOFILE on OSX (#14054)
Jan Vorlicek [Tue, 19 Sep 2017 21:48:35 +0000 (23:48 +0200)]
Fix rlimit setting of RLIM_NOFILE on OSX (#14054)

This change fixes an issue with rlimit setting of RLIM_NOFILE. The problem
is that the rlim_max that we get from getrlimit is too large and so setting
the rlimit_cur to that value fails. The OSX man page for rlimit has a compat
note about it, stating that the rlimit_cur needs to be limited to
min(OPEN_MAX, rlim_max) if one wants to set it to rlim_max.

7 years agoFix jit-format error
Bruce Forstall [Tue, 19 Sep 2017 21:45:25 +0000 (14:45 -0700)]
Fix jit-format error

7 years agoSupport PR trigger of ARM JIT stress jobs (#14055)
Bruce Forstall [Tue, 19 Sep 2017 21:42:29 +0000 (14:42 -0700)]
Support PR trigger of ARM JIT stress jobs (#14055)

Add a list of jobs known to the ARM64 CI, and allow those to be triggered.

Also, allow Release triggered jobs to run tests (before, the label said
"Build and Test", but no test was done).

For the newly added jobs, make them weekly triggered, not daily triggered,
for the periodic jobs, to reduce machine usage.

7 years agoUpdate exclusions for moved tests
Joseph Tremoulet [Tue, 19 Sep 2017 21:01:52 +0000 (17:01 -0400)]
Update exclusions for moved tests

Change #13994 moved some tests that were excluded from Helix runs, but
failed to update the exclusion list; fix that oversight and exclude the
tests in their new locations.

Fixes #14034.

7 years agoMerge pull request #14059 from hseok-oh/ryujit/fix_13760
Bruce Forstall [Tue, 19 Sep 2017 21:03:40 +0000 (14:03 -0700)]
Merge pull request #14059 from hseok-oh/ryujit/fix_13760

[RyuJIT/ARM32] Fix TreeNodeInfoInit for STOREIND with writebarrier

7 years agoMove initialization of YieldProcessorNormalized to the finalizer thread (#14058)
Koundinya Veluri [Tue, 19 Sep 2017 20:54:37 +0000 (13:54 -0700)]
Move initialization of YieldProcessorNormalized to the finalizer thread (#14058)

Move initialization of YieldProcessorNormalized to the finalizer thread

Fixes https://github.com/dotnet/coreclr/issues/13984
- Also moved relevant functions out of the Thread class as requested in the issue
- For some reason, after moving the functions out of the Thread class, YieldProcessorNormalized was not getting inlined anymore. It seems to be important to have it be inlined such that the memory loads are hoisted out of outer loops. To remove the dependency on the compiler to do it (even with forceinline it's not possible to hoist sometimes, for instance InterlockedCompareExchnage loops), changed the signatures to do what is intended.

7 years agoAdd span-based Guid.{Try}Parse{Exact} methods (#14062)
Stephen Toub [Tue, 19 Sep 2017 20:47:53 +0000 (13:47 -0700)]
Add span-based Guid.{Try}Parse{Exact} methods (#14062)

This commit does two things:
- Changes the existing Guid.{Try}Parse{Exact} methods to work in terms of spans rather than strings.
- Then adds new overloads that accept spans and that uses the same underlying span-based support.

Due to the first change, performance actually improves for several of the guid formats, in particular due to substring allocations that are no longer incurred.  For example, this program:
```C#
using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        var sw = new Stopwatch();
        const int Iters = 1000000;

        Console.WriteLine("Pattern\tBytes\tTime");
        foreach (string pattern in new[] { "D", "B", "P", "N", "X" })
        {
            string input = Guid.NewGuid().ToString(pattern);
            Guid.Parse(input);

            long a = GC.GetAllocatedBytesForCurrentThread();
            sw.Restart();
            for (int i = 0; i < Iters; i++) Guid.Parse(input);
            sw.Stop();
            a = GC.GetAllocatedBytesForCurrentThread() - a;

            Console.WriteLine($"\"{pattern}\"\t{a / Iters}\t{(int)(sw.Elapsed.TotalMilliseconds / Iters * 1000000)}ns");
        }
    }
}
```
on my machine previously output:
```
Pattern Bytes   Time
"D"     0       218ns
"B"     0       217ns
"P"     0       210ns
"N"     168     388ns
"X"     744     765ns
```
and with this change outputs:
```
Pattern Bytes   Time
"D"     0       213ns
"B"     0       192ns
"P"     0       196ns
"N"     0       372ns
"X"     0       577ns
```

7 years agoMerge pull request #14018 from sdmaclea/PR-ARM-Remove-extra-cast
Brian Sullivan [Tue, 19 Sep 2017 20:44:47 +0000 (13:44 -0700)]
Merge pull request #14018 from sdmaclea/PR-ARM-Remove-extra-cast

[Arm/Arm64] LowerCast remove small int widen cast

7 years agoMerge pull request #13941 from sdmaclea/PR-ARM64-CMP-EXTENDED
Brian Sullivan [Tue, 19 Sep 2017 20:13:55 +0000 (13:13 -0700)]
Merge pull request #13941 from sdmaclea/PR-ARM64-CMP-EXTENDED

[Arm64] Do not extend within Compare/Test nodes

7 years agoMerge pull request #14063 from JosephTremoulet/Fannkuch-5
Joseph Tremoulet [Tue, 19 Sep 2017 20:01:01 +0000 (16:01 -0400)]
Merge pull request #14063 from JosephTremoulet/Fannkuch-5

Fix expected values in fannkuch-redux-5

7 years agoRestore packages for every Windows architecture by default
wtgodbe [Mon, 18 Sep 2017 21:17:07 +0000 (14:17 -0700)]
Restore packages for every Windows architecture by default

7 years agoFix expected values in fannkuch-redux-5
Joseph Tremoulet [Tue, 19 Sep 2017 18:09:54 +0000 (14:09 -0400)]
Fix expected values in fannkuch-redux-5

The validation logic was testing against `chksum`, which actually can
vary depending on the number of processors (as that is used to determine
the number of threads across which the work is partitioned, and the
checksum is sensitive to the bucketing).  Change it to test against
`maxflips` instead, which is stable.

Fixes #14040.

7 years agoMerge pull request #14061 from JosephTremoulet/BenchmarkReadme
Joseph Tremoulet [Tue, 19 Sep 2017 15:39:51 +0000 (11:39 -0400)]
Merge pull request #14061 from JosephTremoulet/BenchmarkReadme

Update BenchmarksGames README.txt

7 years agoMerge pull request #13753 from CarolEidt/FixSpillWeights
Carol Eidt [Tue, 19 Sep 2017 15:06:49 +0000 (08:06 -0700)]
Merge pull request #13753 from CarolEidt/FixSpillWeights

Sane spill weights

7 years agoMerge pull request #14057 from ahsonkhan/UpdateProperties
Stephen Toub [Tue, 19 Sep 2017 14:14:46 +0000 (07:14 -0700)]
Merge pull request #14057 from ahsonkhan/UpdateProperties

Change AsSpan() to property Span and rename AsMemory to Memory

7 years agoUpdate BenchmarksGames README.txt
Joseph Tremoulet [Tue, 19 Sep 2017 14:07:39 +0000 (10:07 -0400)]
Update BenchmarksGames README.txt

Reflecting recent updates to the snapshot of these tests.

7 years agoMerge pull request #14052 from stephentoub/parsenumbers_managed
Stephen Toub [Tue, 19 Sep 2017 14:02:08 +0000 (07:02 -0700)]
Merge pull request #14052 from stephentoub/parsenumbers_managed

Move ParseNumbers to shared partition

7 years ago[RyuJIT/ARM32] Fix TreeNodeInfoInit for STOREIND with writebarrier
Hyeongseok Oh [Tue, 19 Sep 2017 09:32:21 +0000 (18:32 +0900)]
[RyuJIT/ARM32] Fix TreeNodeInfoInit for STOREIND with writebarrier

Set source count for GT_STOREIND with writebarrier.
It's same value with ARM64

7 years agoDisable VSD Stub Kind Prediction on H/W Exception (#14051)
Jonghyun Park [Tue, 19 Sep 2017 08:17:10 +0000 (17:17 +0900)]
Disable VSD Stub Kind Prediction on H/W Exception (#14051)

* Disable VSD Stub Kind Prediction on H/W Exception

* Add a comment on a false argument

* Use BOOL (instead of bool) for consistency

* Replace remaining bool/true/false with BOOL/TRUE/FALSE

7 years agoChange AsSpan() to property Span and rename AsMemory to Memory
ahsonkhan [Tue, 19 Sep 2017 02:56:11 +0000 (19:56 -0700)]
Change AsSpan() to property Span and rename AsMemory to Memory

7 years agoAddress PR feedback
Stephen Toub [Tue, 19 Sep 2017 02:30:24 +0000 (22:30 -0400)]
Address PR feedback

7 years agoMerge pull request #14029 from mikedn/cmp-op-swap
Carol Eidt [Tue, 19 Sep 2017 00:21:03 +0000 (17:21 -0700)]
Merge pull request #14029 from mikedn/cmp-op-swap

Remove useless TODO from genCompareInt

7 years agoMerge pull request #14003 from noahfalk/fix_commitstack
Noah Falk [Mon, 18 Sep 2017 23:59:29 +0000 (16:59 -0700)]
Merge pull request #14003 from noahfalk/fix_commitstack

Fix test StackCommitCommon

7 years agoMove ParseNumbers to shared partition
Stephen Toub [Mon, 18 Sep 2017 23:55:00 +0000 (19:55 -0400)]
Move ParseNumbers to shared partition

7 years agoRemove now dead ParseNumbers code in runtime
Stephen Toub [Mon, 18 Sep 2017 18:22:19 +0000 (14:22 -0400)]
Remove now dead ParseNumbers code in runtime

7 years agoClean up ParseNumbers and fix perf regressions
Stephen Toub [Mon, 18 Sep 2017 18:22:02 +0000 (14:22 -0400)]
Clean up ParseNumbers and fix perf regressions

- Fix formatting
- Replace char[] allocations with stackalloc
- Replace StringBuilders with FastAllocateString
- Tweak a few comparisons to make them leaner
- Tweak some tight loops to make them a bit leaner
- Help JIT to eliminate bounds checks on target spans
- Walk ptr destinations rather than indexing

7 years agoUse the calculated size (offset) instead of estimated (size) (#14049)
Victor "Nate" Graf [Mon, 18 Sep 2017 23:36:50 +0000 (16:36 -0700)]
Use the calculated size (offset) instead of estimated (size) (#14049)

7 years agoChange jit notifications so that they pass the native code address. (#14021)
David Mason [Mon, 18 Sep 2017 21:41:48 +0000 (14:41 -0700)]
Change jit notifications so that they pass the native code address.  (#14021)

* Change jit notifications so that they pass the native code address. This fixes !bpmd so that it will set the correct breakpoint on tiered jitted methods.

* code review feedback

* don't handle OnCodeGenerated

7 years agoMerge pull request #13664 from BruceForstall/WinRyuArm32CI
Bruce Forstall [Mon, 18 Sep 2017 20:16:48 +0000 (13:16 -0700)]
Merge pull request #13664 from BruceForstall/WinRyuArm32CI

First step to enable Windows RyuJIT/arm32 testing

7 years agoSane spill weights
Carol Eidt [Fri, 1 Sep 2017 20:08:57 +0000 (13:08 -0700)]
Sane spill weights

The existing spill weight computation is comparing non-normalized bbWeight to normalized lvRefCntWtd, and is also using the weight of whatever the last block turns out to be (often EH zero-weight block) for the `RefTypeParamDef`s.

The straightforward fix resulted in regressions:
- It turns out that it is useful to give extra weight to tree temps, as all their references are very localized.
- Also, it is helpful to reduce the relative weight of a lclVar if it has already been spilled.

As is often the case, more tuning would be useful, but this is a more sane algorithm.

Fix #13721

7 years agoDisable tests that fail in RyuJIT/arm32 testing
Bruce Forstall [Fri, 1 Sep 2017 00:55:58 +0000 (17:55 -0700)]
Disable tests that fail in RyuJIT/arm32 testing

7 years agoFirst step to enable Windows RyuJIT/arm32 testing
Bruce Forstall [Tue, 29 Aug 2017 22:49:59 +0000 (15:49 -0700)]
First step to enable Windows RyuJIT/arm32 testing

Renames arm legacy backend jobs to "armlb" and keeps "arm"
for RyuJIT/arm32 testing.

7 years agoFix RuntimeTypeHandle underlying type for CoreRT (#14026)
Jan Kotas [Mon, 18 Sep 2017 18:01:41 +0000 (11:01 -0700)]
Fix RuntimeTypeHandle underlying type for CoreRT (#14026)

RuntimeTypeHandles on CoreRT are backed by IntPtr today. This fix is not complete. There are likely more places that make assumption about the underlying runtime handle types, but this is enough to fix the immediate problem hit by @sergign60.

7 years agoCopy corert's ParseNumbers implementation to coreclr
Stephen Toub [Mon, 18 Sep 2017 17:33:01 +0000 (13:33 -0400)]
Copy corert's ParseNumbers implementation to coreclr

7 years agoCorrect typos in reporoot/perf.groovy
Jacek Blaszczynski [Mon, 18 Sep 2017 16:35:42 +0000 (18:35 +0200)]
Correct typos in reporoot/perf.groovy

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 agoRemove useless TODO from genCompareInt
Mike Danes [Sun, 17 Sep 2017 13:57:44 +0000 (16:57 +0300)]
Remove useless TODO from genCompareInt

gtSetEvalOrder already does this. And even if it doesn't it's not the job of genCompareInt to swap operands, that should happen in LowerCompare.

Attempting to do this in LowerCompare resulted in 0 diffs.

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 test StackCommitCommon
noahfalk [Fri, 15 Sep 2017 02:33:29 +0000 (19:33 -0700)]
Fix test StackCommitCommon

This test will hang if run with non-optimized jitted code because it takes a dependency on exactly when locally allocated objects go out of scope. Although I doubt CLI spec guarantees the new code will always work either, it does work with the runtime/JIT as currently implemented.

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 ago[Arm/Arm64] LowerCast remove small int widen cast
Steve MacLean [Fri, 15 Sep 2017 16:09:25 +0000 (12:09 -0400)]
[Arm/Arm64] LowerCast remove small int widen cast

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 ago[Arm64] Do not mov extend in genCodeForCompare
Steve MacLean [Thu, 14 Sep 2017 23:02:29 +0000 (19:02 -0400)]
[Arm64] Do not mov extend in genCodeForCompare

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