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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Egor Chesakov [Wed, 16 Oct 2019 01:35:18 +0000 (18:35 -0700)]
Add STRESS_PROFILER_CALLBACKS JIT stress mode (dotnet/coreclr#26549)
Commit migrated from https://github.com/dotnet/coreclr/commit/
9020ffa85b13600c292ca085f9d90e3c0126e7c0
Egor Chesakov [Wed, 16 Oct 2019 01:34:31 +0000 (18:34 -0700)]
Fix RBM_PROFILER_TAILCALL_TRASH on x86 in src/jit/target.h (dotnet/coreclr#27190)
Commit migrated from https://github.com/dotnet/coreclr/commit/
d62c2d4c7f21cf37aa764b9b0c2473ed0ef08f2e
Del Myers [Wed, 16 Oct 2019 01:12:56 +0000 (18:12 -0700)]
Enable ETW/EventSource logging of task IDs for boxed state machines (dotnet/coreclr#27115)
* Wrap MoveNext Action for TPL event tracing
Wraps the MoveNext action of the AsyncStateMachineBox in a
continuation wrapper when async causality tracing is on so that the
TPL event source can find the task that is associated with a
continuation. Does not wrap otherwise.
* Clarifying comment
* removing trailing whitespace
* code review feedback.
Makes AsyncMethodBuilderCore.TryFindContinuationTask check to
whether the target of a continuation is itself a task, as a fall-back
to checking to see if the continuation is a ContinuationWrapper
* Got rid of unnecessary null checks
Commit migrated from https://github.com/dotnet/coreclr/commit/
faf20708867611e0ba134005f5b93b6eb575c160
mikedn [Wed, 16 Oct 2019 00:07:23 +0000 (03:07 +0300)]
Fix Compare and gtHashValue handling of BLK & OBJ (dotnet/coreclr#27196)
* These 2 are GTK_UNOP so they do not belong under "if (kind & GTK_BINOP)".
* OBJ was already present under "if (kind & GTK_UNOP)" but not BLK.
* BLK was marked GTK_UNOP but not GTK_EXOP so its size was simply ignored by Compare.
* DYN_BLK nodes are GTK_SPECIAL but appeared in the GTK_BINOP section of gtHashValue
* Also fix indir/block node classes in gtlist.h (only used by MEASURE_NODE_SIZE & co.)
Commit migrated from https://github.com/dotnet/coreclr/commit/
4bd89c11d75d9d5496e21bbd5f7ab3dddbd0f210