platform/upstream/coreclr.git
7 years agoUpdate with corefx PR changes
Ian Hays [Fri, 18 Nov 2016 18:50:17 +0000 (10:50 -0800)]
Update with corefx PR changes

7 years agoAdd Unix FileStream Lock/Unlock
Ian Hays [Thu, 17 Nov 2016 23:36:31 +0000 (15:36 -0800)]
Add Unix FileStream Lock/Unlock

Implements FileStream Lock/Unlock by calling the SystemNative functions for fcntl F_SETLK

7 years agoUse CoreFX Path code (#8132)
Jeremy Kuhne [Thu, 17 Nov 2016 21:51:43 +0000 (13:51 -0800)]
Use CoreFX Path code (#8132)

* Use CoreFX Path code

This is to address consistency and perf issues by moving the Path
code down to CoreCLR. It is more of an issue with Windows as
normalization requires complicated logic and costly platform calls.

* Delete unused files and avoid Unix crypto lib

* Address feedback, fix bug

Remove Unix crypto files and ifdef out usages completely.
Fix issue with static initialization of PathInternal.

* Use TriState to initialize case sensitivity

7 years agoInliner: updates to RandomPolicy (#8128)
Andy Ayers [Thu, 17 Nov 2016 18:52:06 +0000 (10:52 -0800)]
Inliner: updates to RandomPolicy (#8128)

Fix issues with RandomPolicy setup in release builds with -DINLINE_DATA.

Reparent RandomPolicy on top of DiscretionaryPolicy to enable inline
data dumps from random inline runs. Remove some now-unneeded overrides.

Add a full dump mode to JitInlineDumpData that reports the inliner-visible
data for all inlines, as opposed to inliner-visible and post-inline
data for just the most recent inline. Small mods to the dumper code to
adjust comma placement for this new mode.

Have the RandomPolicy make the full set of profitability observations
for each accepted inline so they can be dumped.

7 years agoMerge pull request #8138 from sivarv/rmwFix
Sivarv [Thu, 17 Nov 2016 18:19:11 +0000 (10:19 -0800)]
Merge pull request #8138 from sivarv/rmwFix

Do not generate "inc/dec [mem]" when asked to generate debuggable code.

7 years agoTweak params of Console
Dan Moseley [Thu, 17 Nov 2016 17:27:09 +0000 (09:27 -0800)]
Tweak params of Console

This isn't the implementation of Console we ship, apparently it's only here for CLR tests, or maybe shouldn't be at all. Just tweaking the param names to match what we ship so it doesn't show up in the diffs.

7 years agoMerge pull request #8151 from adiaaida/enableTests
Michelle McDaniel [Thu, 17 Nov 2016 16:36:21 +0000 (08:36 -0800)]
Merge pull request #8151 from adiaaida/enableTests

Remove test exclusions for tests that now pass

7 years agoAdd RuntimeHelpers.Equals
Dan Moseley [Thu, 17 Nov 2016 04:21:12 +0000 (20:21 -0800)]
Add RuntimeHelpers.Equals

Fix dotnet/corefx#13692

We added this to the ref in 19fa781 but it was not present in the impl. The tools didn't flag this perhaps because Equals is available on Object, although since this is a new it really ought to know it wasn't referring to the Object one.

7 years agoAdd RuntimeHelpers.Equals
danmosemsft [Thu, 17 Nov 2016 01:36:03 +0000 (17:36 -0800)]
Add RuntimeHelpers.Equals

7 years agoTweak params
danmosemsft [Thu, 17 Nov 2016 01:08:56 +0000 (17:08 -0800)]
Tweak params

7 years agoAdd the missing implementation of IdnMapping.GetAscii (#8149)
Tarek Mahmoud Sayed [Thu, 17 Nov 2016 01:08:45 +0000 (17:08 -0800)]
Add the missing implementation of IdnMapping.GetAscii (#8149)

* Add the missing implementation of IdnMapping.GetAsccii

we should have this implementation in place but no idea why got removed in the first place

* Use nameof

7 years agoRemove test exclusions for tests that now pass
Michelle McDaniel [Thu, 17 Nov 2016 00:04:40 +0000 (16:04 -0800)]
Remove test exclusions for tests that now pass

This change removes tests that have been fixed for x86 RyuJIT. It also
updates the Issues for the remaining tests with additional details.

7 years agoMerge pull request #8146 from jashook/test_update_arm64
Jarret Shook [Wed, 16 Nov 2016 23:59:57 +0000 (15:59 -0800)]
Merge pull request #8146 from jashook/test_update_arm64

Update arm64 tests used by the CI

7 years agoMerge pull request #8147 from rahku/reflection
Rahul Kumar [Wed, 16 Nov 2016 23:42:56 +0000 (15:42 -0800)]
Merge pull request #8147 from rahku/reflection

Expose MethodBase.IsSecuritySafeCritical

7 years agoDon't generate inc/dec [mem] while generating debuggable code.
sivarv [Wed, 16 Nov 2016 22:20:10 +0000 (14:20 -0800)]
Don't generate inc/dec [mem] while generating debuggable code.

7 years agoExpose MethodBase.IsSecuritySafeCritical
Rahul Kumar [Wed, 16 Nov 2016 21:38:38 +0000 (13:38 -0800)]
Expose MethodBase.IsSecuritySafeCritical

7 years agoUpdate IssuesFeedbackEngagement.md
Dan Moseley [Wed, 16 Nov 2016 21:13:22 +0000 (13:13 -0800)]
Update IssuesFeedbackEngagement.md

7 years agoExpose a member of StrongNameKeyPair, fix bug in SynchronizationContext (#8142)
Koundinya Veluri [Wed, 16 Nov 2016 20:55:53 +0000 (12:55 -0800)]
Expose a member of StrongNameKeyPair, fix bug in SynchronizationContext (#8142)

Related to dotnet/corefx#11636
Related to dotnet/corefx#11808

7 years agoFixed string Join method
Dan Moseley [Wed, 16 Nov 2016 20:55:45 +0000 (12:55 -0800)]
Fixed string Join method

Fixed string Join(string separator, params object[] values) method.
Calling string.Join(",", null, 1, 2, 3); return empty string but should ",1,2,3".

7 years agoUpdate arm64 tests used by the CI.
jashook [Wed, 16 Nov 2016 19:00:30 +0000 (11:00 -0800)]
Update arm64 tests used by the CI.

7 years agoMerge pull request #8144 from adiaaida/formatArtifacts
Michelle McDaniel [Wed, 16 Nov 2016 17:48:23 +0000 (09:48 -0800)]
Merge pull request #8144 from adiaaida/formatArtifacts

Fix the path to build artifacts for formatting

7 years agoFix the path to build artifacts for formatting
Michelle McDaniel [Wed, 16 Nov 2016 17:45:49 +0000 (09:45 -0800)]
Fix the path to build artifacts for formatting

7 years agoEnable GCToOSInterface to be defined on the GC side of the GC interface (#8121)
Sean Gillespie [Wed, 16 Nov 2016 17:34:57 +0000 (09:34 -0800)]
Enable GCToOSInterface to be defined on the GC side of the GC interface (#8121)

* Re-introduce changes lost in a merge conflict

* Enable GCToOSInterface to be defined behind the GC interface
when building the GC in standalone mode. Provide a skeleton Windows
implementation and the framework for a Unix implementation.

* Address code review feedback

7 years agoFull support of idn mapping (#8134)
Tarek Mahmoud Sayed [Wed, 16 Nov 2016 01:35:36 +0000 (17:35 -0800)]
Full support of idn mapping (#8134)

* Enable full implementation of IdnMapping in corelib

* Add missing resources

7 years agoMerge pull request #8135 from pgavlin/fixExtendPtrVN
Pat Gavlin [Wed, 16 Nov 2016 01:00:10 +0000 (17:00 -0800)]
Merge pull request #8135 from pgavlin/fixExtendPtrVN

Fix value numbering for FieldSeqStore::NotAField.

7 years agoFormat code.
Pat Gavlin [Wed, 16 Nov 2016 00:19:57 +0000 (16:19 -0800)]
Format code.

7 years agoChanging JIT perf test names to fix how they are organized on BenchView (#8083)
jorive [Tue, 15 Nov 2016 23:25:52 +0000 (15:25 -0800)]
Changing JIT perf test names to fix how they are organized on BenchView (#8083)

* Changing JIT performance tests' names to fix how tests are organized on BenchView.

* Adding changes based on PR suggestions.
- Add double quotes on cmd script
- Keep name casing consistent for the Benchstone benchmarks.

* Updating datacontractxml value to match new class name.

* Removing an extra / on the xmlns string.

* Making sure we are getting latest BenchView tools.
- Changed where BenchView tools are installed to (from C:\tools to %WORKSPACE%)
- Check if the tools already exist, if so, delete them and download them again.

7 years agoMerge pull request #8110 from BruceForstall/FixLIRCallArgDumping
Bruce Forstall [Tue, 15 Nov 2016 23:25:05 +0000 (15:25 -0800)]
Merge pull request #8110 from BruceForstall/FixLIRCallArgDumping

Fix the arg name/number dumping for call args in LIR

7 years agoFix value numbering for FieldSeqStore::NotAField.
Pat Gavlin [Tue, 15 Nov 2016 22:28:30 +0000 (14:28 -0800)]
Fix value numbering for FieldSeqStore::NotAField.

Before this change, value numbering produced the same value number for
each occurrence of `FieldSeqStore::NotAField`. This semantics is not
logically consistent with the semantics of `NotAField`, however:
`NotAField` indicates that we cannot reason about the address expression
that it annotates, therefore we cannot reason about the value stored at
the corresponding location. A recent change to admit the VN for
`NotAField` in `ExtendPtrVN` exposed SBCG due to this mismatch in
semantics: distinct array elements were assigned the same value number
because each had the same base coupled with the `NotAField` VN.

This change revises the representation of `NotAField` during value
numbering: instead of reusing the same value number for each
occurrence of `NotAField`, each occurrence is instead assigned a new,
unique value number. These value numbers are represented using a new
chunk attribute to retain the ability to decide whether or not a value
number represents `NotAField` without the use of a more heavyweight map
(e.g. a `VNMap`).

Fixes #8133.

7 years agoMerge pull request #8125 from stephentoub/divrem_perf
Stephen Toub [Tue, 15 Nov 2016 22:22:53 +0000 (17:22 -0500)]
Merge pull request #8125 from stephentoub/divrem_perf

Improve Math.DivRem performance

7 years agoExpose members of ExecutionContext and AsyncFlowControl (#8107)
Koundinya Veluri [Tue, 15 Nov 2016 21:08:41 +0000 (13:08 -0800)]
Expose members of ExecutionContext and AsyncFlowControl (#8107)

Expose members of ExecutionContext and AsyncFlowControl

- Fix ExecutionContext.Capture and AsyncFlowControl.Undo when flow is suppressed
- Expose deserialization constructor for ExecutionContext

7 years agoMerge pull request #8131 from JohnChen0/xmm
John Chen [Tue, 15 Nov 2016 20:44:10 +0000 (12:44 -0800)]
Merge pull request #8131 from JohnChen0/xmm

Fix XMM register count in CONTEXT_SetThreadContextOnPort in PAL

7 years agoMerge pull request #8124 from martijnhoekstra/doc-aggex
Dan Moseley [Tue, 15 Nov 2016 20:00:13 +0000 (12:00 -0800)]
Merge pull request #8124 from martijnhoekstra/doc-aggex

fix grammar for AggregateException.Flatten

7 years agoFix XMM register count in CONTEXT_SetThreadContextOnPort in PAL
John Chen (CLR) [Tue, 15 Nov 2016 19:09:20 +0000 (11:09 -0800)]
Fix XMM register count in CONTEXT_SetThreadContextOnPort in PAL

7 years agoMerge pull request #8127 from jashook/arm64_post_build_script
Jarret Shook [Tue, 15 Nov 2016 18:10:11 +0000 (10:10 -0800)]
Merge pull request #8127 from jashook/arm64_post_build_script

Change over from the old arm64 scripting.

7 years agoChange over from the old ar64 scripting.
jashook [Tue, 15 Nov 2016 01:48:56 +0000 (17:48 -0800)]
Change over from the old ar64 scripting.

This change moves away from hosting all of scripts on the Z:\ drive.
The share that used to be shared between the x64 machines and the
arm64 devices. It removes all the old scripting for one python script
arm64_post_build.py, which is responsible for setup of dotnet and
launching
the x64_client.

7 years agoMerge pull request #8120 from adiaaida/fixDebuggerVarargs
Michelle McDaniel [Tue, 15 Nov 2016 15:59:56 +0000 (07:59 -0800)]
Merge pull request #8120 from adiaaida/fixDebuggerVarargs

Add special handling of varargs for x86 debugger

7 years agoFix crash in FunctionMemberPtrArrayHolder destructor (#8113)
Igor Kulaychuk [Tue, 15 Nov 2016 14:55:53 +0000 (17:55 +0300)]
Fix crash in FunctionMemberPtrArrayHolder destructor (#8113)

Some elements in FunctionMember array might not be initialized
and contain garbage. This leads to crash when elements are being deleted.

Move array allocation inside FunctionMemberPtrArrayHolder class
and initialize all array elements to nullptr.

7 years agoclean build-roofs and add lldb option (#8123)
SaeHie Park [Tue, 15 Nov 2016 14:49:02 +0000 (23:49 +0900)]
clean build-roofs and add lldb option (#8123)

- clean unused __MachineTriple
- add indents to case
- add lld 3.6 or 3.8 as option

7 years agoUse Math.DivRem in another place in mscorlib
Stephen Toub [Tue, 15 Nov 2016 14:36:38 +0000 (09:36 -0500)]
Use Math.DivRem in another place in mscorlib

Went through all uses of % looking for places DivRem could be used.  This looks like it's the only one of note.

7 years agoImprove Math.DivRem performance
Stephen Toub [Tue, 15 Nov 2016 12:28:20 +0000 (07:28 -0500)]
Improve Math.DivRem performance

Until the JIT is able to eliminate one of the two idiv operations, using a multiplication and subtraction is measurably faster than an extra division.

7 years agofix grammar for AggregateException.Flatten
Martijn Hoekstra [Tue, 15 Nov 2016 12:24:05 +0000 (13:24 +0100)]
fix grammar for AggregateException.Flatten

The old phrasing wasn't gramatically correct. It's somewhat
difficult to find a concise summary

7 years agoReduce variable scope (#8021)
Dan Moseley [Mon, 14 Nov 2016 23:47:55 +0000 (15:47 -0800)]
Reduce variable scope (#8021)

7 years agoMerge pull request #8073 from dotnet/enablebinclash
chcosta [Mon, 14 Nov 2016 23:17:54 +0000 (15:17 -0800)]
Merge pull request #8073 from dotnet/enablebinclash

Enable binclash logger

7 years agoMerge pull request #8086 from pgavlin/VSO278523
Pat Gavlin [Mon, 14 Nov 2016 23:15:34 +0000 (15:15 -0800)]
Merge pull request #8086 from pgavlin/VSO278523

Admit more dest addresses in block assign value-numbering.

7 years agoAdmit more dest addresses in block assign value-numbering.
Pat Gavlin [Fri, 11 Nov 2016 18:20:59 +0000 (10:20 -0800)]
Admit more dest addresses in block assign value-numbering.

Internal testing revealed an assertion when computing the value number
for block assignments: the VN framework expected any block assignments
to a tracked lclVar to have a destination address of the form
`(addr (lclVar))` or `(addr (lclFld))`. However, the check that it
uses to determine whether or not a block assignment targets a lclVar
also admits addresses formed by some combination of adds of constants
to these patterns (e.g. `(add (const 4) (add (addr lclVar) (const 4)))`.

This fix admits these additional patterns in value numbering by allowing
`ExtendPtrVN(GenTree*, GenTree*)` to supply `NotAField` to
`ExtendPtrVN(GenTree*, FieldSeqNode*)`.

7 years agoAdd special handling of varargs for x86 debugger
Michelle McDaniel [Mon, 14 Nov 2016 21:44:06 +0000 (13:44 -0800)]
Add special handling of varargs for x86 debugger

On x86, stack arguments must be accessed via the varargs cookie for
varargs. Since the functions would be identical, this change moves the
code from codegenlinear to codegencommon to fix vararg argument
handling in the debugger.

Fixes VSO 284774.

7 years agoFix the arg name/number dumping for call args in LIR
Bruce Forstall [Mon, 14 Nov 2016 03:17:36 +0000 (19:17 -0800)]
Fix the arg name/number dumping for call args in LIR

Use the arg number in the arg info table. Before this, I saw cases
where the args were named: arg0, arg1, arg1, arg3, instead of:
arg0, arg2, arg1, arg3, for example.

7 years agoMerge pull request #8111 from BruceForstall/FixTestNewlines
Bruce Forstall [Mon, 14 Nov 2016 21:44:06 +0000 (13:44 -0800)]
Merge pull request #8111 from BruceForstall/FixTestNewlines

Don't generate explicit newlines in SIMD tests

7 years agoMerge pull request #8115 from chcosta/updatebuildtools
chcosta [Mon, 14 Nov 2016 21:40:51 +0000 (13:40 -0800)]
Merge pull request #8115 from chcosta/updatebuildtools

Update buildtools to version 01008-01

7 years agoMerge pull request #8031 from pgavlin/VSO283795
Pat Gavlin [Mon, 14 Nov 2016 21:10:52 +0000 (13:10 -0800)]
Merge pull request #8031 from pgavlin/VSO283795

Do not fold `(x + null)` in certain cases.

7 years agoMerge pull request #8101 from sivarv/rmwOpt
Sivarv [Mon, 14 Nov 2016 19:07:36 +0000 (11:07 -0800)]
Merge pull request #8101 from sivarv/rmwOpt

Generate "inc/dec [mem]" instead of "add/sub [mem], 1" for Read-Modify-Write (RMW) operations.

7 years agoFix test exclusions.
Pat Gavlin [Mon, 14 Nov 2016 19:02:12 +0000 (11:02 -0800)]
Fix test exclusions.

The new regression test should only be disabled for builds that use the
legacy backend.

7 years agoMerge pull request #8100 from rahku/reflection
Rahul Kumar [Mon, 14 Nov 2016 18:17:28 +0000 (10:17 -0800)]
Merge pull request #8100 from rahku/reflection

Expose Assembly::GetFile(s) apis

7 years agoUpdate buildtools to version 01008-01
Christopher Costa [Mon, 14 Nov 2016 16:40:16 +0000 (08:40 -0800)]
Update buildtools to version 01008-01

7 years agoFixed string Join method
Alexander Radchenko [Mon, 14 Nov 2016 15:58:58 +0000 (22:58 +0700)]
Fixed string Join method

Fixed string Join(string separator, params object[] values) method.
Calling string.Join(",", null, 1, 2, 3); return empty string but should ",1,2,3".

7 years agoMerge pull request #8108 from gkhanna79/Arm32Test
Gaurav Khanna [Mon, 14 Nov 2016 05:21:07 +0000 (21:21 -0800)]
Merge pull request #8108 from gkhanna79/Arm32Test

Enable WinArm32 P1 Test Build

7 years agoDon't generate explicit newlines in SIMD tests
Bruce Forstall [Mon, 14 Nov 2016 03:20:55 +0000 (19:20 -0800)]
Don't generate explicit newlines in SIMD tests

Use Console.WriteLine() instead.

7 years agoEnable WinArm32 P1 Test Build
Gaurav Khanna [Sun, 13 Nov 2016 23:47:11 +0000 (15:47 -0800)]
Enable WinArm32 P1 Test Build

7 years agoInliner: ensure all statements have an inline context (#8064)
Andy Ayers [Sun, 13 Nov 2016 22:15:14 +0000 (14:15 -0800)]
Inliner: ensure all statements have an inline context (#8064)

* JIT: Retype fgMorphStmt and related variables

There are quite a few variables typed as `GenTreePtr` that must point
at statements -- for instance `fgMorphStmt`. Retype these as `GenTreeStmt*`.
Cleanup dereferences which no longer require a `gtStmt`.

* Inliner: ensure all statements have an inline context

We would previously allow some statements inserted by the inliner
"between" the caller and callee to have a null inline context. This
lack of context could lead to incomplete or misleading inline trees
if the inserted code included calls. In particular some failed inlines
might not show up in the trees.

Set the context for these inserted statements to be the context for the
call being inlined (thus they logically "belong" to the caller).

7 years agoAdd implementation for AssemblyName::EscapedCodeBase (#8072)
Rahul Kumar [Sun, 13 Nov 2016 17:34:58 +0000 (09:34 -0800)]
Add implementation for AssemblyName::EscapedCodeBase (#8072)

7 years agoRemove conflicting proj files (#8090)
John Chen [Sun, 13 Nov 2016 00:20:14 +0000 (16:20 -0800)]
Remove conflicting proj files (#8090)

Some test cases have both .ilproj and .csproj files, resulting
in a race condition during build. Removing the .csproj files,
as the MSIL versions appear to be the intended ones.

7 years agoMerge pull request #8085 from stephentoub/daylight_alloc
Stephen Toub [Sat, 12 Nov 2016 14:19:33 +0000 (09:19 -0500)]
Merge pull request #8085 from stephentoub/daylight_alloc

Avoid allocations in DateTime.Now

7 years agoAvoid allocations in DateTime.Now
Stephen Toub [Sat, 12 Nov 2016 12:51:08 +0000 (07:51 -0500)]
Avoid allocations in DateTime.Now

Every call to DateTime.Now ends up allocating a DaylightTime as it computes the offset from UtcNow.  DaylightTime is just a plain old object that stores two DateTimes and a Timespan.  Ideally we could just change it to be a struct, but it's public.  Instead, this commit adds an internal DaylightTimeStruct, which is the same as DaylightTime except as a value type, and changes some of the internal uses of DaylightTime to instead use DaylightTime.  As a result, DateTime.Now is allocation-free.

7 years agoInliner: updates to random inlining (#8088)
Andy Ayers [Sat, 12 Nov 2016 03:52:24 +0000 (19:52 -0800)]
Inliner: updates to random inlining (#8088)

Cache the random state on the InlineStrategy instead of on the compiler
instance so that the state is reinitialized and private to each jit request.
That way the random policy evaluations made compiling one method won't
alter the evaluations for subsequent methods. This should make it somewhat
easier to do A/B comparisons under jit stress when changing the jit.

Make it possible to enable the RandomPolicy outside of stress. This may
prove useful in various randomized inline performance studies or as
a simple stress mode on its own.

Random state seed is built from an external seed value (via JitStress or
JitInlinePolicyRandom) and an internal seed value (method hash), so that
random sequences potentially differ for each method but are deterministic
across runs and changes to the jit.

7 years agoRemove redundant statement (#7900)
Dmitry-Me [Sat, 12 Nov 2016 00:54:37 +0000 (03:54 +0300)]
Remove redundant statement (#7900)

7 years agoGenerate inc/dec [mem] instead of add/sub [mem], 1 for read-modify-write operations.
sivarv [Sat, 12 Nov 2016 00:41:16 +0000 (16:41 -0800)]
Generate inc/dec [mem] instead of add/sub [mem], 1 for read-modify-write operations.

7 years agoEnable the rest if TimeZoneInfo APIs (#8096)
Tarek Mahmoud Sayed [Fri, 11 Nov 2016 23:46:47 +0000 (15:46 -0800)]
Enable the rest if TimeZoneInfo APIs (#8096)

7 years agoExpose Assembly::GetFile(s) apis
Rahul Kumar [Fri, 11 Nov 2016 20:10:16 +0000 (12:10 -0800)]
Expose Assembly::GetFile(s) apis

7 years agoRename gitmirrorfile
Matt Ellis [Fri, 11 Nov 2016 22:20:40 +0000 (14:20 -0800)]
Rename gitmirrorfile

7 years agoMerge pull request #8087 from ellismg/selective-mirror-sketch
Matt Ellis [Fri, 11 Nov 2016 21:52:11 +0000 (13:52 -0800)]
Merge pull request #8087 from ellismg/selective-mirror-sketch

Update .gitmirror metadata

7 years agoMerge pull request #8001 from JosephTremoulet/UnrollSimd
Joseph Tremoulet [Fri, 11 Nov 2016 19:37:45 +0000 (14:37 -0500)]
Merge pull request #8001 from JosephTremoulet/UnrollSimd

Enable unrolling of SIMD_LIMIT loops

7 years agoEnable unrolling of SIMD_LIMIT loops
Joseph Tremoulet [Fri, 14 Oct 2016 18:53:52 +0000 (14:53 -0400)]
Enable unrolling of SIMD_LIMIT loops

Since the Vector<T> abstraction has a `Count` that is not a
C#-compile-time constant, it encourages use of iteration to
search/aggregate individual elements using symbolic indexing, which in
turn leads to codegen that spills the vector to memory for each element
access, and performs bounds checks for each access.  These loops will have
low trip counts that are jit-compile-time constant, and constant indexing
into Vector<T> allows more efficient register-to-register sequences and
bounds-check elision.  This change enables RyuJit's loop unroller when
such a loop is discovered, and increases the size threshold to target
optimizing such loops much more aggressively than the unroller's previous
incarnation.

Add a test with a motivating loop to the Performance/CodeQuality/SIMD
suite.

Closes #7843.

7 years agoDetect overflow in unroller cost computation
Joseph Tremoulet [Thu, 10 Nov 2016 21:37:05 +0000 (16:37 -0500)]
Detect overflow in unroller cost computation

Make sure to avoid trying to unroll cases so large as to overlow the cost.

7 years agoAllow unrolling loops with multiple branches
Joseph Tremoulet [Fri, 14 Oct 2016 18:47:20 +0000 (14:47 -0400)]
Allow unrolling loops with multiple branches

Lift both the single-exit restriction and the no-internal-branching
restriction.  Share some utilities with the loop cloner to facilitate
this (particularly `CloneBlockState` and `fgUpdateChangedFlowGraph`).

7 years agoUnroll loops in inner-to-outer order
Joseph Tremoulet [Wed, 19 Oct 2016 18:21:07 +0000 (14:21 -0400)]
Unroll loops in inner-to-outer order

There's no need for fixpoint iteration; the loop indices are a pre-order,
so walking them in reverse order will visit inner loops before outer ones.

7 years agoStop expecting ASG_ operators in loop unroller
Joseph Tremoulet [Fri, 14 Oct 2016 18:31:45 +0000 (14:31 -0400)]
Stop expecting ASG_ operators in loop unroller

Expect instead to see arithmetic nodes that are arguments of separate
assign nodes.

7 years agoMerge pull request #7788 from AndyAyersMS/InlinePins
Andy Ayers [Fri, 11 Nov 2016 19:24:05 +0000 (11:24 -0800)]
Merge pull request #7788 from AndyAyersMS/InlinePins

Inliner: support inlining of methods with pinned locals

7 years agoUpdate .gitmirror metadata
Matt Ellis [Thu, 10 Nov 2016 01:27:35 +0000 (17:27 -0800)]
Update .gitmirror metadata

We no longer have the need to mirror anything into TFS (since we do all
work in the open now) except for the JIT and SuperPMI which want to
continue to use some validation that we can only do out of TFS.

7 years agoMerge pull request #8042 from kouvel/Api
Koundinya Veluri [Fri, 11 Nov 2016 10:25:31 +0000 (02:25 -0800)]
Merge pull request #8042 from kouvel/Api

Expose some things for ns2.0

7 years agoExpose some things for ns2.0
Koundinya Veluri [Mon, 7 Nov 2016 03:25:29 +0000 (19:25 -0800)]
Expose some things for ns2.0

Mostly:
- Exposed flow-related methods on `ExecutionContext`
- Enabled and exposed `SynchronizationContext` wait overriding

Realted issues:
- dotnet/corefx#11638
- dotnet/corefx#11633
- dotnet/corefx#11635
- dotnet/corefx#11636
- dotnet/corefx#13484

7 years agoSave registers xmm8..15 on Mac OSX (#8078)
John Chen [Fri, 11 Nov 2016 01:49:02 +0000 (17:49 -0800)]
Save registers xmm8..15 on Mac OSX (#8078)

On x64, JIT can generate code that uses all 16 xmm registers.
However, on Mac OSX, we currently only save 8 of these registers.
Thus after a context save/restore, xmm8 through xmm15 are
corrupted. This commit fixes the code to save all 16 xmm
registers. It resolves issue #2266.

7 years agoEnable time zone for netstandard1.7 (#8074)
Tarek Mahmoud Sayed [Fri, 11 Nov 2016 00:58:28 +0000 (16:58 -0800)]
Enable time zone for netstandard1.7 (#8074)

* Expose and reimplement TimeZone class

The change is exposing the missing TimeZone APIs from corelib so can be useded in netstandard 1.7.
The change here is re-implementing CurrentTimeZone class to be simpler and also to make it work for Linux platforms. we used TimeZoneInfo class to reimplement it and also cleaned up all used internal calls as not needed anymore.

* Small delta fix

* Fix the code according to the review comments

7 years agoSOS: Automatically find a managed thread with an exception on Linux/OSX core dumps...
Mike McLaughlin [Thu, 10 Nov 2016 23:44:11 +0000 (15:44 -0800)]
SOS: Automatically find a managed thread with an exception on Linux/OSX core dumps (#8075)

SOS: Automatically find a managed thread with an exception on Linux/OSX core dumps

To be used in the debugger tests repo for SOS dump testing on Linux/OSX.

Added the "clrthreads -managedexception" option to switch to the first managed thread
that has thrown an exception.

Issue #6518

7 years agoFormat the code and disable the regression test.
Pat Gavlin [Thu, 10 Nov 2016 22:58:32 +0000 (14:58 -0800)]
Format the code and disable the regression test.

The regression test currently fails due to issue #8077.

7 years agoMerge pull request #8056 from adiaaida/updateFormattingJobPatch
Michelle McDaniel [Thu, 10 Nov 2016 22:52:32 +0000 (14:52 -0800)]
Merge pull request #8056 from adiaaida/updateFormattingJobPatch

Create patches in formatting job

7 years agoREADME.md is the idiomatic approach for github (#8076)
Dan Moseley [Thu, 10 Nov 2016 22:35:55 +0000 (14:35 -0800)]
README.md is the idiomatic approach for github (#8076)

7 years agoCreate patches in formatting job
Michelle McDaniel [Tue, 8 Nov 2016 21:37:20 +0000 (13:37 -0800)]
Create patches in formatting job

In the formatting job, if there are formatting errors, we will run the
formatter in --fix mode and generate a patch which will be uploaded to
azure storage.

7 years agoMerge pull request #8046 from rahku/_resolveAssembly
Rahul Kumar [Thu, 10 Nov 2016 21:46:29 +0000 (13:46 -0800)]
Merge pull request #8046 from rahku/_resolveAssembly

Expose AppDomain::AssemblyResolve

7 years agoEnable binclash logger
Christopher Costa [Thu, 10 Nov 2016 19:20:50 +0000 (11:20 -0800)]
Enable binclash logger

7 years agoExpose AppDomain::AssemblyResolve
Rahul Kumar [Tue, 8 Nov 2016 19:13:33 +0000 (11:13 -0800)]
Expose AppDomain::AssemblyResolve

7 years agoUpdate IntrospectionExtensions.cs (#8029)
Greg G [Thu, 10 Nov 2016 15:03:24 +0000 (16:03 +0100)]
Update IntrospectionExtensions.cs (#8029)

1. A few tweaks were made to follow the [Coding Style](https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md).
2. A `null` check was done after doing a simple cast (`(IReflectableType)type`), but `rcType` cannot be `null` (it could only be `null` if a [`as`](https://msdn.microsoft.com/en-us/library/cc488006.aspx) cast was done).

7 years agoBinaryReader: Use cached default encoding instance (#8017)
Justin Van Patten [Thu, 10 Nov 2016 14:58:33 +0000 (06:58 -0800)]
BinaryReader: Use cached default encoding instance (#8017)

A new instance of UTF8Encoding used to be created every time
BinaryReader.ctor(Stream) was called, which created an instance of
UTF8Encoding that has no preamble. However, BinaryReader does not use
the preamble at all, so it doesn't matter if the encoding has a preamble
or not. Thus, the cached Encoding.UTF8 instance can be used (which has a
preamble).

7 years agoUpdate CoreClr, CoreFx to beta-24709-03, beta-24710-01, respectively (#7922)
dotnet bot [Thu, 10 Nov 2016 07:52:57 +0000 (23:52 -0800)]
Update CoreClr, CoreFx to beta-24709-03, beta-24710-01, respectively (#7922)

7 years agoRemove unneeded field from BinaryWriter (#8015)
Justin Van Patten [Thu, 10 Nov 2016 04:08:45 +0000 (20:08 -0800)]
Remove unneeded field from BinaryWriter (#8015)

The field only exists in .NET Framework for serialization compat. It
isn't needed on CoreCLR.

7 years agoStreamWriter/BinaryWriter: Use same cached encoding instance (#8018)
Justin Van Patten [Thu, 10 Nov 2016 04:08:00 +0000 (20:08 -0800)]
StreamWriter/BinaryWriter: Use same cached encoding instance (#8018)

StreamWriter lazily allocates and caches a UTF8NoBOM instance, while
BinaryWriter always allocates new instances. Instead, the same cached
instance can be shared between both writers.

7 years agoAvoid repeated delegate allocations in FileStream.FlushAsync (#8048)
Justin Van Patten [Thu, 10 Nov 2016 04:05:11 +0000 (20:05 -0800)]
Avoid repeated delegate allocations in FileStream.FlushAsync (#8048)

Avoid the `Action<object>` allocation on each invocation of
`FileStream.FlushAsync` on Windows. This change makes the Win32
implementation match Unix.

7 years agoARM-CI : Fix segmentation faults on running tests (#8019)
Sujin Kim [Thu, 10 Nov 2016 04:00:22 +0000 (13:00 +0900)]
ARM-CI : Fix segmentation faults on running tests (#8019)

* ARM-CI : Fix segmentation faults on running tests

To make sure the reason of test failure ramdomly( #6298 ),
We checked segmentation faults occurred from mounted rootfs and the multi thread processing.

So I changed root-fs to the archived root-fs and run tests with --sequential option.

PS. The location of root-fs folder was changed from '/opt' wrote on reverted commit(#7991) to '/mnt' for resolving no space issue.

7 years agoRemove unnecessary newline in WriteLine (#8047)
Bruce Forstall [Thu, 10 Nov 2016 03:58:31 +0000 (19:58 -0800)]
Remove unnecessary newline in WriteLine (#8047)

7 years agoAdd missing ref emit enum members for ns2.0 (#8062)
Alex Perovich [Thu, 10 Nov 2016 03:57:13 +0000 (19:57 -0800)]
Add missing ref emit enum members for ns2.0 (#8062)