platform/upstream/dotnet/runtime.git
8 years agoMerge pull request dotnet/coreclr#7187 from adiaaida/rotate
Michelle McDaniel [Wed, 14 Sep 2016 18:20:01 +0000 (11:20 -0700)]
Merge pull request dotnet/coreclr#7187 from adiaaida/rotate

Remove NYI for x86 long rotate

Commit migrated from https://github.com/dotnet/coreclr/commit/fb4574cfd73af5eb123c0f8f06ba1f7bb54130cc

8 years agoARM/Linux: Add codename xenial (dotnet/coreclr#7158)
SaeHie Park [Wed, 14 Sep 2016 18:00:54 +0000 (03:00 +0900)]
ARM/Linux: Add codename xenial (dotnet/coreclr#7158)

Add Ubuntu 16.04 code name Xenial to cross rootfs option

Commit migrated from https://github.com/dotnet/coreclr/commit/d5acaa816698ce80cc8f234b88a4b13199b2296e

8 years agoRemove NYI for x86 long rotate
Michelle McDaniel [Wed, 14 Sep 2016 16:39:16 +0000 (09:39 -0700)]
Remove NYI for x86 long rotate

For x86 rotate a long by a variable amount, we will just default to what
legacy backend does, which ultimately will generate two helper calls. In
the future, we may want to write a helper function for rotate for these
cases to eliminate one of the helper calls.

Commit migrated from https://github.com/dotnet/coreclr/commit/48c853d0e2ba23e5ceb34b4081697dc80cbfd579

8 years agoFix Unix issue with string address below 64kB (dotnet/coreclr#7183)
Jan Vorlicek [Wed, 14 Sep 2016 14:59:28 +0000 (16:59 +0200)]
Fix Unix issue with string address below 64kB (dotnet/coreclr#7183)

This change fixes a problem that has started to occur in the ARM32 Linux CI
tests. A string located below 64KB in the address space is passed to the
StringObject::StringInitCharHelper and the code throws an exception since
on Windows, values below 64kB represent atoms and not strings.
This check should not be done for FEATURE_PAL though.

Commit migrated from https://github.com/dotnet/coreclr/commit/4436701ea538c5ce15861eed3ee9ed57528ce032

8 years agoMerge pull request dotnet/coreclr#7012 from kyulee1/fix6844
Kyungwoo Lee [Wed, 14 Sep 2016 14:54:59 +0000 (08:54 -0600)]
Merge pull request dotnet/coreclr#7012 from kyulee1/fix6844

X86: Fix inline assertion

Commit migrated from https://github.com/dotnet/coreclr/commit/f627ae79cf4828dadbb7ad3a99061e9721934fc9

8 years agoUpdate new String.Split methods to use optional params (dotnet/coreclr#7175)
Justin Van Patten [Wed, 14 Sep 2016 13:55:39 +0000 (06:55 -0700)]
Update new String.Split methods to use optional params (dotnet/coreclr#7175)

The new `Split(string)` overload broke source compat with uses of
`Split(null)`, which is documented to split based on white space,
because it makes the call ambiguous between `Split(char[])` and
`Split(string)`.

To maintain source compatibilty, `Split(string)` has been removed,
leaving just the overloads with `StringSplitOptions` parameters, which
are now optional. Making `StringSplitOptions` optional allows calls
to `Split(string)` while maintaining source compat with calls to
`Split(null)` which still binds to `Split(char[])` in C#, VB, and F#.

The new `Split(char)` overloads get the same changes for consistency
with `Split(string)`.

Commit migrated from https://github.com/dotnet/coreclr/commit/28a41c5bbfa9889f080f75d18af463135264d76f

8 years agoUse the correct HijackHelper for X86 FP (dotnet/coreclr#7182)
Swaroop Sridhar [Wed, 14 Sep 2016 08:06:08 +0000 (01:06 -0700)]
Use the correct HijackHelper for X86 FP (dotnet/coreclr#7182)

On X86, the helper OnHijackFPTripThread must be used for hijacking
methods returning a float value.

Commit migrated from https://github.com/dotnet/coreclr/commit/e8824a7956801154cbadf167be2f2e55f833670f

8 years agoMerge pull request dotnet/coreclr#7177 from smile21prc/coreclr-perf
smile21prc [Tue, 13 Sep 2016 23:47:15 +0000 (16:47 -0700)]
Merge pull request dotnet/coreclr#7177 from smile21prc/coreclr-perf

Extend the coreclr Windows perf run result lifetime

Commit migrated from https://github.com/dotnet/coreclr/commit/d2ffcb58c64c9c5ff2cd21740349799c0c43b370

8 years agoFor perf, we need to keep the run results longer for analysis.
Smile Wei [Tue, 13 Sep 2016 23:21:13 +0000 (16:21 -0700)]
For perf, we need to keep the run results longer for analysis.

Commit migrated from https://github.com/dotnet/coreclr/commit/8a681fb6659e7e7e32afebe39df690e77d95e1be

8 years agoUpdate CoreClr, CoreFx, External to beta-24513-04, beta-24513-02, beta-24513-00,...
dotnet bot [Tue, 13 Sep 2016 22:33:31 +0000 (15:33 -0700)]
Update CoreClr, CoreFx, External to beta-24513-04, beta-24513-02, beta-24513-00, respectively (dotnet/coreclr#7006)

Commit migrated from https://github.com/dotnet/coreclr/commit/26aa35e2e8fc640ccb399592e50fefd20a06e073

8 years agoX86: Fix inline assertion
Kyungwoo Lee [Wed, 31 Aug 2016 21:18:31 +0000 (14:18 -0700)]
X86: Fix inline assertion

Inline assertion occurred since we didn't bail out the inline fail case
early.
During the test, I got another assertion about debug flag where dotnet/coreclr#7173 is
filed with x86 legacy back-end.
With x86 ryujit back-end, there is an infinite loop from dotnet/coreclr#7038.

Fixes dotnet/coreclr#6844

Commit migrated from https://github.com/dotnet/coreclr/commit/f47f831dda9d309b7451035a6d40aac4cb044dc2

8 years agoMerge pull request dotnet/coreclr#7164 from BruceForstall/FixTestExclusions
Bruce Forstall [Tue, 13 Sep 2016 21:18:12 +0000 (14:18 -0700)]
Merge pull request dotnet/coreclr#7164 from BruceForstall/FixTestExclusions

Add issue comments to excluded tests

Commit migrated from https://github.com/dotnet/coreclr/commit/52b9596fe6c6523ff2adb70ddb0c782e2581508b

8 years agoMerge pull request dotnet/coreclr#7172 from smile21prc/coreclr-perf
smile21prc [Tue, 13 Sep 2016 21:14:12 +0000 (14:14 -0700)]
Merge pull request dotnet/coreclr#7172 from smile21prc/coreclr-perf

Enable archive for coreclr perf Linux runs, and fix a few bugs.

Commit migrated from https://github.com/dotnet/coreclr/commit/5585afe45c170de53c9a261979926c992544b0e9

8 years agoList all generated perf .xml files.
Smile Wei [Thu, 8 Sep 2016 19:25:54 +0000 (12:25 -0700)]
List all generated perf .xml files.

Commit migrated from https://github.com/dotnet/coreclr/commit/626c27756429923fa96ca49e05ca2a1862acef37

8 years agoMerge pull request dotnet/coreclr#7166 from adiaaida/removeNYIs
Michelle McDaniel [Tue, 13 Sep 2016 20:36:51 +0000 (13:36 -0700)]
Merge pull request dotnet/coreclr#7166 from adiaaida/removeNYIs

Remove unnecessary NYIs in Decompose

Commit migrated from https://github.com/dotnet/coreclr/commit/2ba19ec8b4c14c1e12bf1e3b8d8077029358a494

8 years agoRemove unnecessary NYIs in Decompose
Michelle McDaniel [Tue, 13 Sep 2016 18:21:37 +0000 (11:21 -0700)]
Remove unnecessary NYIs in Decompose

GT_DIV, GT_MOD, GT_UDIV, GT_ROL, GT_ROR, and GT_MULHI will never make it
to decompose, so remove the case statements for those operations. They
will fall through to the default case, which noway_asserts that we haven't
gotten to decompose with an oper that we don't recognize.

Commit migrated from https://github.com/dotnet/coreclr/commit/c1ec8c648d305217d45eb29ff0d1d64cf9e34d0c

8 years agoMerge pull request dotnet/coreclr#7145 from sivarv/JitStressRegs8Fix
Sivarv [Tue, 13 Sep 2016 17:55:51 +0000 (10:55 -0700)]
Merge pull request dotnet/coreclr#7145 from sivarv/JitStressRegs8Fix

Fix to dotnet/coreclr#7091 - Assert failure 'currentInterval && (currentInterval->isLocalVar || currentRefPosition->isFixedRegRef || currentInterval->hasConflictingDefUse)'

Commit migrated from https://github.com/dotnet/coreclr/commit/5cd7154f1f7cf5cdbf918c5923ffc70a1ecf4bb3

8 years agoAdd issue comments to excluded tests
Bruce Forstall [Tue, 13 Sep 2016 17:34:46 +0000 (10:34 -0700)]
Add issue comments to excluded tests

Commit migrated from https://github.com/dotnet/coreclr/commit/3f8b7e60cee89f71605e2648c8ec761cf5ee7d2c

8 years agoAdd Array.Reverse<T> (dotnet/coreclr#7132)
Justin Van Patten [Tue, 13 Sep 2016 17:25:13 +0000 (10:25 -0700)]
Add Array.Reverse<T> (dotnet/coreclr#7132)

* Add Array.Reverse<T>

Add generic `Reverse<T>` methods to `Array`.

* Change List<T>.Reverse to use Array.Reverse<T>

Implement `List<T>.Reverse` using `Array.Reverse<T>`.

Commit migrated from https://github.com/dotnet/coreclr/commit/b33e7563569135c5040958fd97b74b96607db3d6

8 years agoRemove a field from the CopyToAsync async state machine (dotnet/coreclr#7157)
Stephen Toub [Tue, 13 Sep 2016 16:36:44 +0000 (12:36 -0400)]
Remove a field from the CopyToAsync async state machine (dotnet/coreclr#7157)

The compiler is lifting the local ```bytesRead``` into a field on the async state machine, even though its value need not be preserved across any await.

Commit migrated from https://github.com/dotnet/coreclr/commit/6f399b187eb286b2b682fe9efaad531495770638

8 years agoEnable Debian Jessie for ARM rootfs build (dotnet/coreclr#7140)
Dmitri-Botcharnikov [Tue, 13 Sep 2016 16:25:33 +0000 (20:25 +0400)]
Enable Debian Jessie for ARM rootfs build (dotnet/coreclr#7140)

Commit migrated from https://github.com/dotnet/coreclr/commit/143198ec2e0735320a4bfedf391c2f647b586725

8 years agoReplace % inside loop of Random ctor (dotnet/coreclr#7156)
chrisaut [Tue, 13 Sep 2016 14:58:06 +0000 (21:58 +0700)]
Replace % inside loop of Random ctor (dotnet/coreclr#7156)

Commit migrated from https://github.com/dotnet/coreclr/commit/73ce68fd483595410e0d04d5a134e74998acc3b9

8 years agoFix funceval for enregistered value types arguments. (dotnet/coreclr#7149)
Mike McLaughlin [Tue, 13 Sep 2016 12:48:27 +0000 (05:48 -0700)]
Fix funceval for enregistered value types arguments. (dotnet/coreclr#7149)

Issue dotnet/coreclr#7115.

MethodDescCallSide.CallTargetWorker used by funceval needed to deal with
enregistered 16 byte value types arguments not just return values.

Commit migrated from https://github.com/dotnet/coreclr/commit/c3a7ed0dcc7a58eaaaee2fa5d5900bb0efb4694a

8 years agoMerge pull request dotnet/coreclr#7153 from dotnet-bot/from-tfs
Jan Kotas [Tue, 13 Sep 2016 10:42:29 +0000 (03:42 -0700)]
Merge pull request dotnet/coreclr#7153 from dotnet-bot/from-tfs

Merge changes from TFS

Commit migrated from https://github.com/dotnet/coreclr/commit/849da1bdf828256624dac634eefe8590e48f0c26

8 years agoFix uninitialized local build break
Bruce Forstall [Tue, 13 Sep 2016 05:47:50 +0000 (22:47 -0700)]
Fix uninitialized local build break

[tfs-changeset: 1626936]

Commit migrated from https://github.com/dotnet/coreclr/commit/4f3fdcf297ffc9e3db2f8ff60528fef0a1339a95

8 years agoMerge pull request dotnet/coreclr#7130 from BruceForstall/Fix7086
Bruce Forstall [Tue, 13 Sep 2016 05:26:47 +0000 (22:26 -0700)]
Merge pull request dotnet/coreclr#7130 from BruceForstall/Fix7086

RyuJIT x86: Implement GS cookie check for functions with tailcall

Commit migrated from https://github.com/dotnet/coreclr/commit/d2f01b80155c18e9559456c5d3d06f9d53144da9

8 years agoClean up COMPlus_JitMemStats / MEASURE_MEM_ALLOC (dotnet/coreclr#7119)
Peter Kukol [Tue, 13 Sep 2016 04:35:54 +0000 (22:35 -0600)]
Clean up COMPlus_JitMemStats / MEASURE_MEM_ALLOC (dotnet/coreclr#7119)

Clean up COMPlus_JitMemStats / MEASURE_MEM_ALLOC (all of it is off by default for non-DEBUG builds).

Commit migrated from https://github.com/dotnet/coreclr/commit/f718e6ac78184a2ac3c0d89ba10c99bd50390a32

8 years agoMerge pull request dotnet/coreclr#7105 from adiaaida/umodLong
Michelle McDaniel [Tue, 13 Sep 2016 04:18:59 +0000 (21:18 -0700)]
Merge pull request dotnet/coreclr#7105 from adiaaida/umodLong

Implement DecomposeUMod

Commit migrated from https://github.com/dotnet/coreclr/commit/e0522e44fb771ca901811e7854da8a73aa52ad54

8 years agoImplement DecomposeUMod
Michelle McDaniel [Thu, 8 Sep 2016 15:52:37 +0000 (08:52 -0700)]
Implement DecomposeUMod

This change implements DecomposeUMod for x86 RyuJIT. The only GT_UMOD
nodes that make it to decompose are ones where op2 is a cast from a
constant int to long. Because op2 is an int, we can guarantee that the
result will be an int. Therefore, in decompose, we change the type of the
GT_UMOD to be TYP_INT, and replace op2 with its lo part. We set the high
part of the GT_LONG to be 0, since the divisor < 0x3fffffff. In lower, we need
to make sure that loOp1 is in RAX and hiOp1 is in RDX, which is where
idiv expects them to be. We also increase the number of sources since
there are now three sources. In codegen, we need to make sure that the hi
and lo parts of the dividend are in the correct registers for idiv, then
we can just use the normal logic for GT_UMOD.

Commit migrated from https://github.com/dotnet/coreclr/commit/ed2c249fc79a8129a01056c6a3bbde8ccad63715

8 years agoMerge pull request dotnet/coreclr#7126 from mikedn/x86-cast-long-int-overflow
Pat Gavlin [Tue, 13 Sep 2016 00:34:49 +0000 (17:34 -0700)]
Merge pull request dotnet/coreclr#7126 from mikedn/x86-cast-long-int-overflow

Implement long to int casts with overflow for x86

Commit migrated from https://github.com/dotnet/coreclr/commit/08de00f373d1ff509ba00769bb911db346489d79

8 years agoRyuJIT x86: Implement GS cookie check for functions with tailcall
Bruce Forstall [Sat, 10 Sep 2016 00:07:30 +0000 (17:07 -0700)]
RyuJIT x86: Implement GS cookie check for functions with tailcall

Fixes dotnet/coreclr#7086, one of the most common asserts in stress runs.

I moved some helper code from the legacy codegen to codegencommon
so it could be used. I also added the code to generate the GS
cookie check for tailcall via helper code (on x64, we never
generate GS cookie checks when there are tailcalls).

Commit migrated from https://github.com/dotnet/coreclr/commit/186cec1bdfa77f8366b1f07ff6ab3bde7082b781

8 years agoMerge pull request dotnet/coreclr#7148 from BruceForstall/Fix7127
Bruce Forstall [Mon, 12 Sep 2016 22:36:29 +0000 (15:36 -0700)]
Merge pull request dotnet/coreclr#7148 from BruceForstall/Fix7127

Restrict x86 legacy JIT struct promotion

Commit migrated from https://github.com/dotnet/coreclr/commit/21e4eb9cd224c6fa257c810d270e3ff45b12a63e

8 years agoMerge pull request dotnet/coreclr#7133 from mikedn/x86-cast-long-float
Pat Gavlin [Mon, 12 Sep 2016 22:28:26 +0000 (15:28 -0700)]
Merge pull request dotnet/coreclr#7133 from mikedn/x86-cast-long-float

Implement long to float cast for x86

Commit migrated from https://github.com/dotnet/coreclr/commit/52931c20b0e98fd0ad3145a43b8e2c4dbd9114c3

8 years agoMerge pull request dotnet/coreclr#7102 from vancem/ETWGCDumpFix.9-7-16
Vance Morrison [Mon, 12 Sep 2016 22:16:59 +0000 (15:16 -0700)]
Merge pull request dotnet/coreclr#7102 from vancem/ETWGCDumpFix.9-7-16

Fix Issue dumping GC heap with ETW more than once

Commit migrated from https://github.com/dotnet/coreclr/commit/7d5bc8321058c6fce4a511e96ff4059171124ff3

8 years agoRestrict x86 legacy JIT struct promotion
Bruce Forstall [Mon, 12 Sep 2016 21:19:12 +0000 (14:19 -0700)]
Restrict x86 legacy JIT struct promotion

Don't allow struct promotion for custom layout structs. RyuJIT started
supporting this, but the legacy x86 JIT doesn't properly push such promoted
structs as arguments for calls.

Fixes the assert in dotnet/coreclr#7127, but the test fails with a crash in a later test case.

Commit migrated from https://github.com/dotnet/coreclr/commit/095910a2b119d25bbafe90593c40bf93bf53f85c

8 years agoMerge pull request dotnet/coreclr#7136 from benaadams/enviro
Jan Kotas [Mon, 12 Sep 2016 20:39:11 +0000 (13:39 -0700)]
Merge pull request dotnet/coreclr#7136 from benaadams/enviro

Updated formatted GetResourceString code reduction

Commit migrated from https://github.com/dotnet/coreclr/commit/762833dae43d312a3693b6a767771200e476fed9

8 years agoMerge pull request dotnet/coreclr#7142 from joperezr/FillOutMissingStringMembers
Jose Perez Rodriguez [Mon, 12 Sep 2016 18:42:46 +0000 (11:42 -0700)]
Merge pull request dotnet/coreclr#7142 from joperezr/FillOutMissingStringMembers

Adding missing String members to coreclr

Commit migrated from https://github.com/dotnet/coreclr/commit/cbd1f37b7b74647644686a9143d05fbdd15162c8

8 years agoFix to dotnet/coreclr#7091.
sivarv [Mon, 12 Sep 2016 18:29:53 +0000 (11:29 -0700)]
Fix to dotnet/coreclr#7091.

Commit migrated from https://github.com/dotnet/coreclr/commit/1cbab8dad393ec971e2d954a1f58e8ee7c62c65b

8 years agoMerge pull request dotnet/coreclr#6791 from dagood/upgrade-xunit-runner
Davis Goodin [Mon, 12 Sep 2016 18:15:48 +0000 (13:15 -0500)]
Merge pull request dotnet/coreclr#6791 from dagood/upgrade-xunit-runner

Upgrade xunit runner to 2.2.0-beta2-build3300

Commit migrated from https://github.com/dotnet/coreclr/commit/2508d5e3100039558941284651fc3181e0ff7ee3

8 years agoRemoving one String member to avoid depending on ArgIterator
Jose Perez Rodriguez [Mon, 12 Sep 2016 17:10:22 +0000 (10:10 -0700)]
Removing one String member to avoid depending on ArgIterator

Commit migrated from https://github.com/dotnet/coreclr/commit/9e408b7d1539c184ea65f50411670069fa5e77f7

8 years agoAdding missing String members to coreclr
Jose Perez Rodriguez [Mon, 12 Sep 2016 16:44:39 +0000 (09:44 -0700)]
Adding missing String members to coreclr

Commit migrated from https://github.com/dotnet/coreclr/commit/8d363be3973019a451a220aa8b49d3a3317dc357

8 years agoImplement long to float cast for x86
Mike Danes [Sun, 11 Sep 2016 12:49:12 +0000 (15:49 +0300)]
Implement long to float cast for x86

Convert long to float/double casts to helper calls. Despite the call this version is 2x faster than JIT32's FILD implementation which suffers a significant store forwarding stall penalty.

Commit migrated from https://github.com/dotnet/coreclr/commit/398317d18b0845681671ba449b8d8d9ca2cd505c

8 years agoFix Environment no-inlining for mscorlib
Ben Adams [Sun, 11 Sep 2016 21:26:19 +0000 (22:26 +0100)]
Fix Environment no-inlining for mscorlib

Commit migrated from https://github.com/dotnet/coreclr/commit/85f22161364a122ba047175e82d97ec96038e8c6

8 years agoReduce code bloat around formatted GetResourceString calls
James Ko [Wed, 31 Aug 2016 15:12:13 +0000 (11:12 -0400)]
Reduce code bloat around formatted GetResourceString calls

Commit migrated from https://github.com/dotnet/coreclr/commit/b28dc79e88dbd6a94d1a7eec23ed97cde1409174

8 years agoMerge pull request dotnet/coreclr#7067 from pkukol/timing_bit_rot
Peter Kukol [Sat, 10 Sep 2016 00:27:19 +0000 (18:27 -0600)]
Merge pull request dotnet/coreclr#7067 from pkukol/timing_bit_rot

Fix some timing code bit rot, plus minor cleanup.

Commit migrated from https://github.com/dotnet/coreclr/commit/0df8ca52b6ccbceeb73798318681ff8ed2842b1f

8 years agoMerge pull request dotnet/coreclr#7125 from pgavlin/ModelAssignByRefKillSet
Pat Gavlin [Fri, 9 Sep 2016 23:22:07 +0000 (16:22 -0700)]
Merge pull request dotnet/coreclr#7125 from pgavlin/ModelAssignByRefKillSet

Model the kill set for ASSIGN_BYREF and stop generating movsq on x86.

Commit migrated from https://github.com/dotnet/coreclr/commit/0e17ee468095df609921271e4c6513dac815f068

8 years agoMerge pull request dotnet/coreclr#7122 from BruceForstall/Fix7092
Bruce Forstall [Fri, 9 Sep 2016 22:02:29 +0000 (15:02 -0700)]
Merge pull request dotnet/coreclr#7122 from BruceForstall/Fix7092

Fix dotnet/coreclr#7092

Commit migrated from https://github.com/dotnet/coreclr/commit/f5defca1cfbbe2b127ec251b911175f6ada626ec

8 years agoMerge pull request dotnet/coreclr#7120 from BruceForstall/Fix7093
Bruce Forstall [Fri, 9 Sep 2016 21:59:09 +0000 (14:59 -0700)]
Merge pull request dotnet/coreclr#7120 from BruceForstall/Fix7093

Fix dotnet/coreclr#7093

Commit migrated from https://github.com/dotnet/coreclr/commit/cf251889bb85b807b8661311980dd1be462dbe73

8 years agoMerge pull request dotnet/coreclr#7114 from BruceForstall/Fix7100
Bruce Forstall [Fri, 9 Sep 2016 21:58:08 +0000 (14:58 -0700)]
Merge pull request dotnet/coreclr#7114 from BruceForstall/Fix7100

Fix dotnet/coreclr#7100

Commit migrated from https://github.com/dotnet/coreclr/commit/ff53de3231bcd43e077f6a446c01520c2ed1bbea

8 years agoImplement long to int casts with overflow for x86
Mike Danes [Fri, 9 Sep 2016 20:44:29 +0000 (23:44 +0300)]
Implement long to int casts with overflow for x86

Commit migrated from https://github.com/dotnet/coreclr/commit/6942f3d49b1d2659cfc228b2c9168849fa0dbdf5

8 years agoFix dotnet/coreclr#7092
Bruce Forstall [Fri, 9 Sep 2016 17:47:45 +0000 (10:47 -0700)]
Fix dotnet/coreclr#7092

The problem is genCodeForInitBlkUnroll() is trying to generate:
```
mov byte ptr [edi], si
```
which is not legal: ebp/esi/edi/esp don't have byte register versions on x86.

This change requires the source register to be an x86 byteable register in
this case.
Note that legacy JIT generates stosb for this test.

Commit migrated from https://github.com/dotnet/coreclr/commit/76d6e0f2f2c0707ff7a47bf0673fcfcf698f179b

8 years agoDo not use movsq on x86.
Pat Gavlin [Fri, 9 Sep 2016 19:26:44 +0000 (12:26 -0700)]
Do not use movsq on x86.

This instruction is only available when targeting amd64.

Commit migrated from https://github.com/dotnet/coreclr/commit/7dc24537a059284db2ba55f77458e6e4c78c7f43

8 years agoModel the kill set for ASSIGN_BYREF on x86.
Pat Gavlin [Fri, 9 Sep 2016 18:04:19 +0000 (11:04 -0700)]
Model the kill set for ASSIGN_BYREF on x86.

This helper kills esi, edi, and ecx.

Commit migrated from https://github.com/dotnet/coreclr/commit/0224d864af72cc2fa414bf7daedeb6d559cb1140

8 years agoMerge pull request dotnet/coreclr#7111 from sivarv/jitstressregs2Fix
Sivarv [Fri, 9 Sep 2016 17:16:16 +0000 (10:16 -0700)]
Merge pull request dotnet/coreclr#7111 from sivarv/jitstressregs2Fix

Fix to dotnet/coreclr#7087 - x86 RyuJIT JitstressRegs=2 assert failure

Commit migrated from https://github.com/dotnet/coreclr/commit/4033fe5af8469d3e0c81d99cd2fa842c5baea57c

8 years agoMerge pull request dotnet/coreclr#7108 from kyulee1/igmeta
Kyungwoo Lee [Fri, 9 Sep 2016 16:32:39 +0000 (10:32 -0600)]
Merge pull request dotnet/coreclr#7108 from kyulee1/igmeta

ILDAMS: Ignore Metadata flag for CoreCLR

Commit migrated from https://github.com/dotnet/coreclr/commit/e3924fd0e3c65b2cae1d7c9d844d7840115916fb

8 years agoMerge pull request dotnet/coreclr#7121 from swgillespie/request-build-break
Sean Gillespie [Fri, 9 Sep 2016 16:32:24 +0000 (09:32 -0700)]
Merge pull request dotnet/coreclr#7121 from swgillespie/request-build-break

Only reference IGCHeap::gcHeapType when FEATURE_SVR_GC is defined

Commit migrated from https://github.com/dotnet/coreclr/commit/bd2b72b3516b36a10d5e51fd255df1f2efbb665c

8 years agoOnly reference IGCHeap::gcHeapType when FEATURE_SVR_GC is defined
Sean Gillespie [Fri, 9 Sep 2016 13:53:48 +0000 (06:53 -0700)]
Only reference IGCHeap::gcHeapType when FEATURE_SVR_GC is defined

Commit migrated from https://github.com/dotnet/coreclr/commit/c4d22a210bc28923906b205b219e8bf5c8e58926

8 years agoFix enregistered max size constants on Unix AMD64 (dotnet/coreclr#7117)
Jan Vorlicek [Fri, 9 Sep 2016 08:57:45 +0000 (10:57 +0200)]
Fix enregistered max size constants on Unix AMD64 (dotnet/coreclr#7117)

This change fixes ENREGISTERED_PARAMTYPE_MAXSIZE and ENREGISTERED_RETURNTYPE_INTEGER_MAXSIZE
constants that were not updated properly for the Unix AMD64 ABI. The values are used
for Unix/AMD64 for marshalling and typedbyref parameters and our tests probably don't
execute those code paths with structs larger than 8 bytes.

Commit migrated from https://github.com/dotnet/coreclr/commit/23c166d03a673e515131c2bb8777de308c0637ce

8 years agoMerge pull request dotnet/coreclr#7118 from dotnet/revert-6889-StaticField
Jan Kotas [Fri, 9 Sep 2016 02:35:16 +0000 (19:35 -0700)]
Merge pull request dotnet/coreclr#7118 from dotnet/revert-6889-StaticField

Revert "Fix IMGREL32 static field addr value-num blindspot"

Commit migrated from https://github.com/dotnet/coreclr/commit/14628f3218c4678817dedbb41f396ac62d139b8d

8 years agoFix dotnet/coreclr#7093
Bruce Forstall [Fri, 9 Sep 2016 01:09:34 +0000 (18:09 -0700)]
Fix dotnet/coreclr#7093

This is an assert due to how STRESS_64RSLT_MUL is implemented. This
stress mode converts:
```
/--*  lclVar    int    V01 loc0
*  *         int
\--*  lclVar    int    V01 loc0
```
to:
```
*  cast      int <- long
|  /--*  cast      long <- int
|  |  \--*  lclVar    int    V01 loc0
\--*  *         long
   \--*  cast      long <- long
      \--*  nop       long
         \--*  lclVar    int    V01 loc0
```
Thus, the long 'nop' node is above an 'int' operand node. This led to an assert
in genCodeForTreeLng() that the lclVar was type long, which is isn't.

I added yet another cast under the 'nop' to fix this typing problem:
```
*  cast      int <- long
|  /--*  cast      long <- int
|  |  \--*  lclVar    int    V01 loc0
\--*  *         long
   \--*  cast      long <- long
      \--*  nop       long
         \--*  cast      long <- int
            \--*  lclVar    int    V01 loc0
```

Commit migrated from https://github.com/dotnet/coreclr/commit/c16b6bc96c1aa1edd9a3085a12f12a9df4169da5

8 years agoRevert "Fix IMGREL32 static field addr value-num blindspot"
Jan Kotas [Fri, 9 Sep 2016 00:58:55 +0000 (17:58 -0700)]
Revert "Fix IMGREL32 static field addr value-num blindspot"

Commit migrated from https://github.com/dotnet/coreclr/commit/9f7eabe48460518fb7215de1fabefdc4a6800af1

8 years agoMerge pull request dotnet/coreclr#7116 from dotnet-bot/from-tfs
Sean Gillespie [Fri, 9 Sep 2016 00:45:58 +0000 (17:45 -0700)]
Merge pull request dotnet/coreclr#7116 from dotnet-bot/from-tfs

Merge changes from TFS

Commit migrated from https://github.com/dotnet/coreclr/commit/193c5816dff234aa7504826eb559360607748563

8 years agoFix a build break introduced by GHdotnet/coreclr#6764
dotnet-bot [Fri, 9 Sep 2016 00:24:16 +0000 (17:24 -0700)]
Fix a build break introduced by GHdotnet/coreclr#6764

[tfs-changeset: 1626397]

Commit migrated from https://github.com/dotnet/coreclr/commit/1d90f2cbb3e52323e14354e6873c90b20fb63081

8 years agoFix dotnet/coreclr#7100
Bruce Forstall [Thu, 8 Sep 2016 23:42:22 +0000 (16:42 -0700)]
Fix dotnet/coreclr#7100

This issue is the following assert:
```
Assert failure '!emitComp->opts.compReloc || memBase->IsIconHandle()'
```
while ngen'ing mscorlib on desktop.

We're trying to generate
```
cmp ebx, dword ptr [0000H]
```
(due to inlining). But, emitInsBinary() doesn't expect a zero address that
is not a relocatable handle.

Simply change the assert to allow this. The code then generates the correct
zero base address.

Commit migrated from https://github.com/dotnet/coreclr/commit/08f3ae19c6e07e6772ace96706012ed87e4e6f2e

8 years agoMerge pull request dotnet/coreclr#7112 from rahku/appdomain
Rahul Kumar [Thu, 8 Sep 2016 23:27:42 +0000 (16:27 -0700)]
Merge pull request dotnet/coreclr#7112 from rahku/appdomain

Add AppContext.UnhandledException to ref file

Commit migrated from https://github.com/dotnet/coreclr/commit/01b87afda3e9b9f21af51c334eb7fb5854070c4d

8 years agoAdd AppContext.UnhandledException to ref file
Rahul Kumar [Thu, 8 Sep 2016 23:17:06 +0000 (16:17 -0700)]
Add AppContext.UnhandledException to ref file

Commit migrated from https://github.com/dotnet/coreclr/commit/587840091d335f14ded4b6bec514487b8ac5e5e4

8 years agoFix to dotnet/coreclr#7087
sivarv [Thu, 8 Sep 2016 22:39:08 +0000 (15:39 -0700)]
Fix to dotnet/coreclr#7087

Commit migrated from https://github.com/dotnet/coreclr/commit/c526b321b89bd50b0da5858b9f5853f58b6b849f

8 years agoMerge pull request dotnet/coreclr#7071 from erozenfeld/StackOverflow
Eugene Rozenfeld [Thu, 8 Sep 2016 22:28:47 +0000 (15:28 -0700)]
Merge pull request dotnet/coreclr#7071 from erozenfeld/StackOverflow

Make GT_LIST processing non-recursive to avoid StackOverflow.

Commit migrated from https://github.com/dotnet/coreclr/commit/871bb909502f205bad8cf47036a37615fbd1ba7a

8 years agoILDASM: Ignore Metadata flag for CoreCLR
Kyungwoo Lee [Thu, 8 Sep 2016 19:59:39 +0000 (12:59 -0700)]
ILDASM: Ignore Metadata flag for CoreCLR

Full metadata emission is disabled under coreclr.
So is ILDASM instead of failing during the run.

Commit migrated from https://github.com/dotnet/coreclr/commit/f2e28ea518e4ff42345b99eea2d11e95b58a7dc0

8 years agoFix the fixes.
Peter Kukol [Wed, 7 Sep 2016 15:58:44 +0000 (08:58 -0700)]
Fix the fixes.

Commit migrated from https://github.com/dotnet/coreclr/commit/b529eb4a7377b9430d4da86f82e56949d68b087f

8 years agoFix some timing code bit rot, plus minor cleanup.
Peter Kukol [Tue, 6 Sep 2016 18:28:30 +0000 (11:28 -0700)]
Fix some timing code bit rot, plus minor cleanup.

Commit migrated from https://github.com/dotnet/coreclr/commit/af6b1ce7d730a7c58c64cb63f3c44265484c5bd2

8 years agoMerge pull request dotnet/coreclr#7107 from pgavlin/gh7089
Pat Gavlin [Thu, 8 Sep 2016 20:24:00 +0000 (13:24 -0700)]
Merge pull request dotnet/coreclr#7107 from pgavlin/gh7089

Fix dotnet/coreclr#7089.

Commit migrated from https://github.com/dotnet/coreclr/commit/d54da68a2ba1c1b6345bf66931621b17e1d97f9e

8 years agoMerge pull request dotnet/coreclr#6764 from swgillespie/gc-interface-3
Sean Gillespie [Thu, 8 Sep 2016 20:06:21 +0000 (13:06 -0700)]
Merge pull request dotnet/coreclr#6764 from swgillespie/gc-interface-3

Move the GC behind an interface and use that interface in the VM

Commit migrated from https://github.com/dotnet/coreclr/commit/1c43df95410e57f0d40e6ee55012ef65bdac2487

8 years agoIntroduce an interface separating the GC and the VM,
Sean Gillespie [Thu, 8 Sep 2016 18:27:24 +0000 (11:27 -0700)]
Introduce an interface separating the GC and the VM,
modifying the VM to utilize this interface.

Introduce an interface separating the GC and the rest of the VM

Remove static members of both IGCHeap and IGCHeapInternal and move the management of the singular GC heap to the VM.

Rename uses of IGCHeap in the VM to GCHeapHolder, as well as other misc. renames throughout the VM and GC.

Split each interface function into categories, document them, use consistent formatting across the interface

Undo some accidental find/replace collateral damage

Remove all ifdefs from the GC interface

Deduplicate function declarations between IGCHeap and IGCHeapInternal, expose AllocAlign8 through the interface and the reference to alloc_context to repair the ARM build

Paper cut: false -> nullptr

Repair the ARM and x86 builds

Rename GCHeapHolder -> GCHeapUtilities and address documentation feedback

Rebase against master

Rename gcholder.h/cpp -> gcheaputilities.h/cpp

Fix an uninitialized field on alloc_context causing test failures on clang

Rename the include guard for gcheaputilities.h

Un-breaks SOS by making the following changes:
  1) Instructs the DAC to look for IGCHeap::gcHeapType by name,
     instead of assuming that it exists near g_pGCHeap,
  2) Eliminate all virtual calls on IGCHeap in the DAC, since we cannot
     dispatch on an object in another process,
  3) Because of 2, expose the number of generations past the GC interface
     using a static variable on IGCHeap that the DAC can read directly.

repair the Windows build

Commit migrated from https://github.com/dotnet/coreclr/commit/6519911fbccbec049f9592484f69c213b4b78264

8 years agoMerge pull request dotnet/coreclr#7106 from pgavlin/DecompTP
Pat Gavlin [Thu, 8 Sep 2016 17:52:21 +0000 (10:52 -0700)]
Merge pull request dotnet/coreclr#7106 from pgavlin/DecompTP

Improve decomp throughput.

Commit migrated from https://github.com/dotnet/coreclr/commit/65c2ff78e0e88f5052751747f6686084caab3d4c

8 years agoReturn false from isRegPairType for RyuJIT.
Pat Gavlin [Thu, 8 Sep 2016 16:36:20 +0000 (09:36 -0700)]
Return false from isRegPairType for RyuJIT.

The RyuJIT backend does not use regpair types, so this method should
simply return false when that backend is in use. In the future we
should consider removing this method (and other regpair-related code).

Fixes dotnet/coreclr#7089.

Commit migrated from https://github.com/dotnet/coreclr/commit/57d6887745844ea882b3dde4c54155e4f57f41ff

8 years agoMerge pull request dotnet/coreclr#6995 from rahku/appdomain
Rahul Kumar [Thu, 8 Sep 2016 16:44:01 +0000 (09:44 -0700)]
Merge pull request dotnet/coreclr#6995 from rahku/appdomain

Exposes runtime functionality to Appdomain implementation in corefx

Commit migrated from https://github.com/dotnet/coreclr/commit/70fe825e7245a97c32d9af4212d668e6c1f1e3c5

8 years agoMerge pull request dotnet/coreclr#4986 from mikedn/x86-cast-int-long
Pat Gavlin [Thu, 8 Sep 2016 16:31:08 +0000 (09:31 -0700)]
Merge pull request dotnet/coreclr#4986 from mikedn/x86-cast-int-long

Implement integer to long/ulong casts for x86

Commit migrated from https://github.com/dotnet/coreclr/commit/a04c2e30fc3a07640bb94d43d97976975a3676bc

8 years agoImprove decomp throughput.
Pat Gavlin [Thu, 8 Sep 2016 14:27:36 +0000 (07:27 -0700)]
Improve decomp throughput.

Don't find uses unless necessary. This saves about 50 milliseconds while
crossgen'ing mscorlib.

Commit migrated from https://github.com/dotnet/coreclr/commit/db2281ccbcc610ca255d174a3d3e5cf287776089

8 years agoExposes runtime functionality to Appdomain implementation in corefx
Rahul Kumar [Tue, 30 Aug 2016 21:56:11 +0000 (14:56 -0700)]
Exposes runtime functionality to Appdomain implementation in corefx

Commit migrated from https://github.com/dotnet/coreclr/commit/0535ab83944028bb8ed1b323c8537ca8ce5ac8e2

8 years agoMerge pull request dotnet/coreclr#7011 from svick/earlyprop-unused-var
Pat Gavlin [Thu, 8 Sep 2016 15:20:47 +0000 (08:20 -0700)]
Merge pull request dotnet/coreclr#7011 from svick/earlyprop-unused-var

Fix BBF_HAS_NULLCHECK test

Commit migrated from https://github.com/dotnet/coreclr/commit/c880f864bb91bddd83d5390a85a33c34eee04183

8 years agoAdd a NYI for a long compare codegen issue
Mike Danes [Thu, 8 Sep 2016 12:14:32 +0000 (15:14 +0300)]
Add a NYI for a long compare codegen issue

Tracked by dotnet/coreclr#7038

Commit migrated from https://github.com/dotnet/coreclr/commit/30803e00e1b4e132c74a9d2e55931e394c2a39b5

8 years agoImplement integer to long/ulong casts for x86
Mike Danes [Sun, 15 May 2016 11:04:13 +0000 (14:04 +0300)]
Implement integer to long/ulong casts for x86

Commit migrated from https://github.com/dotnet/coreclr/commit/b0737c733f674f047cd23d272002a3427f26fad0

8 years agoAdd constraint to Enum.Parse<TEnum> (dotnet/coreclr#7104)
Yufei Huang [Thu, 8 Sep 2016 07:07:54 +0000 (15:07 +0800)]
Add constraint to Enum.Parse<TEnum> (dotnet/coreclr#7104)

Commit migrated from https://github.com/dotnet/coreclr/commit/83629bab155c313e2cf91045be69d3b980f74f23

8 years agoMerge pull request dotnet/coreclr#6889 from JosephTremoulet/StaticField
Joseph Tremoulet [Thu, 8 Sep 2016 05:04:25 +0000 (01:04 -0400)]
Merge pull request dotnet/coreclr#6889 from JosephTremoulet/StaticField

Fix IMGREL32 static field addr value-num blindspot

Commit migrated from https://github.com/dotnet/coreclr/commit/200845408154acf072d8079236248c37a7133b24

8 years agoMerge pull request dotnet/coreclr#6754 from hseok-oh/castd2ul
Joseph Tremoulet [Thu, 8 Sep 2016 05:04:07 +0000 (01:04 -0400)]
Merge pull request dotnet/coreclr#6754 from hseok-oh/castd2ul

disable gtFoldExprConst for conversion from negative double to unsigned long

Commit migrated from https://github.com/dotnet/coreclr/commit/2448e08eedea49b0c325a60ba567a21883e342fd

8 years agoMake TryEnsureSufficientExecutionStack public (dotnet/coreclr#7077)
Bart J.F. De Smet [Thu, 8 Sep 2016 01:37:45 +0000 (18:37 -0700)]
Make TryEnsureSufficientExecutionStack public (dotnet/coreclr#7077)

Commit migrated from https://github.com/dotnet/coreclr/commit/ff7731cd78d11994e8d755f7f005ca010bf900b7

8 years agoFix OSX build break in PAL tests (dotnet/coreclr#7101)
Jan Vorlicek [Thu, 8 Sep 2016 01:37:07 +0000 (03:37 +0200)]
Fix OSX build break in PAL tests (dotnet/coreclr#7101)

This fixes a build break in PAL tests introduced by a recent checkin
that converted PAL tests to C++.

Commit migrated from https://github.com/dotnet/coreclr/commit/9a845642ab71c8a742c3dc54b81df4866ae79250

8 years agoFix issue where Type Names are not resolved if a heap dump is done twice.
Vance Morrison [Wed, 7 Sep 2016 23:32:54 +0000 (16:32 -0700)]
Fix issue where Type Names are not resolved if a heap dump is done twice.

The issue is that a table that remembers which types have been dumped is only
flushed when the 'Types' ETW keyword is disabled, but we only check this when
and ENABLE command is executed.  We should do so on DISABLE a well

Commit migrated from https://github.com/dotnet/coreclr/commit/1d5c43f1da75b36707133a1a86666373938dfe40

8 years agoMerge pull request dotnet/coreclr#7023 from pgavlin/X87MathIntrinsics
Pat Gavlin [Wed, 7 Sep 2016 21:56:39 +0000 (14:56 -0700)]
Merge pull request dotnet/coreclr#7023 from pgavlin/X87MathIntrinsics

Stop treating sine/cosine/round as target intrinsics on x86.

Commit migrated from https://github.com/dotnet/coreclr/commit/ddc3d67def51efe26f613557db5701f7c016207c

8 years agoLink dotnet/coreclr#7097 to the relevant code in ::IsTargetIntrinsic.
Pat Gavlin [Wed, 7 Sep 2016 21:45:36 +0000 (14:45 -0700)]
Link dotnet/coreclr#7097 to the relevant code in ::IsTargetIntrinsic.

Commit migrated from https://github.com/dotnet/coreclr/commit/13e41a6f4e2e29138f93d31f94611a5deb787714

8 years agoFix strict aliasing violation from conditional typedef of wchar_t by building entire...
kchoi [Wed, 7 Sep 2016 21:12:22 +0000 (14:12 -0700)]
Fix strict aliasing violation from conditional typedef of wchar_t by building entire project as C++ for Unix (dotnet/coreclr#6801)

Enable building CoreCLR as C++ project on Unix

This series of patches fixes the strict aliasing violation from
the conditional typedef of wchar_t in src/pal/inc/pal_char16.h:40

* rename c files to cpp
* modify all cmake files to change .c files to .cpp
* apply c++ linkage to templates

Commit migrated from https://github.com/dotnet/coreclr/commit/4149bd2070e0a8beec6dedb238e6fd832a39611b

8 years agoMerge pull request dotnet/coreclr#7016 from smile21prc/coreclr-perf
smile21prc [Wed, 7 Sep 2016 20:51:35 +0000 (13:51 -0700)]
Merge pull request dotnet/coreclr#7016 from smile21prc/coreclr-perf

Create coreclr perf jobs for Linux.
Addressed all the comments, and verified coreclr perf run for Linux with latest coreclr/corefx bits passed:
http://dotnet-ci2.cloudapp.net/job/smile21prc_coreclr/job/coreclr-perf/job/perf_Linux/28/consoleFull

Commit migrated from https://github.com/dotnet/coreclr/commit/09133905fce3b541702044b6d2bbe942a6b40155

8 years agoMerge pull request dotnet/coreclr#7098 from pgavlin/FixTestOutputPath
Pat Gavlin [Wed, 7 Sep 2016 20:19:31 +0000 (13:19 -0700)]
Merge pull request dotnet/coreclr#7098 from pgavlin/FixTestOutputPath

Fix the output path when building a single test.

Commit migrated from https://github.com/dotnet/coreclr/commit/4af09ac719a6ec7cd398b379c8062af8bd6f5e24

8 years agoCreate coreclr perf jobs for Linux.
Smile Wei [Tue, 30 Aug 2016 19:31:25 +0000 (12:31 -0700)]
Create coreclr perf jobs for Linux.

Commit migrated from https://github.com/dotnet/coreclr/commit/bd59a687114248831f6343c40d2b4b80c08b01b5

8 years agoFix the output path when building a single test.
Pat Gavlin [Wed, 7 Sep 2016 18:09:40 +0000 (11:09 -0700)]
Fix the output path when building a single test.

Add a trailing slash to the base output path.

Commit migrated from https://github.com/dotnet/coreclr/commit/182dd9f60d900bb4de38f1069fa354e3d190793f

8 years agoStop treating sine/cosine/round as target intrinsics on x86.
Pat Gavlin [Wed, 7 Sep 2016 17:51:29 +0000 (10:51 -0700)]
Stop treating sine/cosine/round as target intrinsics on x86.

These intrinsics were supported by JIT32 using the corresponding
x87 instructions. There are a few downsides to doing the same in
RyuJIT, however, because it uses SSE for all other floating-point
math:
- The mix of precisions used by the combination of SSE + x87
  instructions matches neither the JIT32 nor the RyuJIT/x64
  behavior.
- Using the x87 instructions is more expensive, as the result of
  the instruction may need to be moved via memory to an SSE
  register.
- The RA would need to be udpated in order to better understand
  that each x87 instruction may require a spill temp in order to
  retrieve the result.

Issue dotnet/coreclr#7097 tracks investigating a custom calling convention for
the appropriate helper calls if necessasry.

Commit migrated from https://github.com/dotnet/coreclr/commit/32f661368e4f5e7eab667216e663c83913a73b5c

8 years agoMake GT_LIST processing non-recursive to avoid StackOverflow.
Eugene Rozenfeld [Tue, 6 Sep 2016 23:51:23 +0000 (16:51 -0700)]
Make GT_LIST processing non-recursive to avoid StackOverflow.

We had some internal cases where crossgen failed with StackOverflow exception
when compiling huge methods. In particular, the methods had GT_PHI nodes with
huge number of arguments.

StackOverflow was happening in multiple places. Recent LIR changes eliminated two of those places,
these changes eliminate two more: gtSetEvalOrder and fgDebugCheckFlags (debug only). We already had
gtSetListOrder but it was only used for call arg lists. I made gtSetListOrder non-recursive and also generalized
to handle other GT_LIST nodes.

With that with these changes the huge repros can now be crossgen'd.

I verified no assembly diffs in SuperPMI.

I'm verifying overall throughput effect.

Commit migrated from https://github.com/dotnet/coreclr/commit/a67f5698705dab8cb58bd07c733ac492e81ad28f

8 years agoMerge pull request dotnet/coreclr#7065 from adiaaida/multiplyLongMul_Hi
Michelle McDaniel [Wed, 7 Sep 2016 15:55:06 +0000 (08:55 -0700)]
Merge pull request dotnet/coreclr#7065 from adiaaida/multiplyLongMul_Hi

Enable long multiply

Commit migrated from https://github.com/dotnet/coreclr/commit/df5fbfe2d68a73bc797a3d94120b809a1eaac9cd

8 years agoMerge pull request dotnet/coreclr#7081 from yufeih/enum_try_parse
Wes Haggard [Wed, 7 Sep 2016 15:54:26 +0000 (08:54 -0700)]
Merge pull request dotnet/coreclr#7081 from yufeih/enum_try_parse

Add Enum.TryParse and Enum.Parse<TEnum>

Commit migrated from https://github.com/dotnet/coreclr/commit/b83b1a72387e342a4a3707df869ca30f5bb39d9e