Mike Danes [Sun, 13 Nov 2016 09:56:46 +0000 (11:56 +0200)]
Fix GT_MULHI register requirements
We only care about the upper 32 bits of the 64 bit result and those are
in EDX. It doesn't make sense to set the destination candidate to EAX,
most of the time this will result in a useless `mov eax, edx` being
generated.
Also, genCodeForMulHi needs to check if the implicit operand is in EAX
rather than targetReg.
Commit migrated from https://github.com/dotnet/coreclr/commit/
0822b57867aaae098239022e7ebaef745588b8a4
Mike Danes [Sun, 13 Nov 2016 14:49:31 +0000 (16:49 +0200)]
Morph GT_MOD to GT_DIV in some cases
Doing magic division in morph did have one positive effect. For code like
`x = a / 10; y = a % 10;` some (not all due to an assignment) of the common
code was CSEd.
To preserve this optimization we transform `a % b` to `a - (a / b) * b` if we
know that lowering will do magic division. If a redundant `a / b` exists
then CSE can pick it up.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8b3f1fa4a3ede03cbc690d336dc74145976a60fe
Mike Danes [Sun, 13 Nov 2016 10:24:17 +0000 (12:24 +0200)]
Remove magic division optimization from morph
This is no longer needed, lowering does this now.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d45da457c03957ba8ffe1337d406b2cac73be839
Mike Danes [Sun, 13 Nov 2016 09:16:41 +0000 (11:16 +0200)]
Do magic division optimization in lowering
Currently this optimization is done during global morph. Global morph
takes place very early so cases that rely on constant propagation and
folding (e.g "int d = 3; return n / d;") aren't handled.
Also, the IR generated during morph is complex and unlikely to enable
further optimizations. Quite the contrary, the presence of GT_ASG and
GT_MULHI nodes blocks other optimizations (CSE, LICM currently).
The generated code is identical to the code generated by the morph
implementation with one exception: when 2 shifts are needed
(e.g. for x / 7) they are now computed independently:
mov eax, edx
sar eax, 2
shr edx, 31
add eax, edx
instead of:
mov eax, edx
sar eax, 2
mov edx, eax
shr edx, 31
add eax, edx
This results in shorter code and avoids creating an additional temp.
Commit migrated from https://github.com/dotnet/coreclr/commit/
bc4e600a838ba7daba7161806689a419aeef2f76
Mike Danes [Sun, 13 Nov 2016 08:48:15 +0000 (10:48 +0200)]
Copy GetSignedMagicNumberForDivide to lower.cpp
No actual code changes.
Commit migrated from https://github.com/dotnet/coreclr/commit/
67e8bd89504b7abd0ff8132680f9b160ff9211c4
Dan Moseley [Mon, 14 Nov 2016 23:47:55 +0000 (15:47 -0800)]
Reduce variable scope (dotnet/coreclr#8021)
Commit migrated from https://github.com/dotnet/coreclr/commit/
7bd7335b34b3e4ee650b5db4991d922e3fbc56ea
chcosta [Mon, 14 Nov 2016 23:17:54 +0000 (15:17 -0800)]
Merge pull request dotnet/coreclr#8073 from dotnet/enablebinclash
Enable binclash logger
Commit migrated from https://github.com/dotnet/coreclr/commit/
41f042f71c6d70d08813a9d5068b0a1918176a2d
Pat Gavlin [Mon, 14 Nov 2016 23:15:34 +0000 (15:15 -0800)]
Merge pull request dotnet/coreclr#8086 from pgavlin/VSO278523
Admit more dest addresses in block assign value-numbering.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a5638a742043e2698a050e7970d4917b5de5bff3
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*)`.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f6eded26022145c80bf6309e59313a85d8a09f8d
Bruce Forstall [Mon, 14 Nov 2016 21:44:06 +0000 (13:44 -0800)]
Merge pull request dotnet/coreclr#8111 from BruceForstall/FixTestNewlines
Don't generate explicit newlines in SIMD tests
Commit migrated from https://github.com/dotnet/coreclr/commit/
152550bd09144a061dcb1d0675a9859923032aa5
chcosta [Mon, 14 Nov 2016 21:40:51 +0000 (13:40 -0800)]
Merge pull request dotnet/coreclr#8115 from chcosta/updatebuildtools
Update buildtools to version 01008-01
Commit migrated from https://github.com/dotnet/coreclr/commit/
e4a36d27e4ea7ce177af7400b5727f68fcbcb90d
Pat Gavlin [Mon, 14 Nov 2016 21:10:52 +0000 (13:10 -0800)]
Merge pull request dotnet/coreclr#8031 from pgavlin/VSO283795
Do not fold `(x + null)` in certain cases.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8914cb0fb1b512e77343c3006a95dd1b7eef4197
Sivarv [Mon, 14 Nov 2016 19:07:36 +0000 (11:07 -0800)]
Merge pull request dotnet/coreclr#8101 from sivarv/rmwOpt
Generate "inc/dec [mem]" instead of "add/sub [mem], 1" for Read-Modify-Write (RMW) operations.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1f227ce8f53882520fba9ad383f5740e5daecc0a
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
62f116de0a4752046ab951312b5d242aed16f12d
Rahul Kumar [Mon, 14 Nov 2016 18:17:28 +0000 (10:17 -0800)]
Merge pull request dotnet/coreclr#8100 from rahku/reflection
Expose Assembly::GetFile(s) apis
Commit migrated from https://github.com/dotnet/coreclr/commit/
d67e1627158ff5c973b21faf9fd03ebbb49f4679
Christopher Costa [Mon, 14 Nov 2016 16:40:16 +0000 (08:40 -0800)]
Update buildtools to version 01008-01
Commit migrated from https://github.com/dotnet/coreclr/commit/
b30be6971ce58f87fd15478fc62b0f581cf4cae4
Gaurav Khanna [Mon, 14 Nov 2016 05:21:07 +0000 (21:21 -0800)]
Merge pull request dotnet/coreclr#8108 from gkhanna79/Arm32Test
Enable WinArm32 P1 Test Build
Commit migrated from https://github.com/dotnet/coreclr/commit/
32fa4911074bf95a30f7fa1828701fb920af91c6
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ba0ed89958b2c1185b4dc6aba75598d9b542f90e
Gaurav Khanna [Sun, 13 Nov 2016 23:47:11 +0000 (15:47 -0800)]
Enable WinArm32 P1 Test Build
Commit migrated from https://github.com/dotnet/coreclr/commit/
ec01f8b6cc44b3fb89933dc1008bfb6a0217727c
Andy Ayers [Sun, 13 Nov 2016 22:15:14 +0000 (14:15 -0800)]
Inliner: ensure all statements have an inline context (dotnet/coreclr#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).
Commit migrated from https://github.com/dotnet/coreclr/commit/
445405d84034564a6433074e0f920f74105ba499
Rahul Kumar [Sun, 13 Nov 2016 17:34:58 +0000 (09:34 -0800)]
Add implementation for AssemblyName::EscapedCodeBase (dotnet/coreclr#8072)
Commit migrated from https://github.com/dotnet/coreclr/commit/
b28f557ee79d70a83e299d6c83a2c803139edba2
John Chen [Sun, 13 Nov 2016 00:20:14 +0000 (16:20 -0800)]
Remove conflicting proj files (dotnet/coreclr#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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
dfd0e4b4e20d00a02fdd412251f6146a639ae33c
Stephen Toub [Sat, 12 Nov 2016 14:19:33 +0000 (09:19 -0500)]
Merge pull request dotnet/coreclr#8085 from stephentoub/daylight_alloc
Avoid allocations in DateTime.Now
Commit migrated from https://github.com/dotnet/coreclr/commit/
ca6ca4746754fa87aff344c32ed4b004ce8746de
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
2457e2b3831d73ff5178961a62f7a6fcc332eceb
Andy Ayers [Sat, 12 Nov 2016 03:52:24 +0000 (19:52 -0800)]
Inliner: updates to random inlining (dotnet/coreclr#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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
7697dec7db3e34239ffa33d8867de12f7176e415
Dmitry-Me [Sat, 12 Nov 2016 00:54:37 +0000 (03:54 +0300)]
Remove redundant statement (dotnet/coreclr#7900)
Commit migrated from https://github.com/dotnet/coreclr/commit/
6d93a827a2417662e64d55fea252acd49b5b9ebb
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8753709778f4282b16647946dfe61cfd8f8414e5
Tarek Mahmoud Sayed [Fri, 11 Nov 2016 23:46:47 +0000 (15:46 -0800)]
Enable the rest if TimeZoneInfo APIs (dotnet/coreclr#8096)
Commit migrated from https://github.com/dotnet/coreclr/commit/
38b1f672caeb8f01aa2970c02c06b4ae7fcf06c4
Rahul Kumar [Fri, 11 Nov 2016 20:10:16 +0000 (12:10 -0800)]
Expose Assembly::GetFile(s) apis
Commit migrated from https://github.com/dotnet/coreclr/commit/
b654a3dd2a8dc0190257dd326d651846cd6ce3b6
Matt Ellis [Fri, 11 Nov 2016 22:20:40 +0000 (14:20 -0800)]
Rename gitmirrorfile
Commit migrated from https://github.com/dotnet/coreclr/commit/
17b820f470b22f0d8b8d5cb91257bac2b0bee5b4
Matt Ellis [Fri, 11 Nov 2016 21:52:11 +0000 (13:52 -0800)]
Merge pull request dotnet/coreclr#8087 from ellismg/selective-mirror-sketch
Update .gitmirror metadata
Commit migrated from https://github.com/dotnet/coreclr/commit/
be1710cde6fe0ad16716560f9c8c6c880a248285
Joseph Tremoulet [Fri, 11 Nov 2016 19:37:45 +0000 (14:37 -0500)]
Merge pull request dotnet/coreclr#8001 from JosephTremoulet/UnrollSimd
Enable unrolling of SIMD_LIMIT loops
Commit migrated from https://github.com/dotnet/coreclr/commit/
5ae721ccb6b3746bb42fbc91e8349fa7f4b064d2
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 dotnet/coreclr#7843.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e3e7d1ac2e2949479ff64c3de4b6aebe271d1ed4
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
634e3391953123acd61aa3846b25546b97fe1665
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`).
Commit migrated from https://github.com/dotnet/coreclr/commit/
705c3375224b7c6d5ed3a195edcec8e2b7a0e9c9
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
56dac6e09a732cf371baae2b0d696efb93861824
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
4251467f9512baededbdbe86d3fcf6d147833727
Andy Ayers [Fri, 11 Nov 2016 19:24:05 +0000 (11:24 -0800)]
Merge pull request dotnet/coreclr#7788 from AndyAyersMS/InlinePins
Inliner: support inlining of methods with pinned locals
Commit migrated from https://github.com/dotnet/coreclr/commit/
c06646d47bc3ccb1580ee4dfef8cdc1b858e28ae
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
7c9157ea5ebc42da7660380601f6b0d6250fe2f1
Koundinya Veluri [Fri, 11 Nov 2016 10:25:31 +0000 (02:25 -0800)]
Merge pull request dotnet/coreclr#8042 from kouvel/Api
Expose some things for ns2.0
Commit migrated from https://github.com/dotnet/coreclr/commit/
388b1487baa32d9550c88997ba5d3368aeaba8b3
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/corefxdotnet/coreclr#11638
- dotnet/corefxdotnet/coreclr#11633
- dotnet/corefxdotnet/coreclr#11635
- dotnet/corefxdotnet/coreclr#11636
- dotnet/corefxdotnet/coreclr#13484
Commit migrated from https://github.com/dotnet/coreclr/commit/
9c1550e443a73cd072608ea18f846f16441b4db3
John Chen [Fri, 11 Nov 2016 01:49:02 +0000 (17:49 -0800)]
Save registers xmm8..15 on Mac OSX (dotnet/coreclr#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 dotnet/coreclr#2266.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1b0dad67bc88bd4a45f59e63c6bf9fd5e7eb8596
Tarek Mahmoud Sayed [Fri, 11 Nov 2016 00:58:28 +0000 (16:58 -0800)]
Enable time zone for netstandard1.7 (dotnet/coreclr#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
Commit migrated from https://github.com/dotnet/coreclr/commit/
d3ad5db7bf3209a5b0ea341cee19230d2ba0fef5
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 (dotnet/coreclr#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 dotnet/coreclr#6518
Commit migrated from https://github.com/dotnet/coreclr/commit/
77a138907acdd6f51de0200a9148676fad7c3cbd
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 dotnet/coreclr#8077.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1175931349e82199b7511b911920e16be65d6461
Michelle McDaniel [Thu, 10 Nov 2016 22:52:32 +0000 (14:52 -0800)]
Merge pull request dotnet/coreclr#8056 from adiaaida/updateFormattingJobPatch
Create patches in formatting job
Commit migrated from https://github.com/dotnet/coreclr/commit/
1af2a104b0cce89016d79397fe366e2c70956f52
Dan Moseley [Thu, 10 Nov 2016 22:35:55 +0000 (14:35 -0800)]
README.md is the idiomatic approach for github (dotnet/coreclr#8076)
Commit migrated from https://github.com/dotnet/coreclr/commit/
a6a2f104cdaba5b947d518b11357c26522b7b298
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
503de5e8dde3d996b06db41c0b46617cebbdee11
Rahul Kumar [Thu, 10 Nov 2016 21:46:29 +0000 (13:46 -0800)]
Merge pull request dotnet/coreclr#8046 from rahku/_resolveAssembly
Expose AppDomain::AssemblyResolve
Commit migrated from https://github.com/dotnet/coreclr/commit/
f76e895a504f4f3a93c519218214d70ce277c4db
Christopher Costa [Thu, 10 Nov 2016 19:20:50 +0000 (11:20 -0800)]
Enable binclash logger
Commit migrated from https://github.com/dotnet/coreclr/commit/
9fd7bc41de9700398fb3eedaae172bebd4aa79e1
Rahul Kumar [Tue, 8 Nov 2016 19:13:33 +0000 (11:13 -0800)]
Expose AppDomain::AssemblyResolve
Commit migrated from https://github.com/dotnet/coreclr/commit/
5812c03f214da72df18b41c478d4b4bb8e1bc4c1
Greg G [Thu, 10 Nov 2016 15:03:24 +0000 (16:03 +0100)]
Update IntrospectionExtensions.cs (dotnet/coreclr#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).
Commit migrated from https://github.com/dotnet/coreclr/commit/
55a89556b53feeb6fcaa15ae48305994e690f2e0
Justin Van Patten [Thu, 10 Nov 2016 14:58:33 +0000 (06:58 -0800)]
BinaryReader: Use cached default encoding instance (dotnet/coreclr#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).
Commit migrated from https://github.com/dotnet/coreclr/commit/
1b71a36e5fdfe8616271828b1c48cf5fe604d07f
dotnet bot [Thu, 10 Nov 2016 07:52:57 +0000 (23:52 -0800)]
Update CoreClr, CoreFx to beta-24709-03, beta-24710-01, respectively (dotnet/coreclr#7922)
Commit migrated from https://github.com/dotnet/coreclr/commit/
e0622498d99d51f008e59dcc2ea8ec0301689bd8
Justin Van Patten [Thu, 10 Nov 2016 04:08:45 +0000 (20:08 -0800)]
Remove unneeded field from BinaryWriter (dotnet/coreclr#8015)
The field only exists in .NET Framework for serialization compat. It
isn't needed on CoreCLR.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b73e06eca188aac213c8f5b03759305bbf4cb429
Justin Van Patten [Thu, 10 Nov 2016 04:08:00 +0000 (20:08 -0800)]
StreamWriter/BinaryWriter: Use same cached encoding instance (dotnet/coreclr#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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1e83b1863e1a091fa9b7bbab283c2dace3d289bf
Justin Van Patten [Thu, 10 Nov 2016 04:05:11 +0000 (20:05 -0800)]
Avoid repeated delegate allocations in FileStream.FlushAsync (dotnet/coreclr#8048)
Avoid the `Action<object>` allocation on each invocation of
`FileStream.FlushAsync` on Windows. This change makes the Win32
implementation match Unix.
Commit migrated from https://github.com/dotnet/coreclr/commit/
2d19d2e7d57deee034650a8cc078c4ad93ce03c8
Sujin Kim [Thu, 10 Nov 2016 04:00:22 +0000 (13:00 +0900)]
ARM-CI : Fix segmentation faults on running tests (dotnet/coreclr#8019)
* ARM-CI : Fix segmentation faults on running tests
To make sure the reason of test failure ramdomly( dotnet/coreclr#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(dotnet/coreclr#7991) to '/mnt' for resolving no space issue.
Commit migrated from https://github.com/dotnet/coreclr/commit/
96c6dd093b4a08b2253b235467f2284a489b2e9c
Bruce Forstall [Thu, 10 Nov 2016 03:58:31 +0000 (19:58 -0800)]
Remove unnecessary newline in WriteLine (dotnet/coreclr#8047)
Commit migrated from https://github.com/dotnet/coreclr/commit/
3a93bfde4e2dc161f6436062ee75c99e101c6541
Alex Perovich [Thu, 10 Nov 2016 03:57:13 +0000 (19:57 -0800)]
Add missing ref emit enum members for ns2.0 (dotnet/coreclr#8062)
Commit migrated from https://github.com/dotnet/coreclr/commit/
570530b69106f4523ead97697e22674e02769643
Jeremy Kuhne [Thu, 10 Nov 2016 03:54:36 +0000 (19:54 -0800)]
Add IntPtr constructors to FileStream (dotnet/coreclr#8063)
Commit migrated from https://github.com/dotnet/coreclr/commit/
e0078c327fd61c346583997cf31781622d355e86
Sivarv [Thu, 10 Nov 2016 03:53:24 +0000 (19:53 -0800)]
Don't turn off compCanUseSSE2 on x86 RyuJIT under jit stress. (dotnet/coreclr#8068)
Commit migrated from https://github.com/dotnet/coreclr/commit/
1d5c60807c9182290245c266c4f6daac47d2a4a7
Faizur Rahman [Thu, 10 Nov 2016 03:52:41 +0000 (19:52 -0800)]
Port Marshal.GenerateProgIdForType in CoreCLR (dotnet/coreclr#8070)
Commit migrated from https://github.com/dotnet/coreclr/commit/
4652e02e893095da3b03c6ed390b9852534f7b69
Faizur Rahman [Thu, 10 Nov 2016 02:01:15 +0000 (18:01 -0800)]
Merge pull request dotnet/coreclr#8069 from shrah/master
Return Type.GUID for Marshal.GenerateGuidForType in CoreCLR
Commit migrated from https://github.com/dotnet/coreclr/commit/
0878bdf69669f226a450c9a80236b47300e1a79e
Jan Vorlicek [Thu, 10 Nov 2016 01:28:29 +0000 (17:28 -0800)]
Fix missing exports in mscordaccore.so (dotnet/coreclr#8058)
I have recently added some exports to the mscordaccore.so and it was
found that they were not honored and libsos.so got some unresolved
symbols.
I have found that the issue is that unlike for libcoreclr.so, we
were not asking linker to include the whole PAL and so it has
eliminated those functions due to the fact they were not called
from the PAL itself.
This change fixes it.
Commit migrated from https://github.com/dotnet/coreclr/commit/
387613639c271615abae6c69c3344caedfca13b3
Faizur Rahman [Thu, 10 Nov 2016 01:20:37 +0000 (17:20 -0800)]
Return Type.GUID for Marshal.GenerateGuidForType in CoreCLR
Commit migrated from https://github.com/dotnet/coreclr/commit/
c026bdb8321d453f144b4ffce300c2e90386e9ee
Roman Shchekin [Thu, 10 Nov 2016 00:06:40 +0000 (03:06 +0300)]
Memory growth algorithm improvement in coreconsole (dotnet/coreclr#7870)
* Now Append will work properly if strLen is big (for example 3xm_capacity). And value 1.5 is better for memory growth.
* Correct way of calculating 1.5 (without floating point calculation, thanks mikedn)
* After long discussion we decided that simple and aggressive allocation is better for this case
Commit migrated from https://github.com/dotnet/coreclr/commit/
c637c919adcd0c0d7fcd8818810bcb727408fa51
Andy Ayers [Sat, 22 Oct 2016 01:46:50 +0000 (18:46 -0700)]
Inliner: support inlining of methods with pinned locals
The inliner now can inline a subset of methods with pinned locals --
namely those where the language compiler (eg CSC) can determine that a
try/finally is not necessary to ensure unpinning, and where the jit
likewise an determines that a try/finally is likewise not needed in
the root method.
Generally speaking this allows inlining in cases where the inline method
is fairly simple and does not any contain exception handling, and the
call site is not within a try region.
When inlining methods that have pinned locals and also return a value,
the jit ensures that the return value is spilled to a temp so that the
unpins can be placed just after the inlined method body and won't alter
the return value.
Mark FixedAddressValueType as GCStressIncompatible since the "unfixed"
class static may get re-allocated at the same address. This seems to
happen even without these changes but happens much more frequently with
them.
Closes dotnet/coreclr#7774.
Commit migrated from https://github.com/dotnet/coreclr/commit/
c60e68e51a8a09886df5e085986dae76cd74f974
Andy Ayers [Wed, 9 Nov 2016 23:03:23 +0000 (15:03 -0800)]
Inliner: enable inlining of methods with conditional throws (dotnet/coreclr#8038)
* Inliner: enable inlining of methods with conditional throws
Remove inlining limitation for methods that return values and have
conditional throws. This limitation was most likely a vestige of an
older inlining implementation that did not break trees at inline
call sites.
Also removed the now-unused observation and the `seenConditionalJump`
member variable. Merged ifdef blocks in `impInit`.
Ran full desktop testing, no issues.
Enables a handful of inlines in the various code size suites. For the
most part these slightly increase code size but can often shorten the
non-EH paths in the code.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e76da565c106016d604b95f3bb7eadd24ceaf18a
sandreenko [Wed, 9 Nov 2016 22:49:51 +0000 (14:49 -0800)]
Merge pull request dotnet/coreclr#7981 from sandreenko/fix_vn_in_cse
Don't transform GT_SUB tree outside the global morph phase.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a67530b73c422e0158221dde74f2cb38d2aa8d33
Russ Keldorph [Wed, 9 Nov 2016 21:25:23 +0000 (13:25 -0800)]
Merge pull request dotnet/coreclr#8033 from RussKeldorph/nopopup
Disable GUI dialogs for assertion failures on Windows by default
Commit migrated from https://github.com/dotnet/coreclr/commit/
fbf42ae0d137c23eab92de193f1acde4c564cd58
Eric StJohn [Wed, 9 Nov 2016 20:15:06 +0000 (12:15 -0800)]
Merge pull request dotnet/coreclr#8041 from ericstj/updateBuildTools
Update BuildToolsVersion to 01007-02
Commit migrated from https://github.com/dotnet/coreclr/commit/
19aa4d73339aa84ad0967bd91e2621151e7e93a2
Sivarv [Wed, 9 Nov 2016 18:20:47 +0000 (10:20 -0800)]
Merge pull request dotnet/coreclr#8049 from sivarv/lsraAssertFix
If the very first ref position of an interval has a register assignment of RBM_NONE indicate it could also be a regOptional
Commit migrated from https://github.com/dotnet/coreclr/commit/
a144e0480b274bf85dc9ce557c7f8edff3596556
Russ Keldorph [Mon, 7 Nov 2016 22:40:14 +0000 (14:40 -0800)]
Disable GUI dialogs on Windows by default
This change disables creating pop-up dialog boxes by default on Windows
when assertions fail. The change consists of two pieces:
1) Make COMPlus_NoGuiOnAssert effective in Release builds (currently only
Debug/Checked builds)
2) Make DebuggerAssert::ShowDefaultAssertDialog honor the
COMPlus_NoGuiOnAssert variable.
3) Make COMPlus_NoGuiOnAssert=1 by default.
Note that COMPlus_NoGuiOnAssert was already honored for assertions
originating from native code such as the JIT. If pop-ups are desired,
one can still set COMPlus_NoGuiOnAssert=0.
Fixes dotnet/coreclr#7678
Commit migrated from https://github.com/dotnet/coreclr/commit/
ca5f9f4f76a290379e0246c2da00293739c467f3
Matt Mitchell [Wed, 9 Nov 2016 17:31:19 +0000 (09:31 -0800)]
Merge pull request dotnet/coreclr#8022 from mmitche/disable-email-pub
Remove email publishing calls
Commit migrated from https://github.com/dotnet/coreclr/commit/
1c6a822463237bab1efba7107c2824120b0e75a1
Evgeny Pavlov [Wed, 9 Nov 2016 17:08:49 +0000 (20:08 +0300)]
[Linux][GDBJIT] Fix crashes related with locals debug info generation (dotnet/coreclr#7874)
* [GDBJIT] Fix several issues related with generation debug info for locals:
* Fix crash on generics static
* Add support of pointer type
* Fix incorrect processing of classes when we have several locals with the same class type
* Move gdbjit.cpp from VM_SOURCES_DAC_AND_WKS_COMMON to VM_SOURCES_WKS
Commit migrated from https://github.com/dotnet/coreclr/commit/
09d6822d7b99bfaa7bb27d0c7c560fdad36f8fd4
Eric St. John [Wed, 9 Nov 2016 16:48:31 +0000 (08:48 -0800)]
Fix IntermediateOutputPath for mscorlib facade
Previously we were working around this by using double backslash but
GenFacades broke this when adding response file support and double-
unescaping. Workaround using a forward slash instead.
Commit migrated from https://github.com/dotnet/coreclr/commit/
88e129f263b719eae583c4f8296a5cee2b93cdf8
Tarek Mahmoud Sayed [Wed, 9 Nov 2016 04:38:41 +0000 (20:38 -0800)]
Avoid failures when allocate memory in native (dotnet/coreclr#8028)
* Avoid failures when allocate memory in native
using new in the native side can throw and the app will shutdown. instead we detect the failure and throw a managed exception
* Use same mechanism we return the error code from GetSortHandle
* Add assert
* Dispose the safeHandle
Commit migrated from https://github.com/dotnet/coreclr/commit/
72757f84b32951f873c5d4ca6ae8bc947e8356b3
Stephen Toub [Wed, 9 Nov 2016 03:29:51 +0000 (22:29 -0500)]
Merge pull request dotnet/coreclr#8043 from stephentoub/remove_delegate_alloc
Remove delegate allocation per ThreadPoolBoundHandleOverlapped
Commit migrated from https://github.com/dotnet/coreclr/commit/
c106ebd2cfb76262250c9f038897c6e7154eb433
sivarv [Wed, 9 Nov 2016 02:08:31 +0000 (18:08 -0800)]
If the very first ref position of an interval has a register assignment of RBM_NONE indicate it could also be a regOptional
Commit migrated from https://github.com/dotnet/coreclr/commit/
2eada9c3cf8a7f4af0cbcea68145e89b85b66d79
sandreenko [Tue, 8 Nov 2016 23:50:11 +0000 (15:50 -0800)]
Merge pull request dotnet/coreclr#8040 from sandreenko/additional-commit-for-PR-8014
additional commit to PR 8014
Commit migrated from https://github.com/dotnet/coreclr/commit/
a194fe7037ea6db117e6f6e30d6533468ecee04d
Pat Gavlin [Tue, 8 Nov 2016 23:33:11 +0000 (15:33 -0800)]
Merge pull request dotnet/coreclr#8023 from pgavlin/MoveAltJitCrossgen
Use the alt JIT for S.P.CoreLib if altjitcrossgen is specified and change crossgen to always pass USE_SSE2 to the JIT.
Commit migrated from https://github.com/dotnet/coreclr/commit/
39273bf1814bd8d5da932b134ac1164f53416e08
Bruce Forstall [Tue, 8 Nov 2016 22:13:14 +0000 (14:13 -0800)]
Merge pull request dotnet/coreclr#8035 from hseok-oh/fix_7871
SuperPMI: Support GetHFAType for ARM32 hardFP
Commit migrated from https://github.com/dotnet/coreclr/commit/
b1a18e4f2d56bcabd18bef0928c050b8556570ad
Stephen Toub [Tue, 8 Nov 2016 21:36:56 +0000 (16:36 -0500)]
Remove delegate allocation per ThreadPoolBoundHandleOverlapped
Commit migrated from https://github.com/dotnet/coreclr/commit/
0481c67ed1d7be74f2cbf9e2c6268b54e80081de
Eric St. John [Tue, 8 Nov 2016 20:51:42 +0000 (12:51 -0800)]
Update BuildToolsVersion to 01007-02
Commit migrated from https://github.com/dotnet/coreclr/commit/
23ddfe738aead58b06f682f7b0ef82c866579fd5
Faizur Rahman [Tue, 8 Nov 2016 20:50:52 +0000 (12:50 -0800)]
Merge pull request dotnet/coreclr#8004 from shrah/master
Expose Marshal.CleanupUnusedObjectsInCurrentContext
Commit migrated from https://github.com/dotnet/coreclr/commit/
0114ed69ca7580e1cfc17d4757cfc0d8ff5dc282
Sergey Andreenko [Tue, 8 Nov 2016 20:41:45 +0000 (12:41 -0800)]
Revert Michal jit changes
Commit migrated from https://github.com/dotnet/coreclr/commit/
f90410ed6b4bc8e216c219b2d6fb3c8794404e40
Michal Strehovský [Tue, 8 Nov 2016 19:16:41 +0000 (11:16 -0800)]
Report CORINFO_FLG_CONTAINS_GC_PTR for TypedReference (dotnet/coreclr#8014)
Commit migrated from https://github.com/dotnet/coreclr/commit/
e6b85aa2a14feb666b9005a53c41148de511df74
Faizur Rahman [Fri, 4 Nov 2016 21:50:02 +0000 (14:50 -0700)]
Expose Marshal.CleanupUnusedObjectsInCurrentContext
This change exposes Marshal.CleanupUnusedObjectsInCurrentContext. Also it a GetHINSTANCE implementation for non-windows platform by throwing
ArgumentNullException as per https://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.gethinstance(v=vs.110).aspx.
Commit migrated from https://github.com/dotnet/coreclr/commit/
7a619b88d713a8e4fcd59c0d11ccc3f55155bab0
Igor Kulaychuk [Tue, 8 Nov 2016 16:24:08 +0000 (19:24 +0300)]
[Linux][GDB-JIT] Fix lldb stepping issues (dotnet/coreclr#7777)
* Pass more info about source to native line mapping from SymbolReader
Pass mapping info for zero and HiddenLine line numbers.
Also supply ICorDebugInfo::SourceTypes info for each line.
Lines are reorganized to have ascending native addresses.
* Fix DWARF line info generation for negative line change
* Add prologue_end and epilogue_begin to DWARF line info
* Generate DWARF method description for each code range with PROLOG and EPILOG
* Map each called __thunk symbol as a separate section
Special .thunk sections from different methods may overlap which
prevent the debugger from correctly resolving symbols (__thunk_*)
from those sections.
Mapping each called __thunk symbol as a separate section (.thunk_#)
allows the debugger to resolve __thunk* symbols correctly.
The code for searching first valid line number of a method
now checks only line numbers. There is no need for additional
check of non-empty filename.
If no valid line number was found then do not generate debug info at all.
* Fix buffer overrun when generating ELF symbol name
* Fix memory leak when generating ELF symbol name
* Fix memory leak when NotifyGdb::MethodCompiled fails
Manage array of FunctionMember pointers with NewArrayHolder.
* Refactor counting number of ELF sections in GDBJIT
* Refactor building ELF section names and headers
* Refactor hardcoded ELF section indeces
* Refactor memory allocation for ELF section names
When currently allocated memory is not enough for next
section name, the memory is reallocated with some
extra amount which grows twice on each reallocation.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a136b2e5c26c46882eb70ed59b424673965b58ce
Hyeongseok Oh [Tue, 8 Nov 2016 04:37:08 +0000 (13:37 +0900)]
fix typo
Commit migrated from https://github.com/dotnet/coreclr/commit/
558aa86e337110a069112f02c3cd893074d6c4c4
Hyeongseok Oh [Tue, 8 Nov 2016 02:31:29 +0000 (11:31 +0900)]
Support GetHFAType in SuperPMI for ARM32 hardFP
Commit migrated from https://github.com/dotnet/coreclr/commit/
6311469038e83a3f24e70c9f99f92a5745a94970
Rama krishnan Raghupathy [Tue, 8 Nov 2016 00:42:06 +0000 (16:42 -0800)]
Merge pull request dotnet/coreclr#7988 from ramarag/lockjson
Removing the copy of project.lock.json to bin folder
Commit migrated from https://github.com/dotnet/coreclr/commit/
e3a9a38aae7146060d0c8c06758b20c81d6d6c22
Jarret Shook [Mon, 7 Nov 2016 23:24:58 +0000 (15:24 -0800)]
Merge pull request dotnet/coreclr#8026 from jashook/arm64_g_flag_multiregstructarg
Arm64 add missing G flag and possibly X flags
Commit migrated from https://github.com/dotnet/coreclr/commit/
2d63e4017dc50b16bd7d9acca93092b3d859e4e4
Pat Gavlin [Mon, 7 Nov 2016 22:00:01 +0000 (14:00 -0800)]
Do not fold `(x + null)` in certain cases.
Morph attempts to fold `(x + null)` into `null` under the logic that the
resulting address is out-of-bounds by definition (in other words, adding
an offset to `null` always produces `null`). Under certain
circumstances, however, this transformation is either incorrect or
undesirable:
- If `x` contains side effects, the add should not be folded, as doing
so incorrectly discards the side effects
- If we have called morph during CSE, the add should not be folded, as
doing so may invalidate some of CSE's internal state (in particular,
the removed tree may contain a subtree that is scheduled for CSE)
This change excludes the folding transformation in both of these cases.
Commit migrated from https://github.com/dotnet/coreclr/commit/
7dfbf313b9d525a1fbde6d09264a5ed3089be342
Carol Eidt [Mon, 7 Nov 2016 21:47:52 +0000 (13:47 -0800)]
Update testing-with-corefx.md
Clarify the way the `BUILDTOOLS_OVERRIDE_RUNTIME` option is passed.
Commit migrated from https://github.com/dotnet/coreclr/commit/
fd402e530b504933cbcef08408bf76a666a54a2f
jashook [Mon, 7 Nov 2016 21:06:20 +0000 (13:06 -0800)]
Arm64 add missing G flag and possibly X flags
For indirections created by morphing obj(16) make sure the G and
X flag are set.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ba6a037fd0cd3cdf9b871d16f3564e3b2e3bd3d9
Pat Gavlin [Mon, 7 Nov 2016 20:08:00 +0000 (12:08 -0800)]
Change crossgen to always pass USE_SSE2 to the JIT.
.NET Core and the RyuJIT x86/x64 backends require SSE2. Always pass this
flag to the JIT.
Commit migrated from https://github.com/dotnet/coreclr/commit/
c77bad138743faa096aa55d364b6bbed6b6c6709
Sergey Andreenko [Thu, 3 Nov 2016 00:33:04 +0000 (17:33 -0700)]
Set VN argument for changeOper during morph.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e94186352e70545fcd6dc64213f07fe45f0c810d
Sivarv [Mon, 7 Nov 2016 19:17:41 +0000 (11:17 -0800)]
Merge pull request dotnet/coreclr#8011 from sivarv/lsraFix
While unassigning a phyReg, establish association with a previous interval only if it is different from the one it is being unassigned
Commit migrated from https://github.com/dotnet/coreclr/commit/
5c653c193336fd8d1c3e88eabb64614612838f77