platform/upstream/coreclr.git
6 years agoMerge pull request dotnet/corert#5038 from dotnet/nmirror
Jan Kotas [Wed, 29 Nov 2017 06:31:23 +0000 (22:31 -0800)]
Merge pull request dotnet/corert#5038 from dotnet/nmirror

Merge nmirror to master

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
6 years agoFixed DCE of call nodes (#15192)
Roman Artemev [Thu, 30 Nov 2017 21:27:10 +0000 (13:27 -0800)]
Fixed DCE of call nodes (#15192)

Fixed DCE of call nodes which affect stack level

6 years agoMerge pull request #15305 from BruceForstall/AddMoreSmartyZipFileLogging
Bruce Forstall [Thu, 30 Nov 2017 20:40:28 +0000 (12:40 -0800)]
Merge pull request #15305 from BruceForstall/AddMoreSmartyZipFileLogging

Add temporary logging to track down failure to ZIP smarty output

6 years agoUse ILAsm from buildtools, take 2 (#15300)
Michal Strehovský [Thu, 30 Nov 2017 20:23:34 +0000 (21:23 +0100)]
Use ILAsm from buildtools, take 2 (#15300)

Since #15172 got rolled back in #15292, trying this again.

This time also deleting garbage `.permission` attributes from the failing tests. Permissions are not supported in CoreCLR.

Filed #15299 on some more ILAsm from CoreCLR frustrations.

6 years agoAdd temporary logging to track down failure to ZIP smarty output
Bruce Forstall [Thu, 30 Nov 2017 20:12:18 +0000 (12:12 -0800)]
Add temporary logging to track down failure to ZIP smarty output

6 years agoRemoved Check Invalid Path Chars (#15191)
Anirudh Agnihotry [Thu, 30 Nov 2017 19:54:26 +0000 (11:54 -0800)]
Removed Check Invalid Path Chars (#15191)

Removed Check Invalid Chars from Coreclr

6 years agoUpdate build definition execute conditions for api v3.2 (#15285)
chcosta [Thu, 30 Nov 2017 17:49:16 +0000 (09:49 -0800)]
Update build definition execute conditions for api v3.2 (#15285)

6 years agoExpose Environment.ProcessorCount via EnvironmentAugments (#15297)
Tom Deseyn [Thu, 30 Nov 2017 15:42:16 +0000 (16:42 +0100)]
Expose Environment.ProcessorCount via EnvironmentAugments (#15297)

6 years ago[Local GC] Fail fast on exceptions within a standalone GC (#15290)
Sean Gillespie [Thu, 30 Nov 2017 05:25:20 +0000 (21:25 -0800)]
[Local GC] Fail fast on exceptions within a standalone GC (#15290)

6 years agoUpdate CoreFx to preview1-25930-02 (#15295)
dotnet-maestro-bot [Thu, 30 Nov 2017 04:38:08 +0000 (22:38 -0600)]
Update CoreFx to preview1-25930-02 (#15295)

6 years agoMerge pull request #15292 from BruceForstall/Revert15172
Bruce Forstall [Thu, 30 Nov 2017 02:43:31 +0000 (18:43 -0800)]
Merge pull request #15292 from BruceForstall/Revert15172

Revert "Use ILAsm from buildtools (#15172)"

6 years ago[RyuJit] Delete contained workaround. (#15257)
Sergey Andreenko [Thu, 30 Nov 2017 02:37:26 +0000 (18:37 -0800)]
[RyuJit] Delete contained workaround.  (#15257)

* Move CodeGen::indirForm and IntForm to common.

* GenTreeFieldList: SetContained only for the head.

* delete the workaround.

* move check from isContained to CheckLIR

`isContained` can't determinate does node has user or not. Move this check to the appropriate place.

* check that SetContained and IsContained are consistent.

6 years agoMerge pull request #15282 from BruceForstall/EnableMoreArmGcStressModes
Bruce Forstall [Thu, 30 Nov 2017 01:12:01 +0000 (17:12 -0800)]
Merge pull request #15282 from BruceForstall/EnableMoreArmGcStressModes

Allow arm/armlb/arm64 to run additional jobs

6 years agoRevert "Use ILAsm from buildtools (#15172)"
Bruce Forstall [Thu, 30 Nov 2017 00:37:38 +0000 (16:37 -0800)]
Revert "Use ILAsm from buildtools (#15172)"

This reverts commit e864120d14c829df6f6d4c6cff6f3d23db19606c.

6 years agoMerge pull request #15288 from wtgodbe/Crossgen
William Godbe [Wed, 29 Nov 2017 23:43:34 +0000 (15:43 -0800)]
Merge pull request #15288 from wtgodbe/Crossgen

Ensure CoreCLR Package version overwrite works correctly in test build

6 years agoFix GC stress C bug for arm (#15269)
Jan Vorlicek [Wed, 29 Nov 2017 23:22:05 +0000 (00:22 +0100)]
Fix GC stress C bug for arm (#15269)

* Fix GC stress C bug for arm

The OnGcCoverageInterrupt function was not removing the "thumb" bit from
the address before putting back the original instruction that was
previously replaced by an invalid instruction that invokes the
OnGcCoverageInterrupt. That resulted in the original instruction being
restored to incorrect location (to the original address + 1) and later
to the GC stress failure.

* Reflect PR feedback

6 years agoEnsure CoreCLR Package version overwrite works correctly in test build
wtgodbe [Wed, 29 Nov 2017 22:56:19 +0000 (14:56 -0800)]
Ensure CoreCLR Package version overwrite works correctly in test build

6 years agoUpdate CoreClr, CoreFx, PgoData to preview1-25929-01, preview1-25929-02, master-20171...
dotnet-maestro-bot [Wed, 29 Nov 2017 22:43:36 +0000 (16:43 -0600)]
Update CoreClr, CoreFx, PgoData to preview1-25929-01, preview1-25929-02, master-20171129-0045, respectively (#15266)

6 years agoAllow arm/armlb/arm64 to run additional jobs
Bruce Forstall [Wed, 29 Nov 2017 22:03:16 +0000 (14:03 -0800)]
Allow arm/armlb/arm64 to run additional jobs

This improves stress test coverage and creates consistency with
other platforms.

The jobs:
```
tieredcompilation
forcerelocs
jitnosimd (will soon be interesting for ARM64)
heapverify1
gcstress0xc_zapdisable
gcstress0xc_zapdisable_jitstress2
gcstress0xc_zapdisable_heapverify1
gcstress0xc_minopts_heapverify1
```

6 years agoUse ILAsm from buildtools (#15172)
Michal Strehovský [Wed, 29 Nov 2017 18:16:18 +0000 (19:16 +0100)]
Use ILAsm from buildtools (#15172)

* Use ILAsm from buildtools

On Windows: this stops using the ILASM that ships with Windows in favor
of CoreCLR ILASM
On Unix: this stops using the live built ILASM.

I image this fixes some issues in crossbuild on both platforms but I
can't find where the workarounds for that are.

Necessary prerequisite for being able to build tests for the default
interfaces feature.

6 years agoAvoid provider-related costs for default integer formatting (#15272)
Stephen Toub [Wed, 29 Nov 2017 17:57:47 +0000 (12:57 -0500)]
Avoid provider-related costs for default integer formatting (#15272)

One of the biggest costs when invoking Int32.ToString() and similar methods is in fetching the current culture, accessing its number information, etc.  And if a culture is provided explicitly, there are still costs related to casts.  But when the default format is used for non-negative integer values, the number format information isn't used at all, and we can skip the associated costs.  This improves formatting perf in such cases by upwards of ~25%.

6 years agoUpdate BuildTools, CoreClr, CoreFx to prerelease-02228-01, preview1-25928-08, preview...
dotnet-maestro-bot [Wed, 29 Nov 2017 04:37:51 +0000 (22:37 -0600)]
Update BuildTools, CoreClr, CoreFx to prerelease-02228-01, preview1-25928-08, preview1-25929-01, respectively (#15252)

6 years agoMerge pull request #15246 from stephentoub/double_tryformat
Stephen Toub [Wed, 29 Nov 2017 04:34:04 +0000 (23:34 -0500)]
Merge pull request #15246 from stephentoub/double_tryformat

Add double/float.TryFormat

6 years agoAddress PR feedback
Stephen Toub [Wed, 29 Nov 2017 03:22:50 +0000 (22:22 -0500)]
Address PR feedback

- Simplify FCALL signatures
- Simplify mantissa logic copied from corert

6 years agoReduce duplicate code for span formatting in StringBuilder
Stephen Toub [Tue, 28 Nov 2017 18:31:50 +0000 (13:31 -0500)]
Reduce duplicate code for span formatting in StringBuilder

6 years agoAdd double/float.TryFormat
Stephen Toub [Tue, 28 Nov 2017 17:58:36 +0000 (12:58 -0500)]
Add double/float.TryFormat

Also implement ISpanFormattable so that string.Format and StringBuilder.AppendFormat take optimized paths with double and float, and update StringBuilder.Append(double/float) to use the new TryFormat methods.

6 years agoPort ValueStringBuilder updates/fixes from corefx
Stephen Toub [Tue, 28 Nov 2017 17:18:43 +0000 (12:18 -0500)]
Port ValueStringBuilder updates/fixes from corefx

6 years agoMove FormatDouble/Single to managed code
Stephen Toub [Tue, 28 Nov 2017 16:48:37 +0000 (11:48 -0500)]
Move FormatDouble/Single to managed code

Instead of making fcalls to FormatDouble and FormatSingle, move them to managed, and use fcalls for the DoubleToNumber and NumberToDouble they call, shifting down the layer that's implemented in native.  This allows us to then much more easily add TryFormat methods for double and float while also sharing more code between coreclr and corert, from which the managed implementations were taken (they're a direct port of these native implementations from coreclr).  In the process, I also eliminated one fcall that can be implemented in managed easily.  The remaining fcalls are more substantial and will eventually require more effort to bring to managed.

6 years agoJIT: fix bug with int casts of long shifts (#15236)
Andy Ayers [Wed, 29 Nov 2017 02:10:06 +0000 (18:10 -0800)]
JIT: fix bug with int casts of long shifts (#15236)

* JIT: fix bug with int casts of long shifts

The jit is pushing int casts down through long left shifts in ways that can
change computation. The push is only safe if the shift amount is 31 bits or
less. So split the current optimization for shifts into three cases:
* shift amount unknown: don't push the cast
* shift amount > 31: result of cast/shift is zero
* shift amout <= 31: push the cast

Fixes #15077.

6 years agoMerge pull request #15250 from BruceForstall/DisableMuldimjagary
Bruce Forstall [Wed, 29 Nov 2017 01:03:26 +0000 (17:03 -0800)]
Merge pull request #15250 from BruceForstall/DisableMuldimjagary

Disable muldimjagary test for arm

6 years agoMerge pull request #15253 from BruceForstall/FixSmartyArchive2
Bruce Forstall [Wed, 29 Nov 2017 00:54:20 +0000 (16:54 -0800)]
Merge pull request #15253 from BruceForstall/FixSmartyArchive2

Fix archiving of smarty results

6 years agoFix archiving of smarty results
Bruce Forstall [Wed, 29 Nov 2017 00:10:55 +0000 (16:10 -0800)]
Fix archiving of smarty results

Run the command to ZIP the output directory in the same
"Execute Batch File" step as the smarty. Otherwise, a failure
of smarty will cause Jenkins to not run the subsequent batch file
steps, including the ZIP step.

Also, preserve the smarty error code to use that as the batch
file step exit code.

6 years agoFix netci.groovy braces after Linux/x86 change
Bruce Forstall [Wed, 29 Nov 2017 00:30:06 +0000 (16:30 -0800)]
Fix netci.groovy braces after Linux/x86 change

6 years agoDisable muldimjagary test for arm
Bruce Forstall [Tue, 28 Nov 2017 22:31:09 +0000 (14:31 -0800)]
Disable muldimjagary test for arm

Fixes #15245

6 years agoMerge pull request #15247 from wtgodbe/TestNativeBinLocation
William Godbe [Tue, 28 Nov 2017 21:03:34 +0000 (13:03 -0800)]
Merge pull request #15247 from wtgodbe/TestNativeBinLocation

Download test native binaries to correct location

6 years agoDownload test native binaries to correct location
wtgodbe [Tue, 28 Nov 2017 20:49:59 +0000 (12:49 -0800)]
Download test native binaries to correct location

6 years agoUpdate CoreClr to preview1-25928-02 (#15240)
dotnet-maestro-bot [Tue, 28 Nov 2017 19:28:56 +0000 (13:28 -0600)]
Update CoreClr to preview1-25928-02 (#15240)

6 years agoUpdate CoreClr, PgoData to preview1-25927-01, master-20171128-0148, respectively...
dotnet-maestro-bot [Tue, 28 Nov 2017 13:06:38 +0000 (07:06 -0600)]
Update CoreClr, PgoData to preview1-25927-01, master-20171128-0148, respectively (#15239)

6 years agoFix typo in comment in number formatting
Stephen Toub [Tue, 28 Nov 2017 03:06:35 +0000 (22:06 -0500)]
Fix typo in comment in number formatting

6 years agoSwitch new TryParse* and TryFormat methods to use span-based format (#15238)
Stephen Toub [Tue, 28 Nov 2017 03:05:47 +0000 (22:05 -0500)]
Switch new TryParse* and TryFormat methods to use span-based format (#15238)

As part of this, I needed to fix-up several functions that parsed strings assuming they end with '\0', which no longer holds once we switch to using spans.

Also:
- Switched various call sites to using a cast rather than AsReadOnlySpan.
- Updated string.Format / StringBuilder.AppendFormat to use the new span-based support to avoid substring allocations.
- Removed some TODOs that were left in the codebase from some of my previous changes

6 years ago[Local GC] Move knowledge of overlapped I/O objects to the EE through four callbacks...
Sean Gillespie [Mon, 27 Nov 2017 23:41:09 +0000 (15:41 -0800)]
[Local GC] Move knowledge of overlapped I/O objects to the EE through four callbacks (#14982)

* [Local GC] Move knowledge of overlapped I/O objects to the EE through
four callbacks

* Code review feedback:
        1. Rename OverlappedData->AsyncPinned in interface methods
        2. Remove additional FEATURE_REDHAWK defines around async pin
        relocation code

* Eliminate two GCToEEInterface callbacks by passing the callbacks directly as arguments to a method on IGCHandleStore

* Repair clang build

* Split pin and async pin handle scans into two separate callbacks

* Fix the clang and non-Windows builds

6 years agoUpdate CoreClr, CoreFx, PgoData to preview1-25927-01, preview1-25927-01, master-20171...
dotnet-maestro-bot [Mon, 27 Nov 2017 20:09:42 +0000 (14:09 -0600)]
Update CoreClr, CoreFx, PgoData to preview1-25927-01, preview1-25927-01, master-20171127-0045, respectively (#15219)

6 years agoAuto-update ILAsmVersion.txt (#15199)
Michal Strehovský [Mon, 27 Nov 2017 19:49:46 +0000 (20:49 +0100)]
Auto-update ILAsmVersion.txt (#15199)

6 years agoMerge pull request #15187 from BruceForstall/FixArmTailcall
Bruce Forstall [Mon, 27 Nov 2017 19:24:59 +0000 (11:24 -0800)]
Merge pull request #15187 from BruceForstall/FixArmTailcall

Fix arm32 stub indirect tailcall

6 years agoImprove Monitor scaling (#14216)
Koundinya Veluri [Mon, 27 Nov 2017 18:28:02 +0000 (10:28 -0800)]
Improve Monitor scaling (#14216)

Improve Monitor scaling and reduce spinning

Part 1: Improve Monitor scaling

Fixes https://github.com/dotnet/coreclr/issues/13978
- Refactored AwareLock::m_MonitorHeld into a class LockState with operations to mutate the state
- Allowed the lock to be taken by a non-waiter when there is a waiter to prevent creating lock convoys
- Added a bit to LockState to indicate that a waiter is signaled to wake, to avoid waking more than one waiter at a time. A waiter that wakes by observing the signal unsets this bit. See AwareLock::EnterEpilogHelper().
- Added a spinner count to LockState. Spinners now register and unregister themselves and lock releasers don't wake a waiter when there is a registered spinner (the spinner guarantees to take the lock if it's available when unregistering itself)
  - This was necessary mostly on Windows to reduce CPU usage to the expected level in contended cases with several threads. I believe it's the priority boost Windows gives to signaled threads, which seems to cause waiters to much more frequently succeed in acquiring the lock. This causes a CPU usage problem because once the woken waiter releases the lock, on the next lock attempt it will become a spinner. This keeps repeating, converting several waiters into spinners unnecessarily. Before registering spinners, I saw typically 4-6 spinners under contention (with delays inside and outside the lock) when I expected to have only 1-2 spinners at most.
  - It costs an interlocked operation before and after the spin loop, doesn't seem to be too significant since spinning is a relatively slow path anyway, and the reduction in CPU usage in turn reduces contention on the lock and lets more useful work get done
- Updated waiters to spin a bit before going back to waiting, reasons are explained in AwareLock::EnterEpilogHelper()
- Removed AwareLock::Contention() and any references (this removes the 10 repeats of the entire spin loop in that function). With the lock convoy issue gone, this appears to no longer be necessary.

Perf
- On Windows, throughput has increased significantly starting at slightly lower than proc count threads. On Linux, latency and throughput have increased more significantly at similar proc counts.
- Most of the larger regressions are in the unlocked fast paths. The code there hasn't changed and is almost identical (minor layout differences), I'm just considering this noise until we figure out how to get consistently faster code generated.
- The smaller regressions are within noise range

Part 2: Reduce Monitor spinning

Fixes https://github.com/dotnet/coreclr/issues/13980
- Added new config value Monitor_SpinCount and Monitor spins for that many iterations, default is 30 (0x1e). This seems to give a somewhat decent balance between latency, fairness, and throughput. Lower spin counts improve latency and fairness significantly and regress throughput slightly, and higher spin counts improve throughput slightly and regress latency and fairness significantly.
  - The other constants can still be used to disable spinning but otherwise they are no longer used by Monitor
- Decreased the number of bits used for tracking spinner count to 3. This seems to be more than enough since only one thread can take a lock at a time, and prevents spikes of unnecessary CPU usage.

Tried some things that didn't pan out:
- Sleep(0) doesn't seem to add anything to the spin loop, so left it out. Instead of Sleep(0) it can just proceed to waiting. Waiting is more expensive than Sleep(0), but I didn't see that benefit in the tests. Omitting Sleep(0) also keeps the spin loop very short (a few microseconds max).
- Increasing the average YieldProcessor() duration per spin iteration improved thorughput slightly but regressed latency and fairness very quickly. Given that fairness is generally worse with part 1 of this change above, it felt like a better compromise to take a small reduction in throughput for larger improvements in latency and fairness.
- Tried adding a very small % of lock releases by random wake a waiter despite there being spinners to improve fairness. This improved fairness noticeably but not as much as decreasing the spin count slightly, and it was making latency and throughput worse more quickly. After reducing the % to a point where I was hardly seeing fairness improvements, there were still noticeable latency and throughput regressions.

Miscellaneous
- Moved YieldProcessorNormalized code into separate files so that they can be included earlier and where needed
- Added a max for "optimal max normalized yields per spin iteration" since it has a potential to be very large on machines where YieldProcessor may be implemented as no-op, in which case it's probably not worth spinning for the full duration
- Refactored duplicate code in portable versions of MonEnterWorker, MonEnter, and MonReliableEnter. MonTryEnter has a slightly different structure, did not refactor that.

Perf
- Throughput is a bit lower than before at lower thread counts and better at medium-high thread counts. It's a bit lower at lower thread counts because of two reasons:
  - Shorter spin loop means the lock will be polled more frequently because the exponential backoff does not get as high, making it more likely for a spinner to steal the lock from another thread, causing the other thread to sometimes wait early
  - The duration of YieldProcessor() calls per spin iteration has decreased and a spinner or spinning waiter are more likely to take the lock, the rest is similar to above
- For the same reasons as above, latency is better than before. Fairness is better on Windows and worse on Linux compared to baseline due to the baseline having differences between these platforms. Latency also has differences between Windows/Linux in the baseline, I suspect those are due to differences in scheduling.
- Performance now scales appropriately on processors with different pause delays

Part 3: Add mitigation for waiter starvation

Normally, threads are allowed to preempt waiters to acquire the lock. There are cases where waiters can be easily starved as a result. For example, a thread that holds a lock for a significant amount of time (much longer than the time it takes to do a context switch), then releases and reacquires the lock in quick succession, and repeats. Though a waiter would be woken upon lock release, usually it will not have enough time to context-switch-in and take the lock, and can be starved for an unreasonably long duration.

In order to prevent such starvation and force a bit of fair forward progress, it is sometimes necessary to change the normal policy and disallow threads from preempting waiters. A new bit was added to LockState and ShouldNotPreemptWaiters() indicates the current state of the policy.
- When the first waiter begins waiting, it records the current time as a "waiter starvation start time". That is a point in time after which no forward progress has occurred for waiters. When a waiter acquires the lock, the time is updated to the current time.
- Before a spinner begins spinning, and when a waiter is signaled to wake, it checks whether the starvation duration has crossed a threshold (currently 100 ms) and if so, sets ShouldNotPreemptWaiters()

When unreasonable starvation is occurring, the lock will be released occasionally and if caused by spinners, spinners will be starting to spin.
- Before starting to spin, if ShouldNotPreemptWaiters() is set, the spinner will skip spinning and wait instead. Spinners that are already registered at the time ShouldNotPreemptWaiters() is set will stop spinning as necessary. Eventually, all spinners will drain and no new ones will be registered.
- After spinners have drained, only a waiter will be able to acquire the lock. When a waiter acquires the lock, or when the last waiter unregisters itself, ShouldNotPreemptWaiters() is cleared to restore the normal policy.

6 years agoRemove excessive console output in debug builds in a set of monitor tests (#15071)
Koundinya Veluri [Mon, 27 Nov 2017 16:56:18 +0000 (08:56 -0800)]
Remove excessive console output in debug builds in a set of monitor tests (#15071)

6 years ago[x86/Linux] Enable CI unittest (#14442)
Hyeongseok Oh [Mon, 27 Nov 2017 13:30:54 +0000 (22:30 +0900)]
[x86/Linux] Enable CI unittest (#14442)

* [x86/Linux] Preparing pri2 unittest

- Copy test binary from x86 Windows build
- Copy CoreFX managed from arm CoreFX managed build
- Add archival

* Fix to merge test job generation

Change approach by expanding existing x64 & arm64 linux infrastructure

* [CI][Linux/x86] Fix configuration and architecture in netci.groovy

Fix to use configuration instead of lowerConfiguration
USe architecture and osGroup

* [CI][Linux/x86] Save test native builds in build job

Fix to save test native build in build job
Saved native builds are used on test job

6 years agoFix resx typo (#15212)
Dan Moseley [Sun, 26 Nov 2017 21:34:21 +0000 (13:34 -0800)]
Fix resx typo (#15212)

* Fix resx typo

* Reword

6 years agoFix Powershell error (#15217)
Bruce Forstall [Sun, 26 Nov 2017 15:13:04 +0000 (07:13 -0800)]
Fix Powershell error (#15217)

6 years agoRemove some dead Unix code (#15221)
Justin Van Patten [Sun, 26 Nov 2017 14:45:40 +0000 (06:45 -0800)]
Remove some dead Unix code (#15221)

Environment.ExpandEnvironmentVariables is only used by RegistryKey
inside corelib, which is only present on Windows. There's no need for a
Unix implementation.

6 years agoSimpler code (same as in String.Manipulation.cs). (#15223)
Jiri {x2} Cincura [Sun, 26 Nov 2017 14:44:54 +0000 (15:44 +0100)]
Simpler code (same as in String.Manipulation.cs). (#15223)

6 years agoSort the Action/Func delegates (#15222)
Justin Van Patten [Sun, 26 Nov 2017 13:47:32 +0000 (05:47 -0800)]
Sort the Action/Func delegates (#15222)

6 years agoUse string.Create in BitConverter.ToString(byte[]) (#15218)
Justin Van Patten [Sun, 26 Nov 2017 02:32:15 +0000 (18:32 -0800)]
Use string.Create in BitConverter.ToString(byte[]) (#15218)

Avoids unnecessary allocations and copying, and reduces the amount of unsafe code.

6 years agoUpdate CoreClr, CoreFx, PgoData to preview1-25925-02, preview1-25925-02, master-20171...
dotnet-maestro-bot [Sat, 25 Nov 2017 16:42:21 +0000 (10:42 -0600)]
Update CoreClr, CoreFx, PgoData to preview1-25925-02, preview1-25925-02, master-20171125-0056, respectively (#15210)

6 years agoFix build error (#15213)
dotnet bot [Sat, 25 Nov 2017 16:41:55 +0000 (08:41 -0800)]
Fix build error (#15213)

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
6 years agoadded keu value to key not found exception (#15201)
Anirudh Agnihotry [Fri, 24 Nov 2017 23:49:35 +0000 (15:49 -0800)]
added keu value to key not found exception (#15201)

6 years agoUpdate CoreClr, CoreFx, PgoData to preview1-25924-01, preview1-25924-02, master-20171...
dotnet-maestro-bot [Fri, 24 Nov 2017 21:09:52 +0000 (15:09 -0600)]
Update CoreClr, CoreFx, PgoData to preview1-25924-01, preview1-25924-02, master-20171124-0044, respectively (#15202)

6 years agoDelete unused file expandarray.h (#15204)
mikedn [Fri, 24 Nov 2017 20:54:18 +0000 (22:54 +0200)]
Delete unused file expandarray.h (#15204)

This was used by the JIT but now it has its own copy (src\jit\jitexpandarray.h).

6 years agoImplementation for new string.contains api (#15180)
Anirudh Agnihotry [Fri, 24 Nov 2017 04:07:50 +0000 (20:07 -0800)]
Implementation for new string.contains api (#15180)

* string contains char added

* string Comparision added

6 years agoUpdate CoreClr, CoreFx, PgoData to preview1-25923-02, preview1-25923-02, master-20171...
dotnet-maestro-bot [Fri, 24 Nov 2017 01:03:46 +0000 (19:03 -0600)]
Update CoreClr, CoreFx, PgoData to preview1-25923-02, preview1-25923-02, master-20171123-0035, respectively (#15188)

6 years agoFixed parameter validation for Delegate.CreateDelegate method. (#15196)
Victor Zaytsev [Thu, 23 Nov 2017 16:07:47 +0000 (19:07 +0300)]
Fixed parameter validation for Delegate.CreateDelegate method. (#15196)

6 years agoRevert making Nullable<T> readonly (#15198)
Stephen Toub [Thu, 23 Nov 2017 16:05:59 +0000 (11:05 -0500)]
Revert making Nullable<T> readonly (#15198)

* Revert making Nullable<T> readonly

* Address PR feedback

6 years agoMove TextInfo to shared CoreLib partition (#15195)
Jan Kotas [Thu, 23 Nov 2017 16:00:15 +0000 (08:00 -0800)]
Move TextInfo to shared CoreLib partition (#15195)

6 years agoFix namespaces and ThrowHelper
Jan Kotas [Thu, 23 Nov 2017 03:29:51 +0000 (19:29 -0800)]
Fix namespaces and ThrowHelper

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
6 years agoMove Nullable and string normalization to shared CoreLib partition (#15184)
Jan Kotas [Thu, 23 Nov 2017 02:29:54 +0000 (18:29 -0800)]
Move Nullable and string normalization to shared CoreLib partition (#15184)

6 years ago[Arm64] support GBDJIT debug frame (#15174)
Steve MacLean [Thu, 23 Nov 2017 01:37:28 +0000 (20:37 -0500)]
[Arm64] support GBDJIT debug frame (#15174)

6 years agoMerge pull request #15181 from BruceForstall/CleanupCallFlagUsage
Bruce Forstall [Thu, 23 Nov 2017 00:31:58 +0000 (16:31 -0800)]
Merge pull request #15181 from BruceForstall/CleanupCallFlagUsage

Clean up `GTF_CALL_VIRT_KIND_MASK` and related usage

6 years agoMerge pull request #15177 from sdmaclea/PR-ARM64-SIMD-morph-varTypeIsStruct
Bruce Forstall [Thu, 23 Nov 2017 00:05:59 +0000 (16:05 -0800)]
Merge pull request #15177 from sdmaclea/PR-ARM64-SIMD-morph-varTypeIsStruct

[Arm64] SIMD morph varTypeIsStruct

6 years agoMerge pull request #15178 from sdmaclea/PR-ARM64-SIMD-norm-arg-type
Bruce Forstall [Thu, 23 Nov 2017 00:04:47 +0000 (16:04 -0800)]
Merge pull request #15178 from sdmaclea/PR-ARM64-SIMD-norm-arg-type

[Arm64] SIMD Normalize struct arg type

6 years agoMerge pull request #15179 from sdmaclea/PR-ARM64-assign-GT_SIMD-arg-temps
Bruce Forstall [Thu, 23 Nov 2017 00:02:00 +0000 (16:02 -0800)]
Merge pull request #15179 from sdmaclea/PR-ARM64-assign-GT_SIMD-arg-temps

[Arm64] Assign temps to GT_SIMD arguments

6 years agoFix arm32 stub indirect tailcall
Bruce Forstall [Wed, 22 Nov 2017 23:39:49 +0000 (15:39 -0800)]
Fix arm32 stub indirect tailcall

ARM has code in fgMorphTailCall to insert a level of indirection
for the call address of a stub indirect tailcall. Then, LowerVirtualStubCall
inserts another level of indirection. Only one is necessary/required,
so stop inserting the second indirection in LowerVirtualStubCall.

Fixes #15152, #14862 (all current TailcallStress=1 and JitStress=1 failures).

6 years agoDisable Automatic PR Perf Jobs (#15176)
Brian Robbins [Wed, 22 Nov 2017 23:37:58 +0000 (15:37 -0800)]
Disable Automatic PR Perf Jobs (#15176)

* Disable PR perf jobs.

* Actually enable on-demand PR runs.

6 years agoStringBuilder: Use Decimal.TryFormat (#15170)
Justin Van Patten [Wed, 22 Nov 2017 23:34:03 +0000 (15:34 -0800)]
StringBuilder: Use Decimal.TryFormat (#15170)

6 years agoMerge pull request #15173 from sdmaclea/PR-ARM64-LowerVirtualStubCall-reg-allocation
Bruce Forstall [Wed, 22 Nov 2017 23:33:17 +0000 (15:33 -0800)]
Merge pull request #15173 from sdmaclea/PR-ARM64-LowerVirtualStubCall-reg-allocation

[Arm64] Fix LowerVirtualStubCall reg allocation

6 years agoMerge pull request #15182 from BruceForstall/TweakArmArchive
Bruce Forstall [Wed, 22 Nov 2017 22:45:50 +0000 (14:45 -0800)]
Merge pull request #15182 from BruceForstall/TweakArmArchive

Tweak how arm/armlb/arm64 smarty archive happens

6 years agoTweak how arm/armlb/arm64 smarty archive happens
Bruce Forstall [Wed, 22 Nov 2017 22:09:21 +0000 (14:09 -0800)]
Tweak how arm/armlb/arm64 smarty archive happens

Put the powershell command to create the archive in a separate
batch file step, so the smarty command error code will be recognized
separately.

6 years agoClean up `GTF_CALL_VIRT_KIND_MASK` and related usage
Bruce Forstall [Wed, 22 Nov 2017 22:05:09 +0000 (14:05 -0800)]
Clean up `GTF_CALL_VIRT_KIND_MASK` and related usage

Use the existing accessor functions instead of checking the bits directly.

6 years ago[Arm64] Assign temps to GT_SIMD arguments
Steve MacLean [Wed, 22 Nov 2017 21:10:41 +0000 (16:10 -0500)]
[Arm64] Assign temps to GT_SIMD arguments

6 years ago[Arm64] SIMD Normalize struct arg type
Steve MacLean [Mon, 20 Nov 2017 21:27:55 +0000 (16:27 -0500)]
[Arm64] SIMD Normalize struct arg type

6 years ago[Arm64] SIMD morph varTypeIsStruct
Steve MacLean [Fri, 10 Nov 2017 21:33:11 +0000 (16:33 -0500)]
[Arm64] SIMD morph varTypeIsStruct

6 years ago[Arm64] Fix LowerVirtualStubCall reg allocation
Steve MacLean [Wed, 22 Nov 2017 20:15:35 +0000 (15:15 -0500)]
[Arm64] Fix LowerVirtualStubCall reg allocation

6 years agoMerge pull request #15168 from BruceForstall/NoArm64Debug
Bruce Forstall [Wed, 22 Nov 2017 19:23:21 +0000 (11:23 -0800)]
Merge pull request #15168 from BruceForstall/NoArm64Debug

Stop running Windows ARM64 Debug builds (and tests) by default

6 years agoUpdate CoreClr, CoreFx, PgoData to preview1-25922-02, preview1-25922-03, master-20171...
dotnet-maestro-bot [Wed, 22 Nov 2017 18:13:15 +0000 (12:13 -0600)]
Update CoreClr, CoreFx, PgoData to preview1-25922-02, preview1-25922-03, master-20171122-0033, respectively (#15161)

6 years agoStop running Windows ARM64 Debug builds (and tests) by default
Bruce Forstall [Wed, 22 Nov 2017 17:49:06 +0000 (09:49 -0800)]
Stop running Windows ARM64 Debug builds (and tests) by default

Currently, a PR (from someone on the ARM64 whitelist) will automatically
trigger Windows ARM64 Debug builds. Due to an issue with test definitions,
this also triggers a Debug test run. This is unnecessary; Checked test
runs (and builds) should be sufficient. Save time and machine resources
by not doing Debug builds and tests by default.

6 years agoAdd string to ReadOnlySpan<char> implicit cast (#15167)
Stephen Toub [Wed, 22 Nov 2017 17:48:36 +0000 (12:48 -0500)]
Add string to ReadOnlySpan<char> implicit cast (#15167)

6 years agoCosmetic fixes after move to shared partition
Jan Kotas [Wed, 22 Nov 2017 14:17:04 +0000 (06:17 -0800)]
Cosmetic fixes after move to shared partition

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
6 years agoMerge pull request #15149 from BruceForstall/ArchiveMoreArm32
Bruce Forstall [Wed, 22 Nov 2017 16:58:36 +0000 (08:58 -0800)]
Merge pull request #15149 from BruceForstall/ArchiveMoreArm32

Archive smarty directory for arm/armlb/arm64 runs

6 years agoFix all powershell invocations in scripts, CI code and tests to include -NoProfile...
Jacek Blaszczynski [Wed, 22 Nov 2017 16:00:00 +0000 (17:00 +0100)]
Fix all powershell invocations in scripts, CI code and tests to include -NoProfile (#15164)

Code execution in several scripts and tests can be affected by powershell profile
execution at startup. Adding -NoProfile option to all powershell invocations which
may be affected by execution of profile startup code.

6 years agoAsk buildtools to also restore ILAsm (#15103)
Michal Strehovský [Wed, 22 Nov 2017 15:38:19 +0000 (16:38 +0100)]
Ask buildtools to also restore ILAsm (#15103)

We should start with having this restored before we start using it to make sure that nobody has tools downloaded/initialized without ILAsm.

6 years agoFix SSE2 and SSE4.1 APIs (#15160)
Fei Peng [Wed, 22 Nov 2017 14:40:24 +0000 (06:40 -0800)]
Fix SSE2 and SSE4.1 APIs (#15160)

6 years agoFix unused field warnings
Jan Kotas [Wed, 22 Nov 2017 04:40:14 +0000 (20:40 -0800)]
Fix unused field warnings

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
6 years ago[RyuJit][x86] Set unused flag when replace an unused parent with a child. (#15157)
Sergey Andreenko [Wed, 22 Nov 2017 07:46:50 +0000 (23:46 -0800)]
[RyuJit][x86] Set unused flag when replace an unused parent with a child. (#15157)

* add the repro

* fix the issue

* Move the test to pri1

6 years agoMove ArraySegment and a few other files to shared CoreLib partition (#15158)
Jan Kotas [Wed, 22 Nov 2017 07:27:12 +0000 (23:27 -0800)]
Move ArraySegment and a few other files to shared CoreLib partition (#15158)

6 years agoArchive smarty directory for arm/armlb/arm64 runs
Bruce Forstall [Tue, 21 Nov 2017 23:20:24 +0000 (15:20 -0800)]
Archive smarty directory for arm/armlb/arm64 runs

Currently, we only archive the *.smrt files, which is not enough to
see why a test failed, only that it did. Instead, ZIP the entire
Smarty.run.0 directory, and upload that (it's about 26MB for a
Pri-1 test run). This allows us to see the actual output of
each test, as generated by smarty.

6 years agoUpdate BuildTools, CoreClr, CoreFx, PgoData to prerelease-02221-02, preview1-25922...
dotnet-maestro-bot [Wed, 22 Nov 2017 05:40:21 +0000 (23:40 -0600)]
Update BuildTools, CoreClr, CoreFx, PgoData to prerelease-02221-02, preview1-25922-01, preview1-25921-04, master-20171121-0025, respectively (#15112)

6 years agoAdd Decimal.TryFormat span-based method (#15145)
Stephen Toub [Wed, 22 Nov 2017 05:13:37 +0000 (00:13 -0500)]
Add Decimal.TryFormat span-based method (#15145)

* Move decimal formatting to managed code

- Move decimal formatting to shared (decimal itself is still not shared)
- Delete VM's decimal formatting code

* Add Decimal.TryFormat span-based method

* Workaround ProjectN compiler bug

Apply the same attribution that's applied to the code in corert.

* Address PR feedback

* Temporarily undo explicit layout change

Seeing whether it's the cause of these failures on Unix (Ubuntu, CentOS, and OSX):
```
JIT.Directed.coverage.oldtests.lclfldadd_cs_r.lclfldadd_cs_r
JIT.Directed.perffix.primitivevt.mixed1_cs_ro.mixed1_cs_ro
JIT.Methodical.fp.exgen.1000w1d_cs_r.1000w1d_cs_r
JIT.Methodical.fp.exgen.1000w1d_cs_ro.1000w1d_cs_ro
JIT.Methodical.fp.exgen.1000w1d_cs_do.1000w1d_cs_do
JIT.Methodical.fp.exgen.1000w1d_cs_d.1000w1d_cs_d
JIT.Methodical.fp.exgen.10w5d_cs_d.10w5d_cs_d
JIT.Methodical.fp.exgen.10w5d_cs_do.10w5d_cs_do
JIT.Methodical.fp.exgen.10w5d_cs_ro.10w5d_cs_ro
JIT.Methodical.fp.exgen.200w1d-02_cs_do.200w1d-02_cs_do
JIT.Methodical.fp.exgen.10w5d_cs_r.10w5d_cs_r
JIT.Methodical.fp.exgen.200w1d-02_cs_ro.200w1d-02_cs_ro
JIT.Directed.perffix.primitivevt.mixed1_cs_do.mixed1_cs_do
```

Example failure:
```
FAILED   - JIT/Methodical/fp/exgen/200w1d-02_cs_ro/200w1d-02_cs_ro.sh
               BEGIN EXECUTION
               /mnt/j/workspace/dotnet_coreclr/master/checked_ubuntu_tst_prtest/bin/tests/Windows_NT.x64.Checked/Tests/coreoverlay/corerun 200w1d-02_cs_ro.exe

               Unhandled Exception: System.OverflowException: Value was either too large or too small for an Int32.
                  at System.Convert.ThrowInt32OverflowException()
                  at System.Convert.ToInt32(Int64 value)
                  at testout1.Func_0()
                  at testout1.Main()
               ./200w1d-02_cs_ro.sh: line 243: 101339 Aborted                 (core dumped) $_DebuggerFullPath "$CORE_ROOT/corerun" $ExePath $CLRTestExecutionArguments
               Expected: 100
               Actual: 134
               END EXECUTION - FAILED
```

6 years agoformat spmi source (#15144)
Sergey Andreenko [Wed, 22 Nov 2017 02:20:16 +0000 (18:20 -0800)]
format spmi source (#15144)

6 years agoDelete unused leftovers from binary serialization (#15140)
Jan Kotas [Tue, 21 Nov 2017 22:44:58 +0000 (14:44 -0800)]
Delete unused leftovers from binary serialization (#15140)

6 years agoMerge pull request dotnet/corert#4971 from dotnet/nmirror
Michal Strehovský [Tue, 21 Nov 2017 18:26:57 +0000 (19:26 +0100)]
Merge pull request dotnet/corert#4971 from dotnet/nmirror

Merge nmirror to master

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
6 years agoMove SafeBuffer and a few other files to shared CoreLib partition (#15141)
Jan Kotas [Tue, 21 Nov 2017 19:20:00 +0000 (11:20 -0800)]
Move SafeBuffer and a few other files to shared CoreLib partition (#15141)