platform/upstream/dotnet/runtime.git
4 years agoJIT: fix assertion prop issues with subtypes (dotnet/coreclr#27337)
Andy Ayers [Wed, 23 Oct 2019 01:03:29 +0000 (18:03 -0700)]
JIT: fix assertion prop issues with subtypes (dotnet/coreclr#27337)

* don't use late args to destructure helper call
* create proper subtype constant kind when jitting

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

4 years agoBGC tuning using the free list with PI loops (dotnet/coreclr#26695)
Maoni Stephens [Wed, 23 Oct 2019 01:03:03 +0000 (18:03 -0700)]
BGC tuning using the free list with PI loops (dotnet/coreclr#26695)

This is the 1st part of BGC tuning using FL (free list) with a PID loop. Historically the most significant factor for triggering a BGC is based on the allocation budget. This experimental feature triggers based on the FL in gen2/3 with a PID loop (by default we only use PI, no D) so we use the allocation calculated based on the FL to determine when to trigger the next BGC.

    The goal of the PI feedback loop

The end goal of the tuning is keep a const physical ML (memory load). The ML goal is specified as a percentage (meaning the percent of physical memory in use). And we aim to do as few BGCs as possible to achieve this memory load.

This is most useful for the case where you are seeing that a large percent of free space in gen2 isn't getting used when a BGC is triggered; or you have plenty of memory but the GC heap size only takes up a small percentage and you want to delay BGCs to reduce the CPU consumed by BGC.

    Enable the FL tuning PI loop

Since this is an experimental feature, by default it's disabled. To enable set this env var:

set COMPlus_BGCFLTuningEnabled=1

When the FL tuning is enabled, by default we set the ML load to 75%. You can change it with this env var:

set COMPlus_BGCMemGoal=X

Note as with any COMPlus var, the value is interpreted as a hex number, not dec.

    Perf consideration of the current PI loop

Of course there’s always perturbation. From BGC’s POV there are 2 categories of perturbation –

1) from GC’s own perf characteristics changes, for example, suddenly we see a lot of pins from gen1 that get promoted into gen2.
2) non GC factors – this could be due to sudden increase of native memory usage in the process; or other processes on the same machine simply increase/decrease their memory usage.

And generally we don’t want to do something very high like 90% ‘cause it’s hard to react when the memory is tight – GC would need to compact and currently BGC does not compact. So for now we have to assume that “retracting the heap is difficult” which means we want our PI loop to be fairly conservative.

So we actually have another PI loop (the inner loop) to make sure the “sweep flr” is at a reasonable value. “Sweep flr” is the FLR (Free List Ratio) before BGC rebuilds the free list – so you can think of this as the smallest flr during a BGC. So the inner loop has a “sweep flr” goal of 20% by default which is pretty conservative. And when we can incrementally compact I would expect to reduce this by a fair amount. Another possibility is we do not set this as a fixed number and rather calculate a reasonable one dynamically based on what we observe how the free list is used.

Of course just because BGC does not compact it doesn’t mean that the total gen2 size cannot get smaller. It could get smaller just by objects at the end of gen2 naturally dying.

+ Initialization of the PI loops

We have to have some way to get this whole thing started so I usually do a few BGCs to reach 2/3 mem load goal then start using PI loops to decide when to trigger the next BGC.

+ Panic mode

I use a very simple rule to see if I should panic, ie, do an NGC2. If we observe the memory load is (goal + N%) where N is just a number we determine, we do an NGC2. This actually turned out to give decent results because we give it ample opportunity to allow some oscillation around goal (instead of panicking prematurely).

+ Implementation notes

When FL tuning is not enabled there should be no effect.

Record things when BGC starts, BGC sweep ends and BGC end.

I have other mechanisms like the D term, FF (feed forward) and smoothing. I have experimented with them in the past. Currently they are not enabled by default but can be enabled with COMPlus env vars.

Currently this doesn't work great with LOH because we have a fundamental limitation which is if we give free space to gen2 it's difficult to give it to LOH. One thing the user could do is to adjust the LOH threshold so most of the large object allocations happen in gen2.

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

4 years agoPriority of the '&&' operation is higher than that of the '||' operation (dotnet...
Sergey Andreenko [Tue, 22 Oct 2019 23:53:03 +0000 (16:53 -0700)]
Priority of the '&&' operation is higher than that of the '||' operation (dotnet/coreclr#27367)

It is a noway assert that was added before 2010, so that is hard to say what was the idea here.
However, the code before and the examples after show that there is no difference between `GT_EQ` and `GT_NE` and in both cases `c(omparand)` must be the first child of the compare node `t`.

Exisiting comments that confirm that it should be ((a &&b ) || c).
/* t1:c1==0 t2:c2==0 ==> Branch to BX if either value is 0
/* t1:c1!=0 t2:c2!=0 ==> Branch to BX if either value is non-0

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

4 years ago[crossgen2] Make sure hardware intrinsic are generated for CoreLib only (dotnet/corec...
Andrew Au [Tue, 22 Oct 2019 22:15:36 +0000 (15:15 -0700)]
[crossgen2] Make sure hardware intrinsic are generated for CoreLib only (dotnet/coreclr#27347)

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

4 years agoAdd documentation for SuppressGCTransition (dotnet/coreclr#27368)
Aaron Robinson [Tue, 22 Oct 2019 21:54:12 +0000 (14:54 -0700)]
Add documentation for SuppressGCTransition (dotnet/coreclr#27368)

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

4 years agoCleanup ILStub signature delta management (dotnet/coreclr#23572)
Jeremy Koritzinsky [Tue, 22 Oct 2019 21:44:50 +0000 (14:44 -0700)]
Cleanup ILStub signature delta management (dotnet/coreclr#23572)

* Teach ILStubLinker to use the managed signature for the target stack delta when the stub is a reverse stub.

Make ILStubLinker understand changing calling conventions from instance to non-instance calling conventions.

* PR Feedback.

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

4 years agoEnsure that all of the calculations for PerfScore are done using doubles (dotnet...
Brian Sullivan [Tue, 22 Oct 2019 21:04:41 +0000 (14:04 -0700)]
Ensure that all of the calculations for PerfScore are done using doubles (dotnet/coreclr#27342)

Ensure that all of the calculations for PerfScore are done using doubles

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

4 years agoFix: Expression 'refType == RefTypeUpperVectorSave' is always false. (dotnet/coreclr...
Sergey Andreenko [Tue, 22 Oct 2019 18:16:35 +0000 (11:16 -0700)]
Fix: Expression 'refType == RefTypeUpperVectorSave' is always false. (dotnet/coreclr#27352)

* Expression 'refType == RefTypeUpperVectorSave' is always false.

We have a fast return for this type several lines before that check.

* format fix after deleting a scope.

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

4 years agoRefactor genEventing script to remove SELECTANY from provider context struct definiti...
Sung Yoon Whang [Tue, 22 Oct 2019 17:35:59 +0000 (10:35 -0700)]
Refactor genEventing script to remove SELECTANY from provider context struct definitions (dotnet/coreclr#27354)

* Refactor genEventing script to remove SELECTANY initializations

* Fix windows build, remove newlines

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

4 years agoDelete `fgArgInfo::ArgsComplete():hasStackArgs` local var. (dotnet/coreclr#27350)
Sergey Andreenko [Tue, 22 Oct 2019 16:56:45 +0000 (09:56 -0700)]
Delete `fgArgInfo::ArgsComplete():hasStackArgs` local var. (dotnet/coreclr#27350)

`fgArgInfo` has a field with the same name and the same function. The duplication happened because the local var was added in 2011 and the struct field was added in 2014.

PVS warning:  The 'hasStackArgs' local variable possesses the same name as one of the class members, which can result in a confusion. morph.cpp 1247

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

4 years ago[crossgen2] Fixes the test failure when crossgen2smoke is ran with GCStress turned...
Andrew Au [Tue, 22 Oct 2019 16:20:34 +0000 (09:20 -0700)]
[crossgen2] Fixes the test failure when crossgen2smoke is ran with GCStress turned on (dotnet/coreclr#27263)

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

4 years agoAdding back more arm intrinsics that existing before refactoring (dotnet/coreclr...
Tanner Gooding [Tue, 22 Oct 2019 16:17:21 +0000 (09:17 -0700)]
Adding back more arm intrinsics that existing before refactoring (dotnet/coreclr#27153)

* Adding AdvSimd.And

* Adding AdvSimd.AndNot

* Adding AdvSimd.Or

* Adding AdvSimd.OrNot

* Adding AdvSimd.Xor

* Adding AdvSimd.Not

* Removing a trailing whitespace from AdvSimd.PlatformNotSupported.cs

* Adding AdvSimd.Subtract

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

4 years agoFix nullability error in portable thread pool (dotnet/coreclr#27366)
Filip Navara [Tue, 22 Oct 2019 15:52:23 +0000 (17:52 +0200)]
Fix nullability error in portable thread pool (dotnet/coreclr#27366)

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

4 years agoDelete Uap quirks from CoreLib (dotnet/coreclr#27356)
Jan Kotas [Tue, 22 Oct 2019 06:59:58 +0000 (23:59 -0700)]
Delete Uap quirks from CoreLib (dotnet/coreclr#27356)

This matches cleanup done in CoreFX.

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

4 years agoremove double bound check from StringBuilder.Append(char) (dotnet/coreclr#27340)
Adam Sitnik [Tue, 22 Oct 2019 05:03:40 +0000 (07:03 +0200)]
remove double bound check from StringBuilder.Append(char) (dotnet/coreclr#27340)

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

4 years agoFix -gcc flag in bash build scripts. (dotnet/coreclr#27339)
Jeremy Koritzinsky [Tue, 22 Oct 2019 04:51:55 +0000 (21:51 -0700)]
Fix -gcc flag in bash build scripts. (dotnet/coreclr#27339)

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

4 years agoAnnotate System.Resources.ResourceWriter for nullable ref types (dotnet/coreclr#41880)
Dan Moseley [Sat, 19 Oct 2019 17:01:09 +0000 (10:01 -0700)]
Annotate System.Resources.ResourceWriter for nullable ref types (dotnet/coreclr#41880)

* Annotate System.Resources.ResourceWriter for nullable ref types

* ref

* Mark common as nullable enable explicitly

* _resourceList

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/a0a1ec681fd6aab0c072769616e95ff25a151591

4 years agoReplace tfm based constants with SDK ones (dotnet/corefxdotnet/coreclr#41601)
Eriawan Kusumawardhono [Tue, 15 Oct 2019 17:11:40 +0000 (00:11 +0700)]
Replace tfm based constants with SDK ones (dotnet/corefxdotnet/coreclr#41601)

* replace DefineConstants with SDK ones

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/6909f63cce34a6112dbf34c2ae15c94c88173f33

4 years agoMove portable thread pool to shared partition (dotnet/corertdotnet/coreclr#7828)
Filip Navara [Sun, 20 Oct 2019 02:03:37 +0000 (04:03 +0200)]
Move portable thread pool to shared partition (dotnet/corertdotnet/coreclr#7828)

* Move portable thread pool to shared partition

* Rename ClrThreadPool to PortableThreadPool

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/34878b2305f0b42553b95cd22e257a1be961fefb

4 years agoRemove declspec (dotnet/coreclr#27341)
Sinan Kaya [Tue, 22 Oct 2019 01:06:04 +0000 (21:06 -0400)]
Remove declspec (dotnet/coreclr#27341)

* Remove declspec

* Forgotten conversions

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

4 years agoFix setting winrt assembly's fallback binder (dotnet/coreclr#27348)
Elinor Fung [Tue, 22 Oct 2019 00:56:41 +0000 (17:56 -0700)]
Fix setting winrt assembly's fallback binder (dotnet/coreclr#27348)

Remove unused AssemblySpec::SetHostBinder

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

4 years agoDelete dead liveness code (dotnet/coreclr#27343)
mikedn [Tue, 22 Oct 2019 00:20:58 +0000 (03:20 +0300)]
Delete dead liveness code (dotnet/coreclr#27343)

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

4 years agoJIT: fix def tree for CSE locals going into SSA (dotnet/coreclr#27301)
Andy Ayers [Mon, 21 Oct 2019 21:49:51 +0000 (14:49 -0700)]
JIT: fix def tree for CSE locals going into SSA (dotnet/coreclr#27301)

When putting a new single-def CSE local into SSA, we need to set the def tree
to the LHS of the GT_ASG, not the GT_ASG.

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

4 years agoF8 unwind code was incorrectly parsed as "F0-F4 code" in DumpUnwindInfo in src/jit...
Egor Chesakov [Mon, 21 Oct 2019 19:53:54 +0000 (12:53 -0700)]
F8 unwind code was incorrectly parsed as "F0-F4 code" in DumpUnwindInfo in src/jit/unwindarm.cpp (dotnet/coreclr#27298)

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

4 years agofind src/jit -type f -exec sed -i -e 's/gtFptrVal\./AsFptrVal()\./g' {} \; (dotnet...
Sinan Kaya [Mon, 21 Oct 2019 18:20:05 +0000 (14:20 -0400)]
find src/jit -type f -exec sed -i -e 's/gtFptrVal\./AsFptrVal()\./g' {} \; (dotnet/coreclr#27317)

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

4 years agoCleanup memory copy helpers (dotnet/coreclr#27307)
Jan Kotas [Mon, 21 Oct 2019 16:32:30 +0000 (09:32 -0700)]
Cleanup memory copy helpers (dotnet/coreclr#27307)

- Merge RuntimeImports that has just a few FCalls into Buffer.
- Delete assembly implementation of memcpy for ARM. The implementation was outdated and it was used only on Windows ARM and only for fraction of memcpy callsites.
- Delete unnecessary PInvoke into SysStringLen. We have a managed equivalent on System.Runtime.InteropServices.Marshal.
- Delete large amount of redundant code between SecureString.Windows.cs and SecureString.Unix.cs, and switch SecureString to use Spans
- Fold null check into IsWin32Atom

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

4 years agoEnabled FunctionEnter/FunctionLeave/ProfileTailcall hooks on Linux x86. (dotnet/corec...
Mikhail Kurinnoi [Mon, 21 Oct 2019 15:07:31 +0000 (18:07 +0300)]
Enabled FunctionEnter/FunctionLeave/ProfileTailcall hooks on Linux x86. (dotnet/coreclr#27201)

Based on ./src/vm/i386/asmhelpers.asm FunctionEnter/FunctionLeave/ProfileTailcall
code for Windows x86.

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

4 years agoForgotten gtIntCon (dotnet/coreclr#27330)
Sinan Kaya [Mon, 21 Oct 2019 08:30:05 +0000 (04:30 -0400)]
Forgotten gtIntCon (dotnet/coreclr#27330)

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

4 years agoReplace gtILOffset, with AsILOffset()->
Sinan Kaya [Mon, 21 Oct 2019 08:29:12 +0000 (04:29 -0400)]
Replace gtILOffset, with AsILOffset()->

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

4 years agoFix multicharacter constant issues (dotnet/coreclr#27323)
Sinan Kaya [Mon, 21 Oct 2019 05:22:29 +0000 (01:22 -0400)]
Fix multicharacter constant issues (dotnet/coreclr#27323)

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

4 years agoReplace gtAllocObj. with AsAllocObj()->
Sinan Kaya [Mon, 21 Oct 2019 05:02:24 +0000 (01:02 -0400)]
Replace gtAllocObj. with AsAllocObj()->

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

4 years agoReplace gtPhysReg. with AsPhysReg()->
Sinan Kaya [Mon, 21 Oct 2019 02:44:56 +0000 (22:44 -0400)]
Replace gtPhysReg. with AsPhysReg()->

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

4 years agoReplace gtArrIndex. with AsArrIndex()->
Sinan Kaya [Mon, 21 Oct 2019 02:44:34 +0000 (22:44 -0400)]
Replace gtArrIndex. with AsArrIndex()->

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

4 years agoReplace gtRuntimeLookup. with AsRuntimeLookup()-> (dotnet/coreclr#27320)
Sinan Kaya [Mon, 21 Oct 2019 01:40:05 +0000 (21:40 -0400)]
Replace gtRuntimeLookup. with AsRuntimeLookup()-> (dotnet/coreclr#27320)

* find src/jit -type f -exec sed -i -e 's/gtRuntimeLookup\./AsRuntimeLookup()\./g' {} \;

* Format patch

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

4 years agoReplace gtDynBlk. with AsDynBlk()->
Sinan Kaya [Mon, 21 Oct 2019 01:39:55 +0000 (21:39 -0400)]
Replace gtDynBlk. with AsDynBlk()->

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

4 years agoReplace gtBlk. with AsBlk()->
Sinan Kaya [Mon, 21 Oct 2019 01:39:44 +0000 (21:39 -0400)]
Replace gtBlk. with AsBlk()->

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

4 years agoReplace gtObj. with AsObj()->
Sinan Kaya [Mon, 21 Oct 2019 00:58:02 +0000 (20:58 -0400)]
Replace gtObj. with AsObj()->

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

4 years agoCleanup Lowering::TryCreateAddrMode (dotnet/coreclr#27284)
mikedn [Mon, 21 Oct 2019 00:22:57 +0000 (03:22 +0300)]
Cleanup Lowering::TryCreateAddrMode (dotnet/coreclr#27284)

* Move TryCreateAddrMode to XARCH LowerBlockStore

This has no effect on ARM so it doesn't need to be shared between XARCH and ARM

* Cleanup TryCreateAddrMode

* Reuse the existing node when creating address modes

GenTreeAddrMode was unnecessarily marked as "large". Appart from the waste
of memory this casues, it also makes address mode creation more complicated
because one needs to provide the use of the node so it can be updated.

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

4 years agofind src/jit -type f -exec sed -i -e 's/gtVal\./AsVal()\./g' {} \; (dotnet/coreclr...
Sinan Kaya [Mon, 21 Oct 2019 00:05:32 +0000 (20:05 -0400)]
find src/jit -type f -exec sed -i -e 's/gtVal\./AsVal()\./g' {} \; (dotnet/coreclr#27312)

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

4 years agoReplace gtStrCon. with AsStrCon()->
Sinan Kaya [Mon, 21 Oct 2019 00:04:29 +0000 (20:04 -0400)]
Replace gtStrCon. with AsStrCon()->

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

4 years agoReplace gtBoundsChk. with AsBoundsChk()->
Sinan Kaya [Mon, 21 Oct 2019 00:01:28 +0000 (20:01 -0400)]
Replace gtBoundsChk. with AsBoundsChk()->

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

4 years agoReplace gtLclVarCommon. with AsLclVarCommon()-> (dotnet/coreclr#27207)
Sinan Kaya [Mon, 21 Oct 2019 00:00:30 +0000 (20:00 -0400)]
Replace gtLclVarCommon. with AsLclVarCommon()-> (dotnet/coreclr#27207)

* find src/jit -type f -exec sed -i -e 's/gtLclVarCommon\./AsLclVarCommon()\./g' {} \;

gtLclVarCommon

* Format patch

* Format patch

* Format patch dotnet/coreclr#3

* Remove redundant /

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

4 years agoReplace gtHWIntrinsic. with AsHWIntrinsic()-> (dotnet/coreclr#27319)
Sinan Kaya [Sun, 20 Oct 2019 23:57:57 +0000 (19:57 -0400)]
Replace gtHWIntrinsic. with AsHWIntrinsic()-> (dotnet/coreclr#27319)

* find src/jit -type f -exec sed -i -e 's/gtHWIntrinsic\./AsHWIntrinsic()\./g' {} \;

* Format patch

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

4 years agoFix potential race with PerfMap::Destroy (dotnet/coreclr#27271)
Steve MacLean [Sun, 20 Oct 2019 23:13:56 +0000 (19:13 -0400)]
Fix potential race with PerfMap::Destroy (dotnet/coreclr#27271)

* Fix potential race with PerfMap::Destroy

* Make PerfMap::s_enabled Volatile<bool>

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

4 years agoAvoid unintended cached var in CMake's find_program (dotnet/coreclr#27322)
Adeel Mujahid [Sun, 20 Oct 2019 18:21:02 +0000 (21:21 +0300)]
Avoid unintended cached var in CMake's find_program (dotnet/coreclr#27322)

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

4 years agosrc/pal/src/cruntime/wchar.cpp: remove redundant condition (dotnet/coreclr#27308)
Ilya Shipitsin [Sun, 20 Oct 2019 13:24:13 +0000 (18:24 +0500)]
src/pal/src/cruntime/wchar.cpp: remove redundant condition (dotnet/coreclr#27308)

found by cppcheck

"while (*string)" already checks "string" against NULL

[src/pal/src/cruntime/wchar.cpp:641] -> [src/pal/src/cruntime/wchar.cpp:639]: (warning) Either the condition 'string?string:W16_NULLSTRING' is redundant or there is possible null pointer dereference: string.
[src/pal/src/cruntime/wchar.cpp:712] -> [src/pal/src/cruntime/wchar.cpp:710]: (warning) Either the condition 'string?string:W16_NULLSTRING' is redundant or there is possible null pointer dereference: string.

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

4 years agoMark GetTypeFromHandle as intrinsic (dotnet/coreclr#27306)
Jan Vorlicek [Sun, 20 Oct 2019 02:10:15 +0000 (04:10 +0200)]
Mark GetTypeFromHandle as intrinsic (dotnet/coreclr#27306)

This change marks GetTypeFromHandle as intrinsic and add related
missing case CorInfoHelpFunc.CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE_MAYBENULL
to GetHelperFtnUncached.

This enables crossgen2 to eliminate call to GetTypeFromHandle.

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

4 years agoChanges in virtual.cpp to reduce coredump size(~20 times less) (dotnet/coreclr#27089)
6opuc [Sat, 19 Oct 2019 20:09:20 +0000 (01:09 +0500)]
Changes in virtual.cpp to reduce coredump size(~20 times less) (dotnet/coreclr#27089)

* dotnet/coreclrdotnet/coreclr#10524 do not include reserved memory in coredump. MADV_DONTDUMP/MADV_DODUMP
* madvise(...MADV_DONTDUMP|MADV_DODUMP) only if MADV_DONTDUMP|MADV_DODUMP declared(for OSX)

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

4 years agoExtend test coverage for SafeHandle (dotnet/coreclr#27285)
Michal Strehovský [Sat, 19 Oct 2019 01:33:27 +0000 (03:33 +0200)]
Extend test coverage for SafeHandle (dotnet/coreclr#27285)

* Extend test coverage for SafeHandle

Trigger unmarshaling failure using an array marshaller. This is something crossgen2 will be able to pregenerate. The existing test case with CustomMarshaller will always be jitted and never pregenerated.

* a

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

4 years agoUse a new COR_PRF_SUSPEND_FOR_PROFILER in ICorProfilerCallback::RuntimeThreadSuspende...
Ilia [Sat, 19 Oct 2019 00:02:21 +0000 (03:02 +0300)]
Use a new COR_PRF_SUSPEND_FOR_PROFILER in ICorProfilerCallback::RuntimeThreadSuspended() when requested by profiler (dotnet/coreclr#27041)

Fixes https://github.com/dotnet/coreclr/issues/26576

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

4 years agoValidate cmake version in build scripts. (dotnet/coreclr#27293)
Jeremy Koritzinsky [Fri, 18 Oct 2019 23:40:51 +0000 (16:40 -0700)]
Validate cmake version in build scripts. (dotnet/coreclr#27293)

* Validate cmake version in build scripts.

* Only check CMake version in build-test.cmd when building native test components.

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

4 years agoDisable VectorMgdMgd_ro.csproj under stress modes. (dotnet/coreclr#27291)
Sergey Andreenko [Fri, 18 Oct 2019 22:46:57 +0000 (15:46 -0700)]
Disable VectorMgdMgd_ro.csproj under stress modes. (dotnet/coreclr#27291)

* Disable VectorMgdMgd_ro.csproj under stress modes.

* disable only on arm64.

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

4 years agoFix `costEx/Sz/level` for `GT_STORE_DYN_BLK`. (dotnet/coreclr#27277)
Sergey Andreenko [Fri, 18 Oct 2019 22:11:41 +0000 (15:11 -0700)]
Fix `costEx/Sz/level` for `GT_STORE_DYN_BLK`. (dotnet/coreclr#27277)

* Fix `costEx/Sz/level` for `GT_STORE_DYN_BLK`.

* delete more extra lines.

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

4 years agoFix assert when CORECLR_PROFILER is set but CORECLR_PROFILER_PATH is not (dotnet...
Austin Wise [Fri, 18 Oct 2019 20:52:05 +0000 (13:52 -0700)]
Fix assert when CORECLR_PROFILER is set but CORECLR_PROFILER_PATH is not (dotnet/coreclr#27138)

The null DLL name is eventually passed to FakeCoCallDllGetClassObject which
knowns how to look up the DLL name based on the CLSID specified by
CORECLR_PROFILER.

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

4 years agoRe-enable crossgen2 DGML log (dotnet/coreclr#27281)
Simon Nattress [Fri, 18 Oct 2019 18:23:30 +0000 (11:23 -0700)]
Re-enable crossgen2 DGML log (dotnet/coreclr#27281)

The dependency graph can be dumped to disk as an XML-based DGML file. This functionality was severed when we moved over from the CoreRT repo.

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

4 years agoReplace gtIndex. with AsIndex()-> (dotnet/coreclr#27257)
Sinan Kaya [Fri, 18 Oct 2019 18:01:08 +0000 (11:01 -0700)]
Replace gtIndex. with AsIndex()-> (dotnet/coreclr#27257)

* find src/jit -type f -exec sed -i -e 's/gtIndex\./AsIndex()\./g' {} \;

* Format patch

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

4 years agoReplace gtArrOffs. with AsArrOffs()-> (dotnet/coreclr#27265)
Sinan Kaya [Fri, 18 Oct 2019 18:00:19 +0000 (11:00 -0700)]
Replace gtArrOffs. with AsArrOffs()-> (dotnet/coreclr#27265)

* find src/jit -type f -exec sed -i -e 's/gtArrOffs\./AsArrOffs()\./g' {} \;

* Format patch

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

4 years agoFix unique ETW events for GC Type logging, so they are also fired across EventPipe...
John Salem [Fri, 18 Oct 2019 16:59:26 +0000 (09:59 -0700)]
Fix unique ETW events for GC Type logging, so they are also fired across EventPipe (dotnet/coreclr#27250)

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

4 years agoRewrite Buffer.BlockCopy in C# (dotnet/coreclr#27216)
Jan Kotas [Fri, 18 Oct 2019 16:23:34 +0000 (09:23 -0700)]
Rewrite Buffer.BlockCopy in C# (dotnet/coreclr#27216)

* Rewrite Buffer.BlockCopy in C#

Fixes dotnet/coreclr#27106

* Workaround to enable type check optimizations for BlockCopy only

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

4 years agoFix step with stackalloc (dotnet/coreclr#27246)
Steve MacLean [Fri, 18 Oct 2019 16:04:25 +0000 (12:04 -0400)]
Fix step with stackalloc (dotnet/coreclr#27246)

* Make ControllerStackInfo::m_returnFrame private

* Make ControllerStackInfo always capture a return frame

In case the active frame has no managed caller, capture
the unmanaged frame

* Fix step over stackalloc

Generalize handling of stack allocations and stepping

* Fix GetFunctionFromToken() argument checking

Check token type is a method before creating a CordbFunction.

Add extra assert to check for invalid tokens

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

4 years agoProcess/send etw rundown events only during graceful shutdown and not during process...
Koundinya Veluri [Fri, 18 Oct 2019 14:35:27 +0000 (07:35 -0700)]
Process/send etw rundown events only during graceful shutdown and not during process detach (a form of abrupt shutdown) (dotnet/coreclr#27238)

Longer-term fix for https://github.com/dotnet/coreclr/issues/27129:
- Etw rundown events sent during process shutdown are currently (and have for a long time) been sent during process detach. By that time, all other threads have been abruptly terminated by the OS, and as a result the state of the system is fundamentally unpredictable.
- In this particular case, locks have been orphaned by threads that have been abruptly terminated, so taking locks is not feasible during processing of rundown events, and if acquiring locks were to be avoided based on such knowledge (not recommended, this would get messy), we'd have to resort to providing information that would not accurately reflect the state, in the events
- I consider any situation where process detach occurs before an opportunity to handle graceful shutdown (that is, the runtime is unaware that a shutdown is about to happen and does not have an opportunity to handle shutdown prior to process detach (before the OS already shuts some things down)), then that is abrupt shutdown and in that scenario all bets are off - in the case of this change, etw rundown events would not be sent
- This change has the following effects:
  - Graceful shutdown such as returning from `Main` or `Environment.Exit()` will send rundown events very slighly earlier than before. Background threads will still be running and there may be other etw events interspersed among rundown events and sent after rundown events.
  - On Windows, Ctrl+C and Ctrl+Break are not handled by the runtime and by default result in abrupt termination. The only indication the runtime gets is the process detach event, by which time the OS has already terminated all other threads
    - When these events are not handled (by the runtime or by the app), this is an abrupt shutdown scenario and rundown events will not be sent
    - When these events are handled by the app and canceled along with `Environment.Exit()`, that converts these events into graceful shutdown (see above). If an app handles these events and chooses to not cancel the event, the event remains unhandled and leads to abrupt shutdown (see immediately above).
  - On Unixes, there is no significant change. SIGTERM is graceful shutdown as described above and there are no similar issues of abrupt shutdown.
- There is an option of sending rundown events upon process detach (when we don't have an opportunity to do so gracefully), but as I described above that will get messy and is not a path that we should be headed down

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

4 years agoonly set THREAD_IS_SUSPENDED if we are truly doing an async stack walk (dotnet/corecl...
David Mason [Fri, 18 Oct 2019 08:19:30 +0000 (01:19 -0700)]
only set THREAD_IS_SUSPENDED if we are truly doing an async stack walk (dotnet/coreclr#26985)

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

4 years agoChange MSBuild property name for Microsoft.Private.CoreFx.NETCoreApp version. (dotnet...
Jeremy Koritzinsky [Fri, 18 Oct 2019 07:24:26 +0000 (00:24 -0700)]
Change MSBuild property name for Microsoft.Private.CoreFx.NETCoreApp version. (dotnet/coreclr#27276)

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

4 years agoFix LTTng build for build environments with older liblttng-ust-dev (dotnet/coreclr...
Sung Yoon Whang [Fri, 18 Oct 2019 05:31:07 +0000 (22:31 -0700)]
Fix LTTng build for build environments with older liblttng-ust-dev  (dotnet/coreclr#27273)

* Fix macro redefinition to use XplatEventLogger instead of simply writing FALSE

* Fix linker error

* undo newline changes

* Some changes to comment

* Move wrapper export from eventpipe.cpp to eventtrace.cpp

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

4 years agoImprove codegen for IsNan (dotnet/coreclr#27272)
Tanner Gooding [Fri, 18 Oct 2019 02:31:25 +0000 (19:31 -0700)]
Improve codegen for IsNan (dotnet/coreclr#27272)

* Updating double.IsNaN and float.IsNaN to just `return x != x`

* Updating x86 codegen to optimize `x != x` for floating-point

* Changing the isnan optimization to only check the operand assigned registers

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

4 years agoEnable NGEN for methods marked with AggressiveOptimization (dotnet/coreclr#27259)
Dong-Heon Jung [Fri, 18 Oct 2019 00:23:51 +0000 (09:23 +0900)]
Enable NGEN for methods marked with AggressiveOptimization (dotnet/coreclr#27259)

- Methods marked with AggressiveOptimization are not NGENed at all.
- The methods are compiled during the runtime with high JITC overhead.
- It makes launching time slower over 6% in our embedded systems.

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

4 years agoJIT: describe requested and actual opt levels more accurately (dotnet/coreclr#27249)
Andy Ayers [Fri, 18 Oct 2019 00:17:02 +0000 (17:17 -0700)]
JIT: describe requested and actual opt levels more accurately (dotnet/coreclr#27249)

Note in jit dump headers and in `COMPlus_DumpJittedMethods` traces when the jit
changed the optimization level that the VM requested.

Also remove the FCOMI handling in the jit, x87 is not longer a thing. Needs to
stay in the options for now though.

Finally, reorder the `Options` struct fields to avoid gratuitous padding.

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

4 years agoReplace gtCmpXchg with AsCmpXchg()->
Sinan Kaya [Thu, 17 Oct 2019 23:52:51 +0000 (16:52 -0700)]
Replace gtCmpXchg with AsCmpXchg()->

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

4 years agoReplace gtField. with AsField()-> (dotnet/coreclr#27264)
Sinan Kaya [Thu, 17 Oct 2019 23:51:48 +0000 (16:51 -0700)]
Replace gtField. with AsField()-> (dotnet/coreclr#27264)

* find src/jit -type f -exec sed -i -e 's/gtField\./AsField()\./g' {} \;

* Format patch

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

4 years agoSimplify native component build (dotnet/coreclr#27077)
Jeremy Koritzinsky [Thu, 17 Oct 2019 23:29:52 +0000 (16:29 -0700)]
Simplify native component build (dotnet/coreclr#27077)

* Move discovery of compiler-specific tools out of gen-buildsys-* and into CMake via a configuretools.cmake file.

* Split finding the compiler from calling CMake to generate the build system. Fold as much of gen-buildsys into the CMake scripts as possible.

First pass at moving builds to cmake --build.

* Clean up build.cmd.

* Remove extra MSBuild-specific logging of native components builds.

* Fix discovering linux id.

* Move code-coverage enable out of gen-buildsys.sh

* Fix gen-buildsys.sh argument validation.

* Fix objcopy search condition.

* Add back logging parameters. Make sure we don't regress on throughput.

* Match version lookup behavior in find-clang and find-gcc.

* Determine compiler version for tool location from the file name.

* Fix typo

* PR Feedback.

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

4 years agoDelete fgMorphUnsafeBlk (dotnet/coreclr#27234)
mikedn [Thu, 17 Oct 2019 22:02:45 +0000 (01:02 +0300)]
Delete fgMorphUnsafeBlk (dotnet/coreclr#27234)

Making block copy ops non-interruptible can and should be done during lowering, at least because this is intended only for unrolled block ops and it's lowering that decides when to unroll.

This also avoids accidentally making block init ops non-interruptible - the block op starts as copy but then assertion propagation managed to transform it into init but nothing resets gtBlkOpGcUnsafe.

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

4 years agoFix incorrect log statements (dotnet/coreclr#27267)
Steve MacLean [Thu, 17 Oct 2019 20:02:12 +0000 (16:02 -0400)]
Fix incorrect log statements (dotnet/coreclr#27267)

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

4 years agoReplace gtArrElem. with AsArrElem()-> (dotnet/coreclr#27220)
Sinan Kaya [Thu, 17 Oct 2019 18:12:41 +0000 (11:12 -0700)]
Replace gtArrElem. with AsArrElem()-> (dotnet/coreclr#27220)

* find src/jit -type f -exec sed -i -e 's/gtArrElem\./AsArrElem()\./g' {} \;

AsArrElem

* Format patch

* create lclVar in gentree.cpp and remove extra cast

* delete extra casts in lower.

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

4 years agoReplace gtIntCon. with AsIntCon()-> (dotnet/coreclr#27213)
Sinan Kaya [Thu, 17 Oct 2019 17:07:10 +0000 (10:07 -0700)]
Replace gtIntCon. with AsIntCon()-> (dotnet/coreclr#27213)

* find src/jit -type f -exec sed -i -e 's/gtIntCon\./AsIntCon()\./g' {} \;

* format patch

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

4 years agoReplace gtArgPlace. with AsArgPlace()->
Sinan Kaya [Thu, 17 Oct 2019 16:58:21 +0000 (09:58 -0700)]
Replace gtArgPlace. with AsArgPlace()->

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

4 years agoReplace gtIntrinsic. with AsIntrinsic()
Sinan Kaya [Thu, 17 Oct 2019 16:58:05 +0000 (09:58 -0700)]
Replace gtIntrinsic. with AsIntrinsic()

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

4 years agoFix debug check in `CheckAndMoveRMWLastUse`. (dotnet/coreclr#27248)
Sergey Andreenko [Thu, 17 Oct 2019 16:38:28 +0000 (09:38 -0700)]
Fix debug check in `CheckAndMoveRMWLastUse`. (dotnet/coreclr#27248)

* `toTree` can't be `nullptr` because the previous condition has checked it.

* define and use the function only for x86.

* fix the issue

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

4 years agoRevert "Use ubuntu 1804 arm64 queue outerloop (dotnet/coreclr#26984)" (dotnet/coreclr...
Jarret Shook [Thu, 17 Oct 2019 16:34:30 +0000 (09:34 -0700)]
Revert "Use ubuntu 1804 arm64 queue outerloop (dotnet/coreclr#26984)" (dotnet/coreclr#27262)

This reverts commit dotnet/coreclr@54d536fd7597541b860784edebb2389723626143.

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

4 years agofind src/jit -type f -exec sed -i -e 's/gtAddrMode\./AsAddrMode()\./g' {} \; (dotnet...
Sinan Kaya [Thu, 17 Oct 2019 08:21:31 +0000 (01:21 -0700)]
find src/jit -type f -exec sed -i -e 's/gtAddrMode\./AsAddrMode()\./g' {} \; (dotnet/coreclr#27256)

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

4 years agoReplace gtLclFld. with AsLclFld()-> (dotnet/coreclr#27218)
Sinan Kaya [Thu, 17 Oct 2019 08:00:14 +0000 (01:00 -0700)]
Replace gtLclFld. with AsLclFld()-> (dotnet/coreclr#27218)

* find src/jit -type f -exec sed -i -e 's/gtLclFld\./AsLclFld()\./g' {} \;

AsLclFld

* Format patch

* Remove double cast

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

4 years agoUse armarch queue for internal builds (dotnet/coreclr#27244)
Jarret Shook [Thu, 17 Oct 2019 05:07:46 +0000 (22:07 -0700)]
Use armarch queue for internal builds (dotnet/coreclr#27244)

* Use Ubuntu.1804.Armarch for the internal arm32 jobs

* Stop testing arm32 on ubuntu16.04

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

4 years agoUse aligned memory access in JIT_StackProbe (dotnet/coreclr#27235)
Egor Chesakov [Thu, 17 Oct 2019 03:44:55 +0000 (20:44 -0700)]
Use aligned memory access in JIT_StackProbe (dotnet/coreclr#27235)

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

4 years agoDelete ENABLE_WINRT define (dotnet/coreclr#27240)
Jan Kotas [Thu, 17 Oct 2019 03:44:30 +0000 (20:44 -0700)]
Delete ENABLE_WINRT define (dotnet/coreclr#27240)

.NET Native specific code not needed anymore

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

4 years agoFix field offset computation in crossgen2 (dotnet/coreclr#27245)
Jan Vorlicek [Thu, 17 Oct 2019 03:43:09 +0000 (05:43 +0200)]
Fix field offset computation in crossgen2 (dotnet/coreclr#27245)

The logic for determining when to align base offset was not matching the
logic that is used in the coreclr runtime. This resulted in assert
failure: m_alignpad == 0 at runtime in 4 CoreMangLib tests.

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

4 years agoReplace gtLclVar. with AsLclVar()-> (dotnet/coreclr#27222)
Sinan Kaya [Thu, 17 Oct 2019 01:34:42 +0000 (18:34 -0700)]
Replace gtLclVar. with AsLclVar()-> (dotnet/coreclr#27222)

* find src/jit -type f -exec sed -i -e 's/gtLclVar\./AsLclVar()\./g' {} \;

AsClsVar and AsArrElem

* Format patch

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

4 years agofind src/jit -type f -exec sed -i -e 's/gtLngCon\./AsLngCon()\./g' {} \; (dotnet...
Sinan Kaya [Thu, 17 Oct 2019 01:33:39 +0000 (18:33 -0700)]
find src/jit -type f -exec sed -i -e 's/gtLngCon\./AsLngCon()\./g' {} \; (dotnet/coreclr#27219)

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

4 years agoUpdate scripts to include activity ID / related activity ID in generated (dotnet...
Elinor Fung [Thu, 17 Oct 2019 01:06:42 +0000 (18:06 -0700)]
Update scripts to include activity ID / related activity ID in generated (dotnet/coreclr#27209)

native functions for firing runtime events through event pipe

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

4 years agoUpdate UWP Jupiter interaction interface methods defined in .NET Core (dotnet/coreclr...
Aaron Robinson [Thu, 17 Oct 2019 00:52:01 +0000 (17:52 -0700)]
Update UWP Jupiter interaction interface methods defined in .NET Core (dotnet/coreclr#27239)

Update Jupiter host interface method names defined in .NET Core to match officially documented method names. The interface names are still different, but all function names now match.

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

4 years agoReplace gtClsVar. with AsClsVar()-> (dotnet/coreclr#27223)
Sinan Kaya [Wed, 16 Oct 2019 23:21:46 +0000 (16:21 -0700)]
Replace gtClsVar. with AsClsVar()-> (dotnet/coreclr#27223)

* find src/jit -type f -exec sed -i -e 's/gtClsVar\./AsClsVar()\./g' {} \;

* Format patch

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

4 years agoOptimize u>=1 to u!=0 and u<1 to u==0 (dotnet/coreclr#25458)
Egor Bogatov [Wed, 16 Oct 2019 21:58:53 +0000 (00:58 +0300)]
Optimize u>=1 to u!=0 and u<1 to u==0  (dotnet/coreclr#25458)

* Optimize u >= 1 to u != 0 and u < 1 to u == 0 (u - unsigned)

* undo some changes

* make clang-format happy

* Address feedback

* Update morph.cpp

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

4 years agoUse ubuntu 1804 arm64 queue outerloop (dotnet/coreclr#26984)
Jarret Shook [Wed, 16 Oct 2019 21:29:41 +0000 (14:29 -0700)]
Use ubuntu 1804 arm64 queue outerloop (dotnet/coreclr#26984)

* For pr use armarch queue for arm64 linux testing

* Set for pr to test

* Reflect armarch queue name

* Fix typo

* Fix other typo

* Only use armarch queue for outerloop testing

* Correctly use the old queue name

* Use armarch queue for all arm64 jobs

* Use arm32 and arm64 in the friendly names

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

4 years ago[armel/Tizen] Fix broken crossgen2 build (dotnet/coreclr#27227)
Alexander Soldatov [Wed, 16 Oct 2019 20:21:18 +0000 (23:21 +0300)]
[armel/Tizen] Fix broken crossgen2 build (dotnet/coreclr#27227)

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

4 years agoRefactor init/copy block codegen (dotnet/coreclr#27035)
mikedn [Wed, 16 Oct 2019 18:42:45 +0000 (21:42 +0300)]
Refactor init/copy block codegen (dotnet/coreclr#27035)

* Delete INITBLK/CPBLK_STOS_LIMIT

* Treat 0 sized block ops as unrolled

Normally 0 sized block ops should be simply removed during lowering. But these are rare enough that adding special code to deal with them is questionable.

Instead unroll such block ops, the unroll codegen simply won't generate any code for a 0 sized block op. Of course, some registers will still be allocated.

* Cleanup BuildBlockStore

* BlkOpKindHelper is not available on x86

* Use GT_STORE_BLK/unroll consistently

Non-GC GT_STORE_OBJ nodes were changed to GT_STORE_BLK in block copy ops
but not in block init ops. Since block init is effectvely non-GC it is
preferable to be consistent and change to GT_STORE_BLK in both cases.

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

4 years agoPreparation to introduce parallelism into CrossGen2 (dotnet/coreclr#27068)
Anubhav Srivastava [Wed, 16 Oct 2019 18:24:12 +0000 (11:24 -0700)]
Preparation to introduce parallelism into CrossGen2 (dotnet/coreclr#27068)

* Preparation to introduce parallelism into CrossGen2

- Change dictionaries in ReadyToRunCodegenNodeFactory and ReadyToRunSymbolNodeFactory to NodeCaches (i.e. ConcurrentDictionary, at the moment)
- Add structs to act as keys for the above NodeCaches (MethodFixupKey, DynamicHelperKey, ReadyToRunHelperKey)
- Synchronize logger
- Update some Dictionaries to ConcurrentDictionary
- Add .Equals and GetHashCode to SignatureContext.

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

4 years agoFix JIT.superpmi\superpmicollect broken on ReadyToRun jobs (dotnet/coreclr#25218)
Egor Chesakov [Wed, 16 Oct 2019 15:48:02 +0000 (08:48 -0700)]
Fix JIT.superpmi\superpmicollect broken on ReadyToRun jobs (dotnet/coreclr#25218)

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

4 years agoImprove Dictionary TryGetValue size/perfomance (dotnet/coreclr#27195)
Ben Adams [Wed, 16 Oct 2019 15:14:17 +0000 (16:14 +0100)]
Improve Dictionary TryGetValue size/perfomance (dotnet/coreclr#27195)

* Dictionary avoid second bounds check in Get methods

* Add NullRef methods to Unsafe

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

4 years agoManually managed card bundles windows (dotnet/coreclr#27087)
Peter Sollich [Wed, 16 Oct 2019 09:30:15 +0000 (11:30 +0200)]
Manually managed card bundles windows (dotnet/coreclr#27087)

* Changes to set gen0 bricks always. This reduces the time spent in find_first_object when finding the start of objects for marking interior pointers.

* Revert "Changes to set gen0 bricks always. This reduces the time spent in find_first_object when finding the start of objects for marking interior pointers."

This reverts commit dotnet/coreclr@9d53ff910ceb5482c67350a88e6687b8f94d5634.

* Initial check point for manually managed card bundles on x64 Windows.

* Small optimization in JIT_ByRefWriteBarrier - instead of memory access, use lea from a register to restore destination address.

* Fix issue with arm64 - forgot to push my local change.

* Address code review change request - make arm64 Windows write barrier trash only x12 and x15, but not x16 for consistency with Linux.

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

4 years agoHandle glibc sys/sysctl.h deprecation (dotnet/coreclr#27048)
Omair Majid [Wed, 16 Oct 2019 09:25:29 +0000 (05:25 -0400)]
Handle glibc sys/sysctl.h deprecation (dotnet/coreclr#27048)

glibc has deprecated sys/sysctl.h:

    In file included from /coreclr/src/pal/src/misc/sysinfo.cpp:32:
    /usr/include/sys/sysctl.h:21:2: error: "The <sys/sysctl.h> header is deprecated and will be removed." [-Werror,-W#warnings]
    #warning "The <sys/sysctl.h> header is deprecated and will be removed."
     ^
    1 error generated.

Fix that by preferring sysconf and only including sys/sysctl.h if
HAVE_SYSCONF is not true. This mirrors the order of the implementation
code in this file (sysinfo.cpp) which checks for HAVE_SYSCONF
before HAVE_SYSCTL.

Fixes dotnet/coreclr#27008

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

4 years agoFix DecoderNLS.Convert to out the correct value for 'completed' (dotnet/coreclr#27210)
Levi Broderick [Wed, 16 Oct 2019 03:02:27 +0000 (20:02 -0700)]
Fix DecoderNLS.Convert to out the correct value for 'completed' (dotnet/coreclr#27210)

This is a complementary fix to https://github.com/dotnet/coreclr/issues/23020

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

4 years agoAdding tests and fixing codegen for the Arm 'Aes' and 'ArmBase' hwintrinsics (dotnet...
Tanner Gooding [Wed, 16 Oct 2019 01:46:44 +0000 (18:46 -0700)]
Adding tests and fixing codegen for the Arm 'Aes' and 'ArmBase' hwintrinsics (dotnet/coreclr#27151)

* Adding arm hwintrinsic tests for AdvSimd.LoadVector64 and AdvSimd.LoadVector128

* Adding arm hwintrinsic tests for Aes.Decrypt, Aes.Encrypt, Aes.InverseMixColumns, and Aes.MixColumns

* Fixing compSetProcessor to support the Arm AES instruction set

* Adding arm hwintrinsic tests for ArmBase.LeadingZeroCount, ArmBase.Arm64.LeadingSignCount, and ArmBase.Arm64.LeadingZeroCount

* Improving the arm hwintrinsic test generator

* Regenerating the arm hwintrinsic tests

* Fixing the arm hwintrinsic codegen to support scalar and aes intrinsics

* Applying formatting patch.

* Don't pass in opts to INS_mov

* Ensure the arm Aes.Decrypt and Aes.Encrypt intrinsics set tgtPrefUse for op1 and mark op2 as delay free

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