Sinan Kaya [Mon, 18 Mar 2019 21:05:40 +0000 (21:05 +0000)]
find src/jit -type f -exec sed -i -e 's/->genEmitter/->getEmitter()/g' {} \;
replae genEmitter with getEmitter()
Forgotten getEmitter
Commit migrated from https://github.com/dotnet/coreclr/commit/
ed4c3760d04c610a69969aa17f37c2d3e482fb4b
Sergey Andreenko [Fri, 20 Sep 2019 21:52:34 +0000 (14:52 -0700)]
Replace bbTreeList with GetBBTreeList() (dotnet/coreclr#23323)
* Remove getBBTreeList
* find ./ -type f -exec sed -i -e 's/GetBBTreeList/GetFirstLIRNode/g' {} \;
* find ./ -type f -exec sed -i -e 's/SetBBTreeList/SetFirstLIRNode/g' {} \;
Commit migrated from https://github.com/dotnet/coreclr/commit/
71c8b264f6dc8c32939cefbd15a8c8c3ffdf0a67
Sinan Kaya [Fri, 20 Sep 2019 21:51:39 +0000 (17:51 -0400)]
find ./ -type f -exec sed -i -e 's/\<gtNextStmt\>/GetNextStmt()/g' {} \; (dotnet/coreclr#26801)
* find ./ -type f -exec sed -i -e 's/\<gtNextStmt\>/getNextStmt()/g' {} \;
* Capitalize attempt dotnet/coreclr#2
Commit migrated from https://github.com/dotnet/coreclr/commit/
9d999c58f0b633a5cdeab1ded534e311c8e11e72
Sung Yoon Whang [Fri, 20 Sep 2019 21:37:45 +0000 (14:37 -0700)]
Mark GC_TRANSITION(FALSE) for EventPipe stack sampling (dotnet/coreclr#26776)
* Mark GC_TRANSITION for collecting stacks
* Add some comments
Commit migrated from https://github.com/dotnet/coreclr/commit/
d8b7989d76cf239586abbc5c604af245e2b2fc1f
Jakob Botsch Nielsen [Fri, 20 Sep 2019 21:06:59 +0000 (14:06 -0700)]
Remove tailcall limitations on unix64 and arm64 (dotnet/coreclr#26255)
* Remove tailcall limitations on unix64 and arm64
Fast tailcalls have their arguments passed in the incoming argument area
of the caller. This can cause problems when a previous argument might
end up overwriting the stack slot for an incoming argument that is later
used. To resolve this problem, we have logic that detects and introduces
temps in this situation. This logic was originally written for Windows
x64 where it is simple to know what argument is being overwritten, since
every argument always takes up a single slot on the stack. I.e. we know
that outgoing argument 7 can only overwrite incoming argument 7.
On unix x64 and arm64 this assumption does not hold. We previously tried
to workaround this by limiting our fast tailcalls to simple situations
where this assumption held, but this caused many missed fast tailcall
opportunities (for example, when arguments requires two slots or more).
This change removes those limitations. Instead of finding the argument
overwritten using the argument index, it keeps track of which stack
slots are used by each incoming and outgoing argument, allowing us to
more robustly check if an outgoing argument will overwrite an incoming
argument that will be used later.
To do this, we need to set the stack offset during init of args so that
we can use this info to determine whether it is necessary to introduce
temps for fast tailcalls. For arm64 we now define
FEATURE_PUT_STRUCT_ARG_STK to have access to the number of slots in
PUTARG_STK needed for this transformation.
There are also some corner cases we must consider. Since arguments now
consume multiple stack slots we can no longer move them with a single
atomic move instruction. Thus it is possible for us to get into cases
where we need to move an argument that is larger than 8 bytes and where
the move overlaps. This is a problem because codegen cannot handle
partially overlapping struct copies. We see this on unix64 in the
following case (assuming all args are on the stack):
void callee(S16 a, S32 b) { ... }
void caller(S32 a) { callee(default, a); }
Here 'caller' will need to move 'a' 16 bytes ahead in the arg list, and
we thus need a temp because we cannot do this atomically. Fix this by
detecting the partially overlapping case and looking for uses of the arg
from the current PUTARG_STK node's operand (instead of only starting
after).
* Fix formatting
Commit migrated from https://github.com/dotnet/coreclr/commit/
908cc72d54cf205107348d0212c9e6d5bd3945bc
David Wrighton [Fri, 20 Sep 2019 20:30:23 +0000 (13:30 -0700)]
Allow IBC for non-generic methods to succeed (dotnet/coreclr#26794)
* Allow IBC for non-generic methods to succeed
* Update src/tools/crossgen2/ILCompiler.ReadyToRun/Compiler/ReadyToRunLibraryRootProvider.cs
Co-Authored-By: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
9c5a6030c62b2d2bfb105772debee628f5a06aa0
Sinan Kaya [Fri, 20 Sep 2019 19:26:25 +0000 (19:26 +0000)]
find ./ -type f -exec sed -i -e 's/SetBBTreeList/SetFirstLIRNode/g' {} \;
Commit migrated from https://github.com/dotnet/coreclr/commit/
0a84e0ee00fdc3c9158820b146e78a4df2e1ee5c
Sinan Kaya [Fri, 20 Sep 2019 19:23:53 +0000 (19:23 +0000)]
find ./ -type f -exec sed -i -e 's/GetBBTreeList/GetFirstLIRNode/g' {} \;
Commit migrated from https://github.com/dotnet/coreclr/commit/
b82b05207beb5210d3fe87ea6bd5e5296a6113d3
Egor Chesakov [Fri, 20 Sep 2019 16:49:52 +0000 (09:49 -0700)]
Add JitELTHookEnabled scenarios and testGroup in CI (dotnet/coreclr#26542)
* Add jitelthookenabled, jitelthookenabled_tiered scenarios in tests/testenvironment.proj
* Add jitelthookenabled testGroup in eng/run-test-job.yml
Commit migrated from https://github.com/dotnet/coreclr/commit/
93c9dc58d6a2bd51d0229c2e616f423039ad573c
Bruce Forstall [Fri, 20 Sep 2019 16:45:55 +0000 (09:45 -0700)]
Enable VM `_ASSERTE` stack backtrace on Windows (dotnet/coreclr#26782)
The stack backtrace code uses ImageHlp and doesn't run on non-Windows platforms.
The PDB files are already being copied to the Helix machines.
Just set `_NT_SYMBOL_PATH` so they can be found.
(This is configured in the VM by the call to SymInitialize in utilcode\stacktrace.cpp,
in particular `FillSymbolSearchPathThrows()`.)
Commit migrated from https://github.com/dotnet/coreclr/commit/
a97d193f7ba6d4920b2c9266574d5e32f5838fd6
Sinan Kaya [Mon, 18 Mar 2019 19:49:55 +0000 (19:49 +0000)]
Remove getBBTreeList
Commit migrated from https://github.com/dotnet/coreclr/commit/
6cc1c213c8b8532c1cd891fee5af7f94914cca90
Egor Chesakov [Fri, 20 Sep 2019 03:35:34 +0000 (20:35 -0700)]
Implement genProfilingEnterCallback genProfilingLeaveCallback on Arm64 (dotnet/coreclr#26460)
* Split genProfilingEnterCallback and genProfilingLeaveCallback into architecture specific versions
* Remove redundant genStackLevel save/restore logic on Arm, Arm64, Amd64
* Implement JIT_ProfilerEnterLeaveTailcallStub in assembly
* Define RBM_PROFILER_{ENTER,LEAVE,TAILCALL}_TRASH for TARGET_ARM64
* Define REG_PROFILER_{ENTER,LEAVE}_ARG_FUNC_ID and RBM_PROFILER_{ENTER,LEAVE}_ARG_CALLER_SP
* Simplify r0Trashed logic in src/jit/codegenarm.cpp
* Remove wrong comment in src/jit/codegenarm.cpp
* On Arm genPrologPadForReJit does nothing so remove it in src/jit/codegenarm.cpp
* Implement LinearScan::BuildNode for GT_PROF_HOOK and GT_RETURN in src/jit/lsraarm64.cpp
* Shouldn't a call to CORINFO_HELP_PROF_FCN_TAILCALL be marked as a No-GC?
* Implement genProfilingEnterCallback genProfilingLeaveCallback in src/jit/codegenarm64.cpp
* Implement NYI profiler methods in src/vm/arm64/profiler.cpp
* Implement ProfileEnterNaked ProfileLeaveNaked ProfileTailcallNaked in src/vm/arm64/asmhelpers.S
* Implement profiler helpers on win-arm64
* Remove logic for !FINAL_FRAME_LAYOUT in codegenarm64.cpp
* Remove unused macro in src\jit\target.h
* genProfilingLeaveCallback ignores helper on arm in src\jit\codegenarm.cpp
* Refactor genProfilingLeaveCallback in src\jit\codegenarm.cpp
Commit migrated from https://github.com/dotnet/coreclr/commit/
d88bc184d054fe8e4915964330ca65378d59ef27
Sven Boemer [Thu, 19 Sep 2019 19:27:53 +0000 (12:27 -0700)]
Don't try to publish build logs in finalize-publish (dotnet/coreclr#26787)
Commit migrated from https://github.com/dotnet/coreclr/commit/
7accc101aa190250547ac63b0b3afb799221074a
Tomáš Rylek [Thu, 19 Sep 2019 14:30:15 +0000 (07:30 -0700)]
Fix missing checkout step in several pipelines (dotnet/coreclr#26773)
I have apparently missed some of the pipelines in my "one checkout"
change. I have gone over all yml files under eng/pipelines and
fixed the four remaining yml files by adding the missing step.
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
16b27f7852a223752601f4623abae5c82ca732a1
Jan Kotas [Thu, 19 Sep 2019 03:50:02 +0000 (20:50 -0700)]
Delete man page quote (dotnet/coreclr#26779)
Man pages come with a license. Quoting man pages may require complying with the license that is not worth the trouble.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d8d6d8a53217806a0f3866e3156e10e1d1b06084
Cory Nelson [Thu, 19 Sep 2019 03:03:57 +0000 (20:03 -0700)]
Update path to CoreLib sln
Commit migrated from https://github.com/dotnet/coreclr/commit/
a74790eb9f2d6beee6e67e6b903203262837661c
Sergey Andreenko [Thu, 19 Sep 2019 01:32:22 +0000 (18:32 -0700)]
Statements: return dumping methods. (dotnet/coreclr#26744)
* Return dumping for Statement.
Return statements ID and implement dumping methods.
* Delete block->bbStmtNum and compiler->compCurStmtNum.
They were duplicating `stmt->gtTreeID` in the past and it was not clear why they were added in the first place.
Delete them and use `stmt->GetID()`, with `STMT%05u` format.
* Use FMT_STMT for printing `Statement->GetID()`.
So you can use `STMT\d{5}` to seach them anywhere in JiDump.
* Fix the comments and one missed printing.
Commit migrated from https://github.com/dotnet/coreclr/commit/
73889113446fed024639e4c58d452a21219e72a0
Sven Boemer [Wed, 18 Sep 2019 22:25:05 +0000 (15:25 -0700)]
Fix update versions logic (dotnet/coreclr#26768)
* Fix update versions logic
After https://github.com/dotnet/coreclr/pull/26108, this was broken
because the Tools.proj was never restored on the agent running the
finalize-publish job. This fixes the script to do a restore, and adds
a missing import.
* Remove UpdatePublishedVersions.ps1 and add darc dependency
Commit migrated from https://github.com/dotnet/coreclr/commit/
9be00be2ad5586d93864a77ef4c706fc9be89467
Tomáš Rylek [Wed, 18 Sep 2019 21:52:17 +0000 (14:52 -0700)]
Increase checkout fetchDepth to 5 (dotnet/coreclr#26774)
Based on recommended practice and on Jared's experience from the
Roslyn repo I propose increasing the fetchDepth constant to 5 to
prevent occasional checkout failures seen after my change from
last week to only check out the GIT branch once for Windows
and once for Linux per pipeline.
This change is expected to fix the issue
https://github.com/dotnet/coreclr/issues/26733
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
85e7c7497edcf98b720ccd2a6090a0a5cc7fc490
Andrew Au [Wed, 18 Sep 2019 20:34:22 +0000 (13:34 -0700)]
Complete the filtering for MethodImpl.AggressiveOptimization (dotnet/coreclr#26756)
Commit migrated from https://github.com/dotnet/coreclr/commit/
2deec4cb9cff5bb03e7d9c71da043e3cbd9edea3
Anubhav Srivastava [Wed, 18 Sep 2019 20:31:51 +0000 (13:31 -0700)]
Add performance measurement to crossgen2/SuperILC (dotnet/coreclr#26742)
Crossgen2 changes
- Add PerfEventSource classes to log performance-related events (average time taken to compile, loading time, graph processing time, emitting time, number of nodes added to graph, and number of methods JITed)
SuperILC changes
- Add MeasurePerf flag to measure performance (with 2 warmup runs and averaged over 5 real runs)
- Add PerfEventSourceListener class to listen to PerfEventSource events from crossgen2 and record statistics.
- Add InputFileSearchString flag to select an input file to compile (instead of requiring a folder)
Commit migrated from https://github.com/dotnet/coreclr/commit/
8cb1ac8f47c8247e3944b44f10b0ce68594e071b
Brian Sullivan [Wed, 18 Sep 2019 18:07:25 +0000 (11:07 -0700)]
Fix two typos (dotnet/coreclr#26770)
Commit migrated from https://github.com/dotnet/coreclr/commit/
85ed26e82c58f0ca0f07a5256a7836a14e607246
Brian Sullivan [Wed, 18 Sep 2019 18:02:55 +0000 (11:02 -0700)]
Add design doc for the Perf Score feature (dotnet/coreclr#26519)
Commit migrated from https://github.com/dotnet/coreclr/commit/
a45d2f1486d6f7fa3a193b01049ef654f4b61afa
Brian Sullivan [Wed, 18 Sep 2019 17:59:21 +0000 (10:59 -0700)]
Implement PerfScore (dotnet/coreclr#26456)
* Implement PerScore
- PerfScore represents an estimate of the dynamic execution cost for the method
emitter::insExecutionCharacteristics emitter::getInsExecutionCharacteristics(instrDesc* id)
- We track the BasicBlock weight for each instruction group
- PerfSCore also uses the codesize as a minor factor, both the hot code size and the cold code size
- Provides an x64 implementation of getInsExecutionCharacteristics.
* Changes from feedback from tannergooding
* Changes from feedback from CarolEidt
Commit migrated from https://github.com/dotnet/coreclr/commit/
e7f95bdfa1964e888ad9f6b78bd92d528d650227
Brian Bohe [Wed, 18 Sep 2019 17:13:38 +0000 (14:13 -0300)]
Adding comments (dotnet/coreclr#23327)
* Adding comments to psiScope functions declarations
* Adding comments on declaration/definition Compiler::compUpdateLife
* Editing CodeGen::genProduceReg header comments
* Editting var Compiler::lvaCount comment
* Adding comments to Compiler::compChangeLife function
* Adding comments when changing variable liveness
* Adding comments in genSetScopeInfo()
Commit migrated from https://github.com/dotnet/coreclr/commit/
728740987f4afcb8f55fe89a309471f01c62ef06
Jan Kotas [Wed, 18 Sep 2019 01:38:15 +0000 (18:38 -0700)]
Delete unused .idl files (dotnet/coreclr#26757)
Commit migrated from https://github.com/dotnet/coreclr/commit/
d4ab484be11b54eb92204cd084638a03a8f9c441
David Mason [Wed, 18 Sep 2019 01:38:00 +0000 (18:38 -0700)]
Remove assert in SetProfilerMayHaveActivatedNonDefaultCodeVersion (dotnet/coreclr#26737)
Remove assert that was causing spurious profiler test failures.
Commit migrated from https://github.com/dotnet/coreclr/commit/
5733ebb8ba1d8ca24c36ade50e5bef0a5d9ce907
Stephen Toub [Wed, 18 Sep 2019 00:57:40 +0000 (20:57 -0400)]
Delete CommonlyUsedGenericInstantiations (dotnet/coreclr#26750)
The mechanism is no longer needed, its contents is stale, and it prevents some functionality from being trimmed.
Commit migrated from https://github.com/dotnet/coreclr/commit/
32eb36119ab23ad0ddc6c6f3b1f36ad99ea96487
John Salem [Tue, 17 Sep 2019 22:39:13 +0000 (15:39 -0700)]
Disable all EventPipe tests under GCStress (dotnet/coreclr#26741)
Commit migrated from https://github.com/dotnet/coreclr/commit/
941952d44a257c13f383daa080e944baa83de593
Sven Boemer [Tue, 17 Sep 2019 20:41:03 +0000 (13:41 -0700)]
Remove buildtools (dotnet/coreclr#26108)
Remove the dependency on buildtools.
- Makes a number of common test projects SDK-style, and replaces the buildtools prerelease restore target with the restore logic built in to the SDK. For some projects, we currently restore 5.0 assets that are used for netcoreapp3.0 - this required a workaround to switch the TFM in a few cases.
- Replaces the corefx testhost deps file creation logic with that from the SDK's publish logic.
- Uses a new IL sdk (as the old one used to make many redundant file copies), and uses an .ilproj to restore ilasm/ildasm up-front.
- Uses the UpdateVersions logic from arcade instead of buildtools.
This opens up the possibility of further simplifying some of our msbuild imports in a future change.
Commit migrated from https://github.com/dotnet/coreclr/commit/
0dbe04c4938d16ceee92cd50bc9a4eb375b7b8aa
Stephen Toub [Tue, 17 Sep 2019 12:20:14 +0000 (08:20 -0400)]
Remove allocations from Dns.* (dotnet/corefxdotnet/coreclr#41061)
This started as an effort to reduce the size of System.Net.NameResolution.dll when publishing a trimmed app. It's not that big to begin with, but it's carrying around a copy of all of the IAsyncResult helper types, because the Get*Async methods are currently wrappers for the Begin/End* methods.
This PR inverts that, wrapping the Begin/End* methods instead around the Get*Async methods, using the same TaskToApm helper we use in other places in corefx for the same purpose. This makes the Get*Async methods faster and lighterweight, but it does increase the number/amount of allocation in the Begin/End* APIs. Since these are considered legacy, I normally would consider that a good trade, however we still use these Begin/End methods in a few places in System.Net.Sockets, and I didn't want to regress those use cases.
So, this also then trims some additional fat, which helps the Get*Async cases even further, and gets the Begin/End* to be even better than before the change. This includes not allocating an IPHostEntry when we're just going to unwrap it and return its addresses, computing the exact IPAddress[] size we need rather than using a List<> to grow it and ToArray to create the actual array, avoiding creating the HostName if we don't need it, and avoiding an unnecessary SafeHandle allocation.
As part of this, I also noticed that we had some bugs in how some of our interop structures on Windows were defined. In particular, fields that in the native types were size_t were defined as int rather than IntPtr in the managed code. It appears we were saved by padding, but I fixed it regardless.
And as long as I was changing pretty much everything else, where I was touching code I also cleaned up some legacy style stuff.
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
812f5b7bda9163ae848171d7db9e4a3691d55f06
Tomáš Rylek [Tue, 17 Sep 2019 10:30:30 +0000 (03:30 -0700)]
Fix ceeInfoGetCallInfo by incorporating Fadi's commit https://github.com/dotnet/coreclr/pull/24383 (dotnet/coreclr#26722)
After merging in Jan Vorlicek's fundamental PInvoke transition frame
size fix, I took a look at some of the remaining failures. During
debugging of the test
baseservices/threading/generics/syncdelegate/GCThread16
I noticed a JIT codegen difference I tracked down to Fadi's PR
https://github.com/dotnet/coreclr/pull/24383/files
not present in the Crossgen2 source code. Thankfully the method
is today a line-by-line rewrite of its legacy Crossgen counterpart
so it was pretty trivial to spot this one new bit.
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
fe617dc781c60a887f15cdd9e3e7712e364ff37f
Jan Vorlicek [Tue, 17 Sep 2019 07:55:20 +0000 (09:55 +0200)]
Fix R2RDump to correctly parse array lower bounds (dotnet/coreclr#26743)
There is a an incorrect size (likely a typo) used to create lower bounds
array when parsing signatures. This results in `Index was outside the
bounds of the array.` being printed inside of the array signature
string.
Commit migrated from https://github.com/dotnet/coreclr/commit/
afd8b1f80a90a37d6b73987cbf9fdf03e8945250
Michal Strehovský [Mon, 9 Sep 2019 11:33:50 +0000 (13:33 +0200)]
Add crossgen2 smoke test
This is the DevUnitTest from the CoreRT repo.
Commit migrated from https://github.com/dotnet/coreclr/commit/
28362930fdf47d758476a7810c481ca6867faf65
Michal Strehovský [Tue, 10 Sep 2019 14:36:48 +0000 (16:36 +0200)]
Fix publishing crossgen2 on macOS
Commit migrated from https://github.com/dotnet/coreclr/commit/
433ac06f7f6aea858d1ba4ab927393488cae222b
David Wrighton [Tue, 17 Sep 2019 01:53:47 +0000 (18:53 -0700)]
IBC fixes (dotnet/coreclr#26738)
* IBC fixes
- Support IntPtr and UIntPtr element types in IBC data
- More defensive coding against structurally incorrect IBC data
- Skip compilation of open method definitions
- Generate IBC data without crashing when the first logged item is an InstantiatedMethod and not a token
- Safely shutdown and emit IBC data from a thread that hasn't been given a Thread object
Commit migrated from https://github.com/dotnet/coreclr/commit/
d31557c467fb4eb3fa66481c3a81e63fb2c8eb94
Jeremy Koritzinsky [Mon, 16 Sep 2019 21:45:46 +0000 (14:45 -0700)]
Enable minidumps on all helix runs. (dotnet/coreclr#26455)
* Set COMPlus_DbgEnableMiniDump on all helix test runs.
* Set dump output path for *nix builds.
* Enable collecting dumps for timed-out tests on Windows.
* Enable xunit wrapper to get dumps for timed-out tests on non-Windows.
* Use sudo for createdump
* Update coredump-on-crash pattern to use the $HELIX_WORKITEM_UPLOAD_ROOT environment variable.
* Implement linux-specific path for finding a child process by name.
* Use HELIX_DUMP_FOLDER instead of HELIX_WORKITEM_UPLOAD_ROOT
* Remove empty entries in childrenPidAsStrings.
* Look up createdump in Core_Root
* Implement timeout macOS crash dumps.
* Add ulimit -c unlimited to the Helix script on MacOS.
* Get MacOS timeout dumps working (and enable assert/exception dumps)
* Copy OSX aborted test dumps to crash dump folder.
* Add missing return true.
* Allow overwriting dump files on copy (on macOS).
* Fix accidental shadow.
* Allow multiple spaces in ps output.
* Fix dump on windows hitting an assert on checked coreclr.
* TEMPORARY: Add more logging in macOS case.
* Fix change.
* Fix macOS timeout crash dump creation (at least locally).
* Fix Windows timeout dump collection.
* Explicitly use WChar structures.
* TEMPORARY: Test OSX dumps on 10.14 queue.
* Fix __CrashDumpFolder on OSX
* Don't try to copy the dump if it doesn't exist (10.13 Helix queue doesn't support it yet).
* Remove temporary OSX 10.14 queue usage in prs.
* Add tracking issue for empty HELIX_DUMP_FOLDER env var on OSX.
* PR Feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
f5437ac095272f1ab5e8ca79960add974fa96f2d
Jeremy Koritzinsky [Mon, 16 Sep 2019 21:22:42 +0000 (14:22 -0700)]
Remove unused flags on ArrayMarshalInfo only used for type lib… (dotnet/coreclr#26734)
Commit migrated from https://github.com/dotnet/coreclr/commit/
fe0d7932f0370ac77a6a9261044ea6614a586588
Stephen Toub [Mon, 16 Sep 2019 19:39:40 +0000 (15:39 -0400)]
Update typo in comment in CultureInfo.cs
Commit migrated from https://github.com/dotnet/coreclr/commit/
cb84762fd8f92959f964b6458ef2dc41092d5c2c
Tarek Mahmoud Sayed [Mon, 16 Sep 2019 19:18:17 +0000 (12:18 -0700)]
Fix calendar instance inside the culture after cloning (dotnet/coreclr#26721)
When creating a new culture, we’ll have the equality CultureInfo.DateTimeInfo.Calendar == CultureInfo.calendar be true. After cloning such culture, this equality would not be true. The fix here is to ensure if the equality is true before cloning then should be true after cloning.
Commit migrated from https://github.com/dotnet/coreclr/commit/
634bf8c37b42b0613d79e7837d4f9d7884e6c4f6
Jakob Botsch Nielsen [Mon, 16 Sep 2019 16:36:58 +0000 (09:36 -0700)]
Improve jit tailcall decision reporting (dotnet/coreclr#26149)
* Improve jit decision reporting
On platforms with unsupported helper, report the reason why we did not
do a fast tailcall instead of the fact that no copy args thunk is
available.
* Remove an unnecessary check
* Revert an incorrect change
* Fix formatting
* Actually fix conflict
* Fix build
* [master] Update dependencies from dotnet/core-setup (dotnet/coreclr#26486)
* Update dependencies from https://github.com/dotnet/core-setup build
20190904.1
- Microsoft.NETCore.App - 5.0.0-alpha1.19454.1
* Fix print when failing to load coredistools. (dotnet/coreclr#26473)
* Restore partial Corelib build support in VS (dotnet/coreclr#26511)
* Fix formatting
Commit migrated from https://github.com/dotnet/coreclr/commit/
58addf0e977d2fb29f1f649e963870a38c7f6810
Tomáš Rylek [Mon, 16 Sep 2019 12:07:05 +0000 (05:07 -0700)]
More SuperIlc fixes and improvements (dotnet/coreclr#26719)
1) Set OutputFileName to the same value as InputFileName for
execution runs. This lets use the output file name as a common
test key for both phases.
2) Exclude Core_Root subtree in compile-subtree - this is needed
to avoid compiling Crossgen2.
3) As Anubhav pointed out, I messed up one of my previous
refactorings so that running the legacy Crossgen was no longer
optional based on the --crossgen switch.
4) I removed an unnecessary formatting string I randomly noticed.
5) Add one more classification case to execution bucketing.
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
2fa6bbbfeb01f011d55afb9a32962f3cb878b791
Matt Mitchell [Sun, 15 Sep 2019 15:43:32 +0000 (08:43 -0700)]
Merge pull request dotnet/coreclr#26717 from dotnet/darc-master-
3fc25abf-8a12-476c-aa6d-
42a6aa19d865
[master] Update dependencies from dotnet/corefx
Commit migrated from https://github.com/dotnet/coreclr/commit/
f0ba9d3435e260d89c44c73afd14dc12301d72ef
Matt Mitchell [Sun, 15 Sep 2019 15:42:18 +0000 (08:42 -0700)]
Merge pull request dotnet/coreclr#26720 from dotnet/darc-master-
235c35b1-7984-4aa9-934a-
e66ba37b92a6
[master] Update dependencies from dotnet/core-setup
Commit migrated from https://github.com/dotnet/coreclr/commit/
766b8f471bfcef03b008545484cc825838f7dcef
Andrew Au [Sun, 15 Sep 2019 12:50:03 +0000 (05:50 -0700)]
Fixing a simple typo (dotnet/coreclr#26707)
Commit migrated from https://github.com/dotnet/coreclr/commit/
3dd49891bea252bee43e4b28a788a45887e51e19
Sung Yoon Whang [Sun, 15 Sep 2019 08:31:08 +0000 (01:31 -0700)]
Mark remaining counter tests as JIT sensitive (dotnet/coreclr#26708)
Commit migrated from https://github.com/dotnet/coreclr/commit/
7f11600bb2dd78eac2d2bd83e7f52c385a885c39
Stephen Toub [Sun, 15 Sep 2019 01:37:28 +0000 (21:37 -0400)]
Remove some boxing from tuples with >= 8 elements (dotnet/coreclr#26584)
Take advantage of https://github.com/dotnet/coreclr/pull/14698 to avoid boxing the TRest argument and improve devirtualization.
Commit migrated from https://github.com/dotnet/coreclr/commit/
3f678ae7aa547fc86cf00459506d6ca170a5f5cc
Mike McLaughlin [Sat, 14 Sep 2019 14:00:00 +0000 (07:00 -0700)]
Fix watson bucketing/broken triage dumps (dotnet/coreclr#26714)
The DAC EnumMemoryRegions needs to include some missing code version
manager memory.
Commit migrated from https://github.com/dotnet/coreclr/commit/
c7071577a4d95596cf84b313e87a8c5b47f2d493
Tomáš Rylek [Sat, 14 Sep 2019 12:31:39 +0000 (05:31 -0700)]
Fix PInvoke transition frame in CPAOT (dotnet/coreclr#26706)
During investigation of Linux CPAOT failures Jan Vorlicek discovered
that we were using the wrong constant for the PInvoke transition
frame. I have verified that the change fixes all tests under
JIT\methodical\explicit\basic I was previously seeing; I am running
the complete Pridotnet/coreclr#1 test suite to get an overall picture.
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
e4f35bf59cd2a96e00232ce7e004ec33d8317183
Michal Strehovský [Sat, 14 Sep 2019 10:52:09 +0000 (12:52 +0200)]
Add coverage of shared code in pointer casting test (dotnet/coreclr#26715)
Commit migrated from https://github.com/dotnet/coreclr/commit/
9878935593cea202bd76af7d7fb060d7a2b7a021
Sergey Andreenko [Sat, 14 Sep 2019 07:36:09 +0000 (00:36 -0700)]
Continue cleaning GenTreeStmt. (dotnet/coreclr#26668)
* Rename `GenTreeStmt` to `Statement`.
* Move `Statements::IsPhiDefnStmt` implementation to the header.
* Add iterators for statements.
So we have less places where we access Statement's fields.
* Add a header for `fgInsertStmtListAfter`,
# Conflicts:
# src/jit/flowgraph.cpp
* Change `fgInsertStmtAtBeg` not to return a value.
and add headers for `fgInsertStmtAtBeg` and `fgNewStmtAtBeg`.
* Change `fgInsertStmtBefore` and `fgInsertStmtAfter` not to return.
* Change `fgInsertStmtNearEnd` not to return.
* Change `fgInsertStmtAtEnd` not to return.
# Conflicts:
# src/jit/flowgraph.cpp
* Fix comments.
* Add a header for `gtDispBlockStmts`.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ef585a4658a830945f24d635b234f44bd0c81e84
Jan Kotas [Sat, 14 Sep 2019 01:04:16 +0000 (18:04 -0700)]
More PAL cleanup (dotnet/coreclr#26709)
* Delete more unused methods from PAL
* Delete PAL_EntryPoint
* Delete always defined FEATURE_PAL_SXS and related code
Commit migrated from https://github.com/dotnet/coreclr/commit/
59002f56b5a2a4e13d4adee9f21942855c0955d3
Jan Kotas [Fri, 13 Sep 2019 23:12:10 +0000 (16:12 -0700)]
Delete wchar_t redefinition in the PAL (dotnet/coreclr#26705)
Commit migrated from https://github.com/dotnet/coreclr/commit/
bce868f1ce96200f727784f1b855afb8a69513a3
Carol Eidt [Fri, 13 Sep 2019 21:41:47 +0000 (14:41 -0700)]
Update first-class-structs.md
Add a link to issue dotnet/coreclr#26710 in the relevant section.
Commit migrated from https://github.com/dotnet/coreclr/commit/
747d235f56c1e58e6ba5dd3d644f07acece39231
Michal Strehovský [Fri, 13 Sep 2019 20:58:46 +0000 (22:58 +0200)]
Re-enable incremental linking (dotnet/coreclr#26704)
This was disabled due to a linker bug that was fixed in 2017. Maybe it's time to re-enable this.
Fixes dotnet/coreclr#13344.
Commit migrated from https://github.com/dotnet/coreclr/commit/
80d94c634b5968d0c817c322923bbf1415f86416
Jan Kotas [Fri, 13 Sep 2019 16:51:01 +0000 (09:51 -0700)]
Matching doc update
Commit migrated from https://github.com/dotnet/coreclr/commit/
cdc35c96d7312aad3f81a5d9b031fbb29dbdd5f1
Michal Strehovský [Fri, 13 Sep 2019 16:17:26 +0000 (18:17 +0200)]
Get rid of unnecessary ilproj entries
Commit migrated from https://github.com/dotnet/coreclr/commit/
708055b58c52d21875a7f0a33ce3c828fc849ad0
Konstantin Baladurin [Fri, 13 Sep 2019 17:28:08 +0000 (20:28 +0300)]
[JIT/x86] Fix LinearScan::allocateRegisters (dotnet/coreclr#26649)
Check for `lvLRACandidate` instead of `!lvDoNotEnregister` when checking whether `this` may be enregistered and has an Interval.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e41d8f0390323bba033a1ace2570c1099cf7443b
Michal Strehovský [Fri, 13 Sep 2019 15:47:03 +0000 (17:47 +0200)]
Add test coverage for casting to pointers (dotnet/coreclr#26698)
I was fixing a customer-reported bug related to this in .NET Native and decided to check whether there's any test coverage for this in CoreCLR. There isn't, so adding a test.
Commit migrated from https://github.com/dotnet/coreclr/commit/
3f8d0e92ada4f1bc37e93c644054acf0a43692cf
mikedn [Fri, 13 Sep 2019 14:45:05 +0000 (17:45 +0300)]
Improve LclVar sorting throughput (dotnet/coreclr#23234)
* Add tracked variable accessor functions
* Delete bogus lvaSortByRefCount call
There's no need to sort at the end of lvaMarkLocalVars. Tracked variables aren't needed until liveness and that does its own sort call.
* Replace qsort with (jit)std::sort
qsort is rather cumbersome to use and inefficient. It's not a template
so it operates with void pointers that can make swapping problematic.
The comparison callback is unnecessarily complex because it has to return
-1,0,+1 when "less" style comparison functions only return true/false.
It's also impossible to inline the callback, even if it's a trivial
"return a < b;" function.
* Get rid of lvaRefSorted
While it could be slightly faster than lvaTrackedToVarNum because it stores
pointers rather than indices, it also uses more memory and it's not safe to
use beyond sorting. If new variables are added the variable table may have
to be resized and that invalidates the stored pointers.
At the same time, stop sorting untracked variables, nothing in the JIT needs
that. Collect only tracked variables in lvaTrackedToVarNum, sort them and
then "untrack" the ones that exceed the lclMAX_TRACKED limit.
* Remove bogus lvRegister checks
Variables are not sorted after LSRA has ran so these checks are not needed.
* Turn RefCntCmp/WtdRefCntCmp into real "less"
* Use functors rather than lambdas
It's too much code to put it all in the lambda so we might as well go the other way and get rid of the lambda.
* Add some comments to sort functions
* Fix comments
* Change to the real insertion sort
* Fix comments
Commit migrated from https://github.com/dotnet/coreclr/commit/
42e810630af30672b000f03f9d265fc683d46f97
Jan Kotas [Fri, 13 Sep 2019 11:33:42 +0000 (04:33 -0700)]
Delete dead code in PAL related to locale handling (dotnet/coreclr#26693)
* Delete dead code in PAL related to locale handling
* Fix build break
* Delete PAL_ACP
* Delete HAVE_COREFOUNDATION
Commit migrated from https://github.com/dotnet/coreclr/commit/
6b0dab793260d36e35d66c82678c63046828d01b
Tomáš Rylek [Fri, 13 Sep 2019 08:02:41 +0000 (01:02 -0700)]
Some SuperIlc cleanup and improvements (dotnet/coreclr#26690)
1) Remove the parameter -cpaot as it's no longer needed now that
Crossgen2 also resides under Core_Root.
2) Add new parameter --exe to only execute the tests without
compilation. JanV specifically asked for this to speed up his
inner testing loop on Linux.
3) Don't pass /largeversionbubble to the [legacy] Crossgen
compilation of System.Private.CoreLib as it apparently crashes
on Linux and we are no longer interested in fixing that.
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
6ef00c124829ac3b748326bfbeb490387d8ce3d2
Jeremy Koritzinsky [Fri, 13 Sep 2019 01:31:53 +0000 (18:31 -0700)]
Remove unused code in marshalnative. (dotnet/coreclr#26689)
Commit migrated from https://github.com/dotnet/coreclr/commit/
46348ff653f38749e87f5939c134fcdc832cb646
Next Turn [Thu, 12 Sep 2019 19:04:57 +0000 (03:04 +0800)]
Modernize Array constructor (dotnet/coreclr#26684)
Commit migrated from https://github.com/dotnet/coreclr/commit/
85eb43f20ae9b1ce32ba4631e476ba0e120d5c0b
Omair Majid [Thu, 12 Sep 2019 19:03:45 +0000 (15:03 -0400)]
Remove CLR_CMAKE_TARGET_UBUNTU_LINUX and CLR_CMAKE_PLATFORM_UBUNTU_LINUX (dotnet/coreclr#26663)
They are unused. Nothing ever checks for either of them.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ac9b8110ce037f367d739c57a5907edf9f7355c1
Tomas [Thu, 12 Sep 2019 09:36:15 +0000 (11:36 +0200)]
Fix SuperIlc build in CoreCLR
I'm not sure about the dotnetcore3.0 version but that lets me run
"dotnet blahblahblah/ReadyToRun.SuperIlc.dll and actually launch the
app. Please help me figure out what else needs fixing. I should
probably add a test at some point but I don't yet know how it should
work, I'll look into it as part of my work on the CPAOT pipeline.
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
0cf6e1ae0400cf62a00dd03178add648b53a0321
dotnet-bot [Wed, 11 Sep 2019 13:40:40 +0000 (15:40 +0200)]
Move the ReadyToRun.SuperIlc tool to CoreCLR
After Michal moved the Crossgen2 compiler source code to CoreCLR,
this testing tool is the last bit that only exists in CoreRT so
I'm moving it too. This initial commit amounts to a straightforward
copy of SuperIlc source code from the CoreRT repo.
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
5f04a3d720be9bd673c874c73517d4322934a10b
Sung Yoon Whang [Thu, 12 Sep 2019 07:08:49 +0000 (00:08 -0700)]
Mark counter tests as JITStress incompatible (dotnet/coreclr#26666)
Commit migrated from https://github.com/dotnet/coreclr/commit/
0f049c3e15a7003efa4daa075d4e9ec11cff2e78
Sung Yoon Whang [Thu, 12 Sep 2019 01:28:35 +0000 (18:28 -0700)]
Improve the performance of Environment.WorkingSet in Windows (dotnet/coreclr#26522)
* Use win32 api directly for workingset counter
* Fix build warnings
* Removing useless code
* more cleanup
* remove size annotation
* remove useless comment
* Move all the changes to Environment.WorkingSet and remove it from RuntimeEventSourceHelper
* removing useless usings
* Use kernel32.dll instead of psapi.dll
* Code review feedback
* Remove newline change
* More code review nits
Commit migrated from https://github.com/dotnet/coreclr/commit/
6f8cdbc8fd91caf804bf58b798bd5bbf1fee2255
Tomáš Rylek [Wed, 11 Sep 2019 18:21:41 +0000 (11:21 -0700)]
Only check out the GIT repo twice and reuse for the entire pipeline (dotnet/coreclr#26480)
The purpose of this change is to increase the throughput and
reliability of CoreCLR CI pipelines by only performing one GIT
checkout for Windows and Unix, zip them up and reuse for all
subsequent phases / jobs in the pipeline.
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
17a53cb063b5e63fc1cc832ec36cf8a520111124
Jan Kotas [Wed, 11 Sep 2019 14:02:21 +0000 (07:02 -0700)]
Change Vector<T> to use more compact code using S.R.CS.Unsafe (dotnet/coreclr#26637)
S.R.CS.Unsafe is used in number of places in Vector<T> already. This change modifies more places to use it to make the code more compact.
Updated Vector.tt template to match while I was on it
Commit migrated from https://github.com/dotnet/coreclr/commit/
76c0217439b062f38fdb96c18224cff06f5a7ace
Sergey Andreenko [Wed, 11 Sep 2019 04:35:18 +0000 (21:35 -0700)]
Return a missed field init to `GenTreeILOffset`. (dotnet/coreclr#26646)
That field is used only in dumping logic inside `genCodeForBBlist`, for some reason `gtDispTree` doesn't print it.
Commit migrated from https://github.com/dotnet/coreclr/commit/
92e501f96c1403b7af4a155741a08ccbd0cbc1b4
Marek Safar [Wed, 11 Sep 2019 00:16:06 +0000 (02:16 +0200)]
Remove unused Memcpy methods from shared Buffer implementation (dotnet/coreclr#26586)
Commit migrated from https://github.com/dotnet/coreclr/commit/
7adc7249f71679b6a1727e17cd15df4db5d621b3
David Wrighton [Tue, 10 Sep 2019 23:18:02 +0000 (16:18 -0700)]
Resource writing for crossgen2 (dotnet/coreclr#26639)
- Refactor the win32 resource reading code to use more natural managed data structures
- Build a Win32 resource emitter on top of refactored data structures
- Replace resource section copy logic with new node to generate win32 resources
Commit migrated from https://github.com/dotnet/coreclr/commit/
17e4bdb9dab45240c85815edd6bf656bf36b1e3d
Jeremy Koritzinsky [Tue, 10 Sep 2019 22:33:38 +0000 (15:33 -0700)]
Manually marshal parameters for EventPipeInternal.Enable. (dotnet/coreclr#26496)
* Manually marshal parameters for EventPipeInternal.Enable.
* Update src/System.Private.CoreLib/src/System/Diagnostics/Eventing/EventPipe.cs
Co-Authored-By: Jan Kotas <jkotas@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
db04a9afd990091e2b6b7bbeb938ed731fbcdba5
John Salem [Tue, 10 Sep 2019 22:17:09 +0000 (15:17 -0700)]
[test] Mark EventPipe tests JITStress Incompatible and Partially GC Stress Incompatible (dotnet/coreclr#26606)
* Mark all EventPipe tests as JitOptimizationSensitive
* Mark EventPipe GC tests as GCStressIncompatible
* Reduce number of GCs triggered for EventPipe GC tests to make them more diagnosable in the event of failure
Commit migrated from https://github.com/dotnet/coreclr/commit/
d4e66769a2560ab7737c5c63b3702b245378ea2b
obligaron [Tue, 10 Sep 2019 20:22:53 +0000 (22:22 +0200)]
Improve logging for EventSource.WriteEvent parameter mismatch (dotnet/coreclr#25533)
* improve logging for EventSource.WriteEvent
* Fix IndexOutOfRangeException in SerializeEventArgs when incorrect arguments got passed
* simplify arg-check; remove nullable-todo
* switch from Debugger.Log to ReportOutOfBandMessage
* Remove unused flush-Paramater from ReportOutOfBandMessage
* fix parameter type nullable-check for reference-types
* fix parameter type nullable-check for nullable-types
Commit migrated from https://github.com/dotnet/coreclr/commit/
4eb1526fde7a93a1cf0a3c2eca73fc8182845127
Tomáš Rylek [Tue, 10 Sep 2019 19:52:28 +0000 (12:52 -0700)]
Refactor osGroup / osIdentifier pairs to osGroup / osSubgroup (dotnet/coreclr#26583)
Refactor osGroup / osIdentifier pairs to osGroup / osSubgroup
This simple cleanup removes the duplication between osGroup and
osIdentifier by switching over to use the pair osGroup and osSubgroup
such that the final OS identifier is a plain concatenation of osGroup
and osSubgroup. As the only currently supported OS flavors using
OS subgroups are Linux_musl and Linux_rhel6, this simplifies the
platform-matrix.yml and related scripts overall.
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
1a17ea321bb9489d85eb7731d765ae36529cab6d
Tarek Mahmoud Sayed [Tue, 10 Sep 2019 18:42:25 +0000 (11:42 -0700)]
Fix Running .NET Core Under Windows App Compat Shim (dotnet/coreclr#26605)
* Fix Running .NET Core Under Winndows App Compat Shim
.NET Core uses Windows features called sort handles for perf reason to speed up the collation operations (e.g. string comparisons). When enabling Windows app compat shim (e.g. Windows 7 compatibility mode), the calls uses sort handles will fail which cause all collation operations to fail.
The fix here is to detect if the sort handles work before using it to ensure successful run.
* Address the feedback
* More feedback addressing
Commit migrated from https://github.com/dotnet/coreclr/commit/
0f1314bdca91add2b4e9dbc95ec687dab638e1a0
Jan Kotas [Tue, 10 Sep 2019 03:52:10 +0000 (20:52 -0700)]
Delete dead code and fix issues found by static analysis tools (dotnet/coreclr#26604)
Commit migrated from https://github.com/dotnet/coreclr/commit/
961611fb7acb4f08a89011fec5d1d23f94743ce6
Stephen Toub [Tue, 10 Sep 2019 01:10:07 +0000 (21:10 -0400)]
Remove use of WeakReference from corelib (dotnet/coreclr#26597)
Only remaining use is the one place it shows up in public API, in GC.GetGeneration(WeakReference).
Commit migrated from https://github.com/dotnet/coreclr/commit/
778cc84ed4321cb5b3990e6bb683be4ee56bb8a1
Tyler Brinkley [Tue, 10 Sep 2019 01:08:53 +0000 (20:08 -0500)]
Make StringComparer.Create throw ArgumentNullException (dotnet/coreclr#26570)
* Make StringComparer.Create throw ArgumentNullException
Throws proper exception.
* Update CoreFX.issues.rsp
Commit migrated from https://github.com/dotnet/coreclr/commit/
69ff008fde9a23996029c4fa25b6f4fba4d815cf
Stephen Toub [Tue, 10 Sep 2019 01:07:56 +0000 (21:07 -0400)]
Remove remaining ToLower() use from corelib (dotnet/coreclr#26602)
Also happens to save a string allocation, but that's a drop in the bucket in this function.
Commit migrated from https://github.com/dotnet/coreclr/commit/
4432a27c3b221cc0398a3b7be5d372bd4986a980
Stephen Toub [Tue, 10 Sep 2019 01:07:44 +0000 (21:07 -0400)]
Remove sub-array allocation from GetManifestResourceNamesList (dotnet/coreclr#26601)
Also removes dependency on System.Range and RuntimeHelpers.GetSubArray in a simple console app such that they can be trimmed away.
Commit migrated from https://github.com/dotnet/coreclr/commit/
86fadd1f51a8d3a4276cc64ae830161503846a9a
Stephen Toub [Tue, 10 Sep 2019 01:07:33 +0000 (21:07 -0400)]
Remove Lazy/LazyInitializer from mscorlib.h (dotnet/coreclr#26603)
We do not need to special-case these types for reflection invocation, and doing so is currently keeping them from being trimmed when not otherwise used.
Commit migrated from https://github.com/dotnet/coreclr/commit/
70202b04cab861c7f3fd504a08e33153c2739d73
Steve MacLean [Mon, 9 Sep 2019 23:43:27 +0000 (19:43 -0400)]
Abort FuncEval on unaligned SP (dotnet/coreclr#26572)
Commit migrated from https://github.com/dotnet/coreclr/commit/
3b177c44a3005cd5733ec4f94b6c1408abbc4290
Sergey Andreenko [Mon, 9 Sep 2019 23:36:06 +0000 (16:36 -0700)]
Fix the loop iterator in `CheckNoTransformableIndirectCallsRemain`. (dotnet/coreclr#26599)
The error was made in 2017 https://github.com/dotnet/coreclr/commit/dotnet/coreclr@
654fed28001085adc162de1ea3207e9a22230235.
Commit migrated from https://github.com/dotnet/coreclr/commit/
eed279f32ae3eeb5e959fc27d54372960382644e
John Salem [Mon, 9 Sep 2019 18:32:48 +0000 (11:32 -0700)]
Add a check to ensure that there are not any zombied Diagnostics IPC sockets on Linux and error in a readable manner if we are unable to clean them up before running the test (dotnet/coreclr#26573)
Commit migrated from https://github.com/dotnet/coreclr/commit/
336662ca1bde4973ce4e2a33f0bee09f1adb5b6e
Jeremy Koritzinsky [Mon, 9 Sep 2019 18:14:48 +0000 (11:14 -0700)]
Remove unused CMake command to build native test assets as par… (dotnet/coreclr#26454)
Commit migrated from https://github.com/dotnet/coreclr/commit/
2af6907b5258ac3e13d7938f2c22db81eb0af5aa
mikedn [Mon, 9 Sep 2019 17:09:17 +0000 (20:09 +0300)]
Stop using LIST nodes for CALL arg lists (dotnet/coreclr#26392)
* Stop using GT_LIST in GenTreeCall
* Clarify optAssertionGenJtrue code
* Cleanup optCreateAssertion
* Cleanup AddHiddenArgument
* Cleanup impInlineIsGuaranteedThisDerefBeforeAnySideEffects
Commit migrated from https://github.com/dotnet/coreclr/commit/
667222e7cee75c0473e2e6b3a9c89dd5043ff176
Marek Safar [Mon, 9 Sep 2019 16:58:25 +0000 (18:58 +0200)]
Move TypedReference::SetTypedReference exception throw to managed (dotnet/coreclr#26596)
Commit migrated from https://github.com/dotnet/coreclr/commit/
7c9432c3ee874d8d5c4b1e5f38670ebef43bfb3f
Michal Strehovský [Wed, 4 Sep 2019 16:03:14 +0000 (18:03 +0200)]
Add project files
Commit migrated from https://github.com/dotnet/coreclr/commit/
5dc16c89311f4508ff05ffff15b4437bee3950a5
Michal Strehovský [Fri, 6 Sep 2019 14:48:52 +0000 (16:48 +0200)]
Do not precompile crossgen2
build-test.cmd limits precompilation to things that are directly in CORE_ROOT. We should do the same on Unix.
Commit migrated from https://github.com/dotnet/coreclr/commit/
7b660fc665a76b490e882d4ec993139b903cda2d
Tomas [Sat, 7 Sep 2019 18:10:33 +0000 (20:10 +0200)]
Exclude crossgen2 from CoreCLR test dependencies
Commit migrated from https://github.com/dotnet/coreclr/commit/
a1c32fc2fbdfb054a1548b861d4cf52075c3bca9
dotnet-bot [Mon, 9 Sep 2019 08:37:58 +0000 (10:37 +0200)]
Initial population of crossgen2 sources from CoreRT repo as of commit dotnet/coreclr@
48b4932a57a8aa3a2be45560ac9cac51003dd8b3
Commit migrated from https://github.com/dotnet/coreclr/commit/
ce1c7ed76cc113396cbbf25329b99089af6cc784
Konstantin Baladurin [Mon, 9 Sep 2019 15:40:14 +0000 (00:40 +0900)]
Linux/x86: fix build (dotnet/coreclr#26594)
Commit migrated from https://github.com/dotnet/coreclr/commit/
82f0870166f8c6a1c34497f5f088cdcebb4a33f7
Stephen Toub [Mon, 9 Sep 2019 13:50:16 +0000 (09:50 -0400)]
Replace HashHelpers.Combine with HashCode.Combine (dotnet/coreclr#26589)
* Replace HashHelpers.Combine with HashCode.Combine
* Address PR feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
1894302e7031a4677191dc383b781a89cca9bd2c
Michal Strehovský [Sun, 8 Sep 2019 20:00:18 +0000 (22:00 +0200)]
Mark unsafe intrinsics as reflection blocked
Keeping these reflection enabled pulls in quite a bit of junk (generic dictionaries, standalone method bodies, bookkeeping) that adds up to 1.5% of the size of Hello World...
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
87d194f3ecc0b41e95b43e3132e947feb9e6514b
Stephen Toub [Sat, 7 Sep 2019 14:47:49 +0000 (10:47 -0400)]
Fix race conditions in CultureInfo.GetCultureInfoHelper (dotnet/coreclr#26567)
The implementation reads the current value of the static cache field and then later overwrites that field with the originally read value. If ClearCachedData was called in the interim to clear the cached data, this will end up effectively undoing part of that clearing, as it'll end up restoring the previous cache. The fix is to write back the new reference only when we need to, which we could do when we detect it's null.
There's a secondary race condition this fixes as well. When a name and an altname are used with CultureInfo.GetCurrentCulture(string, string), the implementation was publishig the newly created instance into the dictionary under the lock, but then after the lock was released, it was setting that TextInfo to be read-only. That provides a window where another thread could see it as non-read-only and mutate it. The fix is to ensure it's marked as read-only fully before it's published.
As I was doing this, it struck me that the implementation was overly complicated, trying to merge three different code paths for three different callers, presumably to share code, but most of the code ended up not being shared anyway, which just made the code harder to follow for little gain. So, I split it back out into the three calling functions and removed the helper.
I also changed the locking mechanism. It had been using a single shared lock to protect all state, but the purpose of the lock is really just to synchronize access to an individual dictionary, so we can just lock on the relevant dictionary.
Commit migrated from https://github.com/dotnet/coreclr/commit/
456afea9fbe721e57986a21eb3b4bb1c9c7e4c56
Sergey Andreenko [Sat, 7 Sep 2019 08:35:59 +0000 (01:35 -0700)]
Add a repro for GitHub_26311. (dotnet/coreclr#26553)
* Add a repro for GitHub_26311.
Add an IL test that reproduces GitHub_26311 without using external functions and stress modes.
The test uses tail call opcode to force tail call to VSD over generic class via a slow helper.
* Exclude the test for windows x64.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1416a9c8703be562f3f01ed3da5825e3c3a1c286