Brian Sullivan [Wed, 19 Jun 2019 18:18:02 +0000 (11:18 -0700)]
Fix Issue dotnet/coreclr#25134 - AssertionProp incorrectly removes cast from uint
Add additional check for the GT_UNSIGNED flag
+ Ran clang-format
+ Code review feedback, use IsUnsigned()
Commit migrated from https://github.com/dotnet/coreclr/commit/
d4fd282d4b3d2190f0350a2f1f92c188f0073017
John Salem [Wed, 19 Jun 2019 17:29:49 +0000 (10:29 -0700)]
Change Diagnostic Server transport name to align with spec (dotnet/coreclr#25031)
resolves 24859
Commit migrated from https://github.com/dotnet/coreclr/commit/
d10701cc4d591bc89697b7bab98553305dcc9df4
Dan Moseley [Wed, 19 Jun 2019 08:28:30 +0000 (01:28 -0700)]
Exception format cleanup subset (dotnet/coreclr#25185)
* Change ArgumentException message to one line
* Disable 2 tests
* Remove duplication in AggregateException.ToString()
* Inner exceptions on new lines
* Caps letter
* Typo
Commit migrated from https://github.com/dotnet/coreclr/commit/
15ece8e1b587edd35af4c092e30e8666b2d9e66f
Jeremy Koritzinsky [Wed, 19 Jun 2019 00:26:10 +0000 (17:26 -0700)]
ILMarshaler Refactor (dotnet/coreclr#21227)
* Add support for fields to ILStubMarshalHome objects.
* Make the specific code streams in the ILMarshaler private members.
* Make home members private.
* Move the IL code stream members back to being protected for the marshalers that override EmitMarshalArgumentCLRToNative instead of EmitMarshalArgumentContents/Space.
* Convert virtual specifiers in overrides to override specifiers.
* Remove unused and undefined member.
* Cleanup a few missed virtual/override specifiers.
* Refactor setup methods. Refactor some of the overrides to duplicate less code.
* Refactor the setup stream and add some comments around how the ArgumentOverride/ReturnOverride marshalling system works.
* Use the cleanup work list in SafeHandle marshalling since the work list is now implemented entirely in managed code.
* Generalize DelegateCleanupWorkListElement -> KeepAliveCleanupWorkListElement and rename the managed entry point to match.
* Refactor direct usage of the cleanup code stream in non-overridden marshalers to use the cleanup work list instead.
* Refactor AsAny marshalling to fit into the regular ILMarshaler code-paths.
* Move ILArgIteratorMarshaler over to the full ILMarshaler infrastructure.
* Port ILBlittablePtrMarshaler over to not directly reference m_pcsMarshal.
* Make the specific code streams private and have ILNativeArrayMarshaler fetch the one it needs from the NDirectStubLinker.
* Devirtualize a method on ILMarshaler.
* Fix broken metasig
* Revert "Use the cleanup work list in SafeHandle marshalling since the work list is now implemented entirely in managed code."
This reverts commit dotnet/coreclr@
aedcdfb4830475ff8f4d582147cdc0eb497dd681.
* Fix ILArgIteratorMarshaler.
* Take 2 on using the cleanup work list for SafeHandles
* Remove unused field
* SafeHandleMarshaler doesn't need to have extra cleanup code when using the CleanupWorkList.
* Move the rest of the SafeHandle marshalling into ArgumentOverride.
* Moved Pinned Native Array special case into an ArgumentOverride.
* Devirtualize
* Remove invalid field hometype.
* Make ILMarshaler::m_pslNDirect private.
* Native Array marshalling fixes.
* Fix STLOC->LDLOC mistakes.
* Add override hook to allow a marshaler to request that byval contents are always converted to native even when not marked as In (i.e. explicitly marked only as Out). Used in AsAny for byval arrays.
* PR Feedback.
* Add explicit pinning path to ilmarshalers.
* Move implementation of ILNativeArrayMarshaler::CanMarshalViaPinning to ilmarshalers.cpp.
* Add missing override specifier.
* Don't create a managed marshaler if we are able to marshal via pinning. Remove extraneous checks against pinning.
* Convert ILWSTRMarshaler to use the MarshalViaPinning functions for its pinning fast-path.
* Enable LPWSTR marshalling to fall back to allocating on the heap for large strings when stack-allocating for native space (byref in-only semantics).
* PR Feedback.
Commit migrated from https://github.com/dotnet/coreclr/commit/
70febbad4bbe23326c26480b2848cdfe9fc8450c
Jan Kotas [Tue, 18 Jun 2019 21:17:18 +0000 (14:17 -0700)]
Relax signed/unsigned checks in Array.Copy to match other places (dotnet/coreclr#25209)
Disable failing tests. Also enable tests for changes that propagated through the system.
Fixes dotnet/corefxdotnet/coreclr#38535
Commit migrated from https://github.com/dotnet/coreclr/commit/
20b4bdd1fe553b8751a2a908cc748b0346808023
Jeremy Koritzinsky [Tue, 18 Jun 2019 21:05:15 +0000 (14:05 -0700)]
Don't free the loader handle if the LoaderAllocator is already dead. (dotnet/coreclr#25208)
Commit migrated from https://github.com/dotnet/coreclr/commit/
342327afd528c9e5d199a78e84793cbd916aadfd
Bruce Forstall [Tue, 18 Jun 2019 20:59:48 +0000 (13:59 -0700)]
Reduce corefx testing load (dotnet/coreclr#25235)
* Add new helixQueueGroup to allow restricting platforms tested
This is used to force corefx testing to only run on one Helix queue
for each platform, instead of multiple.
Commit migrated from https://github.com/dotnet/coreclr/commit/
96e07e6f339b784b9750378b4a13f74e08e64d75
Jarret Shook [Tue, 18 Jun 2019 20:44:00 +0000 (13:44 -0700)]
Fix 25233 (dotnet/coreclr#25234)
* Fix ibcmerge.csproj to use IbcMergePackageVersion
This fixes a copy/paste bug.
* Fix more copy/paste in comment
* Use ! in place of %
Commit migrated from https://github.com/dotnet/coreclr/commit/
dcc69ef321f9cdb73697af2ccb49096d3d1fffb1
Carol Eidt [Tue, 18 Jun 2019 20:12:31 +0000 (13:12 -0700)]
Fix contained LEA handling (dotnet/coreclr#25135)
* Fix contained LEA handling
This adds an LEA case to both `LinearScan::BuildOperandUses` and `CodeGen::genConsumeRegs`.
Fix dotnet/coreclr#25039
Commit migrated from https://github.com/dotnet/coreclr/commit/
3091448eae1af315ad78d9fc18ad1ee077afc795
Sergey Andreenko [Tue, 18 Jun 2019 16:30:59 +0000 (09:30 -0700)]
Start cleaning emitxarch::GetSize estimates. (dotnet/coreclr#25160)
* Add comments for _idCodeSize and a few asserts.
* Delete emitSizeOfJump.
* Delete emitInstCodeSz.
* Response review.
Commit migrated from https://github.com/dotnet/coreclr/commit/
0ad43be30fa7e611bef57c4b8e4fdd4a34bd65f4
Michal Strehovský [Tue, 18 Jun 2019 07:07:15 +0000 (09:07 +0200)]
Prevent loading byref-like types with invalid layout (dotnet/coreclr#25200)
First approximation of a fix for dotnet/coreclr#25057.
This has two problems:
* We're checking for any byref-like typed fields. Types that don't actually contain interior pointers but were marked as `ref struct` will fail to load when not aligned properly.
* We're not doing the deep validation that we do for reference types to make sure the `ByReference<T>` field doesn't overlap with another non-byreference field.
Question is whether we're okay with those limitations, or whether we need a better fix. Better fix would likely entail inefficiently walking over the fields à la `FindByRefPointerOffsetsInByRefLikeObject` (doing the more efficient thing that we do for object references below would require a GCDesc representation of byrefness).
Contributes to dotnet/coreclr#25057.
Commit migrated from https://github.com/dotnet/coreclr/commit/
84dc3732c6fd0f4739214eb83ffd643a33a5da17
Fadi Hanna [Tue, 18 Jun 2019 02:36:24 +0000 (19:36 -0700)]
Allow PEImageLayout to be loadable for R2R images loaded from streams. (dotnet/coreclr#25159)
* Allow PEImageLayout to be loadable for R2R images loaded from streams.
* Add regression test coverage
* Change CheckILOnly to return true for R2R images (similar to the ILOnly API)
* Early out for R2R images
* Remove R2R check
Commit migrated from https://github.com/dotnet/coreclr/commit/
2b85852af5e4e46973af07ce36c4d2f2a0e30616
Viktor Hofer [Fri, 14 Jun 2019 13:12:42 +0000 (15:12 +0200)]
Delete dead uapaot code (dotnet/corefxdotnet/coreclr#38330)
* Delete dead uapaot code
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
d6bec4a3ac652457f84a97e5a910f477fb491e03
mvandeberg [Mon, 17 Jun 2019 13:16:24 +0000 (23:16 +1000)]
Remove unused TRACE_LEVEL_NONE (dotnet/coreclr#23711)
Removed define TRACE_LEVEL_NONE from eventtracebase.h.
Removed static_assert(GCEventLevel_None == TRACE_LEVEL_NONE, "GCEventLevel_None value mismatch"); from eventtrace.cpp
Enhancement dotnet/coreclr#23711
Commit migrated from https://github.com/dotnet/coreclr/commit/
05659c32af2bc3a0d441edf9a55436873c025aaa
Jeremy Koritzinsky [Tue, 18 Jun 2019 00:17:47 +0000 (17:17 -0700)]
Add IJW native varargs tests. (dotnet/coreclr#24983)
* Refactor IJW test infra. Add some tests for some interesting simple native varargs.
* Add missing include of IjwHelper.cs
* Fix Cmake test project name.
* PR Feedback.
* Fix compilation error.
* Deploy msvcp*d.dll as part of the copy-local'd CRT.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ee2d0bc269cec5f2d44b9a6fcc18371b3fb983ae
Jan Kotas [Tue, 18 Jun 2019 00:15:56 +0000 (17:15 -0700)]
Stop ignoring crashes around IUnknown::Release calls (dotnet/coreclr#25210)
We do not want to be masking any memory corruption and bugs in the runtime.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a657823ef5cac9fb96f7f4138c894e919742389e
Sung Yoon Whang [Mon, 17 Jun 2019 21:31:55 +0000 (14:31 -0700)]
make DiagnosticCounter and its children lock 'this' instead of an arbitrary String (dotnet/coreclr#25173)
Commit migrated from https://github.com/dotnet/coreclr/commit/
14e4233ae24188e24db1bee91acc64693f0e9ca2
Jan Vorlicek [Mon, 17 Jun 2019 21:13:33 +0000 (23:13 +0200)]
Enable running SIGSEGV handler on non-alternate stack (dotnet/coreclr#25196)
When a third party library that someone loads into a coreclr process registers
its own SIGSEGV handler and then chain-calls coreclr SIGSEGV handler on a
non-alternate stack, coreclr would currently crash.
This fix enables it to execute the SIGSEGV handler on the non-alternate stack
(original stack of the interrupted thread) in such case.
The disadvantage is that stack overflow would lead to silent crash in such a
case, but we cannot do anything about it.
Commit migrated from https://github.com/dotnet/coreclr/commit/
4f6cc4aff1356802f04a7d6bb7a40c1642f7e96e
Jan Kotas [Mon, 17 Jun 2019 18:01:52 +0000 (11:01 -0700)]
Fix missing MethodEvents for R2R images (dotnet/coreclr#25199)
Fixes dotnet/coreclr#25014
Commit migrated from https://github.com/dotnet/coreclr/commit/
57a6eb69b3d6005962ad2ae48db18dff268aff56
Juan Hoyos [Mon, 17 Jun 2019 17:22:13 +0000 (10:22 -0700)]
Enable createdump on arm and arm64 (dotnet/coreclr#24832)
* Enable build of ARM64 createdump build
- Adds definitions of necessary constructs and aligments for Elf formats in aarch64
- Work around changes in ptrace for aarch64
* Package createdump in runtime transport for arm and arm64
* Use special name register definitions from the PAL
* Add createdump_lib to arm64 sos and package plugin
Commit migrated from https://github.com/dotnet/coreclr/commit/
6f1d3b4af924d22d2830d44c47a008ac1c284d7e
Egor Chesakov [Mon, 17 Jun 2019 17:13:14 +0000 (10:13 -0700)]
Fix official build - specify platformGroup for internal/Release/build-job.yml (dotnet/coreclr#25204)
Commit migrated from https://github.com/dotnet/coreclr/commit/
e1a00802f9873eeb3d46ce8fd05d0ac1ddfb400f
Ben Adams [Mon, 17 Jun 2019 15:14:53 +0000 (16:14 +0100)]
IndexOfAny(values.Length == 0) == -1 (dotnet/coreclr#25075)
* IndexOfAny(values.Length == 0) == -1
* Skip tests
Commit migrated from https://github.com/dotnet/coreclr/commit/
7c4e04bbfa8c36c32a23fa223d82d80fa732c95e
David Mason [Mon, 17 Jun 2019 14:04:19 +0000 (07:04 -0700)]
Fix GetFunctionEnter3Info on linux (dotnet/coreclr#25147)
Commit migrated from https://github.com/dotnet/coreclr/commit/
3b624b202a37d16aeab5d747e6143af1b38e4ca3
Andy Hanson [Mon, 17 Jun 2019 09:21:50 +0000 (02:21 -0700)]
Replace 'assert' with '_ASSERTE' (dotnet/coreclr#25177)
Commit migrated from https://github.com/dotnet/coreclr/commit/
bfe4001c030ceadff6db116d84788118666f8600
Fadi Hanna [Mon, 17 Jun 2019 05:16:11 +0000 (22:16 -0700)]
Update linux-instructions.md (dotnet/coreclr#25187)
Update ubuntu arm container version
Commit migrated from https://github.com/dotnet/coreclr/commit/
8f505558e6eb3019fbe47e24898f152afa1ef790
Adam Sitnik [Sun, 16 Jun 2019 04:22:12 +0000 (06:22 +0200)]
avoid expensive ref counting for CompareInfo on Linux (dotnet/coreclr#25117)
* change SafeSortHandle to be CriticalSortHandle to avoid expensive ref counting
* seal the CriticalSortHandle class
* use IntPtr instead of CriticalHandle to avoid resurrection issues. It's ok to never free the handle
* introduce cache for sort handles to prevent from memory leak in certain scenarios
* move the sort key logic to a dedicated helper type to avoid static field initialization order issues
* lock the dictionary
* simplify the code
* set the charset to Ansi
* Apply suggestions from code review
Co-Authored-By: Jan Kotas <jkotas@microsoft.com>
* don't use var
Commit migrated from https://github.com/dotnet/coreclr/commit/
9b0dcaa4bbf1440132cdbb3dfcc950afaef04656
Michal Strehovský [Sun, 16 Jun 2019 04:20:45 +0000 (06:20 +0200)]
Do not export GC entrypoints outside standalone build (dotnet/coreclr#25184)
It doesn't seem like something we would want to export outside standalone build.
Commit migrated from https://github.com/dotnet/coreclr/commit/
42ad6989cb2a85a526dd043f2b54d195cb0d0bb4
Sung Yoon Whang [Sat, 15 Jun 2019 23:46:02 +0000 (16:46 -0700)]
Add active timer counter (dotnet/coreclr#25186)
* Add active timer counter
* fix typo
Commit migrated from https://github.com/dotnet/coreclr/commit/
37ff0f54f4259e2e9629c62dfc7602c37ee3a97a
Adam Sitnik [Sat, 15 Jun 2019 13:10:04 +0000 (13:10 +0000)]
don't use var
Commit migrated from https://github.com/dotnet/coreclr/commit/
8f33c6f0873fa5924d19fa4dfefb6d68632a8345
Adam Sitnik [Sat, 15 Jun 2019 12:42:52 +0000 (14:42 +0200)]
Apply suggestions from code review
Co-Authored-By: Jan Kotas <jkotas@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
5be9be204246e07fc633111ed73dbeb4d6fcb79f
Adam Sitnik [Sat, 15 Jun 2019 09:23:27 +0000 (09:23 +0000)]
set the charset to Ansi
Commit migrated from https://github.com/dotnet/coreclr/commit/
a043b1f673cf969ac5585e3e806b36a0ab60539a
Adam Sitnik [Sat, 15 Jun 2019 06:48:50 +0000 (06:48 +0000)]
simplify the code
Commit migrated from https://github.com/dotnet/coreclr/commit/
94ddbf6ecf0363c1b0dd2de2936a4fa1caec6f7d
Elinor Fung [Sat, 15 Jun 2019 05:32:22 +0000 (22:32 -0700)]
Fix duplicate imports in managed product build (dotnet/coreclr#25174)
Commit migrated from https://github.com/dotnet/coreclr/commit/
db746a1995a2d4c3e4039e6eb51288f098b32551
Egor Chesakov [Sat, 15 Jun 2019 03:30:51 +0000 (20:30 -0700)]
Don't change LCL_FLD node type when replacing param with its shadow copy (dotnet/coreclr#20900)
Fix an issue that is reproduced when:
1) a method requires GSSecurityCookie (e.g. when allocating unsafe buffer using localloc) and
2) one of the method parameters is "vulnerable" and requires a shadow variable to be created and used instead of the original parameter variable and
3) the method parameter has small signed integer type (i.e. int8 or int16) and
4) the value of the parameter is converted to unsigned type (e.g. uint8 or uint16).
Commit migrated from https://github.com/dotnet/coreclr/commit/
ae2cd207ecf1e14c5e458588f28465b7aab97436
Sergey Andreenko [Sat, 15 Jun 2019 01:19:13 +0000 (18:19 -0700)]
abort build-tests if failed to restore stress dependencies (dotnet/coreclr#25140)
* abort build-tests if failed to restore stress dependencies
* Fix arm condition.
* Add arm64 condition.
* Skip runtime dependencies for arm32/arm64.
Commit migrated from https://github.com/dotnet/coreclr/commit/
14a981fd1d92f261870d64435ed50e599747a323
Sergey Andreenko [Sat, 15 Jun 2019 01:18:49 +0000 (18:18 -0700)]
Merge pull request dotnet/coreclr#25162 from sandreenko/FixGCStressSettingForTheTest
Do not force GcStress=0xc for GitHub_23199 on OSX.
Commit migrated from https://github.com/dotnet/coreclr/commit/
3eb98b0c307548cae8825551ac5e12afa8161122
Marek Safar [Sat, 15 Jun 2019 01:12:52 +0000 (03:12 +0200)]
Move parts of RuntimeType to shared partition (dotnet/coreclr#25176)
Commit migrated from https://github.com/dotnet/coreclr/commit/
2ec0bcfefe0bccb9a7023b8d528c775349d93458
José Rivero [Fri, 14 Jun 2019 20:47:04 +0000 (13:47 -0700)]
Moving non-EventPipe types out of eventpipe.* (dotnet/coreclr#25161)
* Replace runtime check with compile time assert.
* Move EventPipeEventPayload to its own file.
* Move `StackContents` to its own file.
* Move other classes declaration/definition out of eventpipe.*
Commit migrated from https://github.com/dotnet/coreclr/commit/
fc29d38699b8e4ce619d669c2135548fe8abe730
Sergey Andreenko [Fri, 14 Jun 2019 20:38:41 +0000 (13:38 -0700)]
Delete OSX condition.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6e232f1ff5bf6cf65af6e9918a4eeb8d95156292
Sergey Andreenko [Fri, 14 Jun 2019 19:49:29 +0000 (12:49 -0700)]
Do not force GCStress at all.
It doesn't work on OSX and Alpine.
It shows random failures on Windows as well, that we do not want to see in our PR/CI outerloop testing.
Commit migrated from https://github.com/dotnet/coreclr/commit/
5af3a154e728edc6574dadd4c9400530973990dd
Koundinya Veluri [Fri, 14 Jun 2019 19:48:45 +0000 (12:48 -0700)]
Fix crash/corruption in VSD hash tables when backpatching entry point slots is enabled (dotnet/coreclr#25158)
Fixes https://github.com/dotnet/coreclr/issues/25080
- The prober used to look for an item (`DispatchStub` or `ResolveCacheElem`) stores information specific to the table
- Cooperative GC mode guarantees that the information stored in the prober remains valid when the prober is reused to add a new item when one is not found
- The lock taken to record/backpatch an item's slot exits and reenters cooperative GC mode, which can cause the table to be reclaimed and replaced with a new table, and the prober still refers to the old table
- Upon adding the new item it may crash or corrupt some other memory
- Fixed by resetting the prober if a path is taken that may reenter cooperative GC mode
Commit migrated from https://github.com/dotnet/coreclr/commit/
54d82b2c1b385025ea84a9fb8c60caa76f371f34
Jarret Shook [Fri, 14 Jun 2019 18:45:46 +0000 (11:45 -0700)]
Add a build option to skip building managed tools (dotnet/coreclr#25171)
This specifically will set __BuildManagedTools=0 and skip building R2RDump and runincontext.
Commit migrated from https://github.com/dotnet/coreclr/commit/
261b860d3c1599724751135b56c605e3edc293bd
Adam Sitnik [Fri, 14 Jun 2019 17:38:07 +0000 (17:38 +0000)]
lock the dictionary
Commit migrated from https://github.com/dotnet/coreclr/commit/
f395bed0a5a4e44be9f8e0d421e93a1188e305e8
Adam Sitnik [Fri, 14 Jun 2019 17:34:24 +0000 (17:34 +0000)]
move the sort key logic to a dedicated helper type to avoid static field initialization order issues
Commit migrated from https://github.com/dotnet/coreclr/commit/
ed310157eb42f18ae0efbd0a14d95653dd977a99
Sung Yoon Whang [Fri, 14 Jun 2019 17:30:31 +0000 (10:30 -0700)]
Make DisplayUnits string.Empty by default instead of null (dotnet/coreclr#25104)
* Make DisplayUnits string.Empty by default instead of null
* PR feedback on DisplayName and setter validation
Commit migrated from https://github.com/dotnet/coreclr/commit/
87a8b4d87b0c9b5a9110af06ce62e6d24a197d77
Tarek Mahmoud Sayed [Fri, 14 Jun 2019 16:56:53 +0000 (17:56 +0100)]
Fix French Decimal number parsing (dotnet/coreclr#25154)
Commit migrated from https://github.com/dotnet/coreclr/commit/
c65b784b46b9cc7914e595b43ae1378c5cd9aa1e
Jarret Shook [Fri, 14 Jun 2019 15:31:47 +0000 (08:31 -0700)]
Merge pull request dotnet/coreclr#25138 from jashook/write_pgo_opt_version_to_intermediates_dir
Change how build.sh/build.cmd parse the PGO and IBC versions
Commit migrated from https://github.com/dotnet/coreclr/commit/
41f0cc37361e7b1dd37ca981b82a47b47b842db9
jashook [Fri, 14 Jun 2019 14:53:24 +0000 (07:53 -0700)]
Address all feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
d006ed403b942d42114445c23699af1ebdba2662
Adam Sitnik [Fri, 14 Jun 2019 14:34:38 +0000 (14:34 +0000)]
introduce cache for sort handles to prevent from memory leak in certain scenarios
Commit migrated from https://github.com/dotnet/coreclr/commit/
a4f5a2291e9d1f6fbd37b1d7fc0a8374a50b47cb
Jan Kotas [Fri, 14 Jun 2019 11:29:25 +0000 (04:29 -0700)]
Optimize Activator.CreateInstance (dotnet/coreclr#25145)
* Optimize Activator.CreateInstance
- Short-circuit Activator.CreateInstance<T>() for value types without default constructor
- Cache default constructor delegate on RuntimeType instead of fixed-size singleton cache
Commit migrated from https://github.com/dotnet/coreclr/commit/
e879d9c7b2b7d7a75c0101ff4861d6f87e223bc0
Adam Sitnik [Fri, 14 Jun 2019 07:01:52 +0000 (07:01 +0000)]
use IntPtr instead of CriticalHandle to avoid resurrection issues. It's ok to never free the handle
Commit migrated from https://github.com/dotnet/coreclr/commit/
0094d920349b8b62dadcab904ba9af7c6b8056c0
jashook [Fri, 14 Jun 2019 05:33:08 +0000 (22:33 -0700)]
Partially address comments
Commit migrated from https://github.com/dotnet/coreclr/commit/
1354bb6f5f6de5bc96a384f9ceee0381644797f2
Stephen Toub [Thu, 13 Jun 2019 14:03:40 +0000 (10:03 -0400)]
Update Corelib to adapt to compiler nullability updates
Commit migrated from https://github.com/dotnet/coreclr/commit/
64ca544ecf55490675e72b853e98ebc8cc75a4fe
Koundinya Veluri [Fri, 14 Jun 2019 01:50:11 +0000 (18:50 -0700)]
Fix code version table lock / coop GC mode switch ordering (dotnet/coreclr#25129)
Fixes https://github.com/dotnet/coreclr/issues/25086
- The lock is taken inside other unsafe locks in coop mode, in some paths it may not be legal to switch to preemptive mode before taking the lock
- Iterating over the cross loader allocator hash table to backpatch entry point slots needs coop GC mode, and was being done inside the lock
- Moved the switch to coop GC mode to before acquiring the lock to maintain consistent ordering between the two
Commit migrated from https://github.com/dotnet/coreclr/commit/
060c8a228fbe397b4207eaed2aedff7bbbf32586
Sergey Andreenko [Fri, 14 Jun 2019 00:50:15 +0000 (17:50 -0700)]
Do not force GcStress=0xc for GitHub_23199.
There was a typo for Unix (it is COMPlus_GCStress, not COMPlus_GcStress, but COMPlus_GcStressOnDirectCalls was correct). That was why the test passed on OSX.
Commit migrated from https://github.com/dotnet/coreclr/commit/
be341339d1764d7f136a3b4d1c985c5b6108dcb0
Egor Chesakov [Thu, 13 Jun 2019 23:33:42 +0000 (16:33 -0700)]
Add platformGroup parameter to platform-matrix.yml (dotnet/coreclr#25111)
Commit migrated from https://github.com/dotnet/coreclr/commit/
0bbdbfcdebc6771f88896d59a22386fc5a18b7dd
Michal Strehovský [Thu, 13 Jun 2019 22:24:59 +0000 (00:24 +0200)]
Allow pregenerating most HW intrinsics in CoreLib (dotnet/coreclr#24917)
* Allow pregenerating all HW intrinsics in CoreLib
This is a follow up to dotnet/coreclr#24689 that lets us pregenerate all hardware intrinsics in CoreLib.
We ensures the potentially unsupported code will never be reachable at runtime on CPUs that don't support it by not reporting the `IsSupported` property as intrinsic in crossgen. This ensures the support checks are always JITted. JITting the support checks is very cheap.
There is cost in the form of an extra call and failure to do constant propagation of the return value, but the cost is negligible in practice and gets eliminated once the tiered JIT tiers the method up.
We only do this in CoreLib because user code could technically not guard intrinsic use in `IsSupported` checks and pregenerating the code could lead to illegal instruction traps at runtime (instead of `PlatformNotSupportedException` throws) - it's a bad user experience.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e73c8e6c4a98b7ef6335afa31052bed7313fd816
Fadi Hanna [Thu, 13 Jun 2019 21:59:12 +0000 (14:59 -0700)]
Update crossgen.md
Add instructions on how to use the /r switch. Update instructions to use /p instead of /Platform_Assemblies_Paths (shorter version)
Commit migrated from https://github.com/dotnet/coreclr/commit/
c5c68b13bbf08d9047b1a894df5fe7f8bb3d239d
Fadi Hanna [Thu, 13 Jun 2019 21:26:12 +0000 (14:26 -0700)]
Merge pull request dotnet/coreclr#25137 from fadimounir/SuppressWarnings
Add a switch to suppress crossgen warnings
Commit migrated from https://github.com/dotnet/coreclr/commit/
a8f832b54f6e5db551de9427aea040da2bf4ca66
Ben Adams [Thu, 13 Jun 2019 21:21:40 +0000 (22:21 +0100)]
Intrinsicify SpanHelpers.IndexOf(char) (dotnet/coreclr#22505)
* Helpers to support Intrinsics in SpanHelpers.Char
* Intrinsicify SpanHelpers.IndexOf(char)
* Feedback
* fix
* Fix assert
* Improve comment warning
* fix
* fix
* Fix
* Fix
Commit migrated from https://github.com/dotnet/coreclr/commit/
56768014b02c2e4037e65c0ca51549cea0627bd6
jashook [Thu, 13 Jun 2019 21:02:53 +0000 (14:02 -0700)]
Remove duplicate not
Commit migrated from https://github.com/dotnet/coreclr/commit/
1e61962b559f185d88f8519594ce023541d04dba
jashook [Thu, 13 Jun 2019 20:29:27 +0000 (20:29 +0000)]
Address PR feedback.
Commit migrated from https://github.com/dotnet/coreclr/commit/
5e00fa0e6c82f67061572c21d6bfa429ebcc84c8
José Rivero [Thu, 13 Jun 2019 18:14:03 +0000 (11:14 -0700)]
Multiple EventPipe related bugs/issues (dotnet/coreclr#25112)
* Taking the event pipe lock around s_tracingInitialized.
https://github.com/dotnet/coreclr/pull/24896#discussion_r291790885
* Remove unused `EventPipe::s_fileSwitchTimerHandle` and `EventPipe::s_lastFlushTime` static variables.
* Improve `EventPipe::Shutdown` thread-safety (This is not complete yet as shutting down configuration might cause an AV if WriteEvent happens during or after `EventPipe::Shutdown`).
* Make sure we call `EventPipe::Shutdown` only once (the first time around).
* Move two EventPipe methods to `private`
Commit migrated from https://github.com/dotnet/coreclr/commit/
b62e7765e7f4171461b2597fe3174c211957f3ee
fadimounir [Wed, 12 Jun 2019 22:05:56 +0000 (15:05 -0700)]
Add a switch to suppress crossgen warnings
Commit migrated from https://github.com/dotnet/coreclr/commit/
27c76ae6df4b117ee10668b0b0b5fef43c4e0d38
Carol Eidt [Thu, 13 Jun 2019 17:28:58 +0000 (10:28 -0700)]
Don't try to fold constants for GT_HWIntrinsic (dotnet/coreclr#25139)
Fix dotnet/coreclr#25133
Commit migrated from https://github.com/dotnet/coreclr/commit/
f1ca8ad423a244f8f429fe715cdd3c6228302e32
jashook [Thu, 13 Jun 2019 16:31:33 +0000 (16:31 +0000)]
Add more context to the nmake comment
Commit migrated from https://github.com/dotnet/coreclr/commit/
bc980f3aa76229155efb4c7e024829b31e3a9633
jashook [Thu, 13 Jun 2019 16:05:53 +0000 (16:05 +0000)]
Fix nmake build
Commit migrated from https://github.com/dotnet/coreclr/commit/
a90c331f5f111675d0c397fb3600b3d24245b707
Michal Strehovský [Thu, 13 Jun 2019 07:58:50 +0000 (09:58 +0200)]
Emit a message when skipping a method in crossgen (dotnet/coreclr#25125)
Since crossgen normally prints a message when the compilation didn't happen (because e.g. something is not supported), we should print something here too. Otherwise the `/verbose` log makes it look like pregeneration succeeded and sends someone down a wrong path investigating why it's not picked up at runtime...
Commit migrated from https://github.com/dotnet/coreclr/commit/
e2b3130f4d0c9f1b759a769f4d344ee72a55b771
jashook [Thu, 13 Jun 2019 05:11:49 +0000 (05:11 +0000)]
Fix set syntax
Commit migrated from https://github.com/dotnet/coreclr/commit/
831e521092a7a3ee9ed97927d7653246bc4fc830
jashook [Thu, 13 Jun 2019 04:29:29 +0000 (04:29 +0000)]
Also use WriteLinesToFile for IBC merge and read in the file in build.cmd
Commit migrated from https://github.com/dotnet/coreclr/commit/
680ee73998a516a1b90d82ed5a932fa0f6836399
jashook [Thu, 13 Jun 2019 03:59:50 +0000 (03:59 +0000)]
Add ${__CommonMSBuildArgs} to pass buildtype and arch
Commit migrated from https://github.com/dotnet/coreclr/commit/
5ca07f5369c881b0b2fde1518675d0a120c00b7e
Santiago Fernandez Madero [Thu, 13 Jun 2019 01:12:07 +0000 (20:12 -0500)]
Fix a couple of annotations on Type (dotnet/coreclr#25136)
* Fix a couple of annotations on Type
* PR Feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
db7bbf105953a1e264f25c4e1d6cefd08acbb2cf
Kai Ruhnau [Thu, 13 Jun 2019 00:23:20 +0000 (02:23 +0200)]
Also set the *__TRYRUN_OUTPUT cache value to something. (dotnet/coreclr#24631)
CMake 3.14 fails in a cross-compilation ARM build and complains
that both both *_EXITCODE and *_EXITCODE__TRYRUN_OUTPUT have
to be set. Doing this re-enables the build.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f4fb47edb66d2b1e4ff5c3baf2e7c3ec1f0664da
Jarret Shook [Wed, 12 Jun 2019 22:17:07 +0000 (15:17 -0700)]
use nodeReuse:false in build.sh and build-test.sh. (dotnet/coreclr#25101)
* use nodeReuse:false in build.sh and build-test.sh.
* Address feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
d0540d9a7ef0aa84205ab9a131094c7a7a6dd1cd
jashook [Wed, 12 Jun 2019 22:16:40 +0000 (22:16 +0000)]
Change how build.sh/build.cmd parse the PGO and IBC versions
This will reduce fragility in our build pipeline, by explicitely controlling the output of dotnet msbuild. It also unblocks the source-build effort, as source-build will write extra console output breaking our old parsing.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ff5f14a7c3440ab918beb3aa5b1b14ec1dbaad68
Stephen Toub [Wed, 12 Jun 2019 19:09:49 +0000 (15:09 -0400)]
Replace 'where T : object` with `where T : notnull`
Commit migrated from https://github.com/dotnet/coreclr/commit/
e083b2a4ab3045450005645dab8c009574a75d58
dotnet-maestro[bot] [Wed, 12 Jun 2019 17:41:32 +0000 (10:41 -0700)]
Update dependencies from dotnet/arcade (dotnet/corefxdotnet/coreclr#38474)
* Update dependencies from https://github.com/dotnet/arcade build
20190611.2
- Microsoft.DotNet.XUnitExtensions - 2.4.1-beta.19311.2
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.19311.2
- Microsoft.DotNet.VersionTools.Tasks - 1.0.0-beta.19311.2
- Microsoft.DotNet.ApiCompat - 1.0.0-beta.19311.2
- Microsoft.DotNet.Arcade.Sdk - 1.0.0-beta.19311.2
- Microsoft.DotNet.Build.Tasks.Configuration - 1.0.0-beta.19311.2
- Microsoft.DotNet.Build.Tasks.Feed - 2.2.0-beta.19311.2
- Microsoft.DotNet.Build.Tasks.Packaging - 1.0.0-beta.19311.2
- Microsoft.DotNet.CodeAnalysis - 1.0.0-beta.19311.2
- Microsoft.DotNet.CoreFxTesting - 1.0.0-beta.19311.2
- Microsoft.DotNet.GenAPI - 1.0.0-beta.19311.2
- Microsoft.DotNet.Helix.Sdk - 2.0.0-beta.19311.2
- Microsoft.DotNet.RemoteExecutor - 1.0.0-beta.19311.2
- Microsoft.DotNet.GenFacades - 1.0.0-beta.19311.2
* Update `where T : object` constraint to be `where T : notnull`
* Update several TODO-NULLABLE comments
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
3e387f5e6d28050b9f6a4209660e29e0da9f41b4
Stephen Toub [Wed, 12 Jun 2019 15:12:31 +0000 (11:12 -0400)]
Fix nullable annotations on Binder.ReorderArgumentArray
Commit migrated from https://github.com/dotnet/coreclr/commit/
206ee00e3bd3ea2124a1677c8a3dafaad6487197
Stephen Toub [Wed, 12 Jun 2019 15:00:51 +0000 (11:00 -0400)]
Remove defunct !s and update some TODO-NULLABLE comments
Commit migrated from https://github.com/dotnet/coreclr/commit/
4f86404677771a4d29324f258a4a2de8292515eb
Jeremy Koritzinsky [Wed, 12 Jun 2019 17:16:42 +0000 (10:16 -0700)]
Allocate handles for custom marshalers in ALCs instead of in the AppDomain. (dotnet/coreclr#25105)
Commit migrated from https://github.com/dotnet/coreclr/commit/
a8b4c8f67a2d56587c56930b5483335f7ddab3a2
Jan Vorlicek [Wed, 12 Jun 2019 17:15:22 +0000 (19:15 +0200)]
Enable coreclr-runincontext in azure pipelines (dotnet/coreclr#25073)
* Enable coreclr-runincontext in azure pipelines
Commit migrated from https://github.com/dotnet/coreclr/commit/
4c802793e1c526f98a2fe76979e50b11ad029808
jashook [Wed, 12 Jun 2019 17:07:38 +0000 (17:07 +0000)]
Address feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
848db3f6754ec9fed2a0e832447485b8f1f132ee
Carol Eidt [Wed, 12 Jun 2019 16:07:32 +0000 (09:07 -0700)]
SuperPMI: Fix `getFieldType` (dotnet/coreclr#25102)
* SuperPMI: Fix `getFieldType`
The `structType` out parameter is optional (i.e. it may be null), but it's not used as a key, so we need to update the map if we've saved a null but encounter a non-null.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1bed4714dcf1ae73100f110ff2ff1642c616bb93
Marek Safar [Wed, 12 Jun 2019 14:33:18 +0000 (16:33 +0200)]
Convert PermissionSet NIE to PlatformNotSupportedException (dotnet/coreclr#25114)
Commit migrated from https://github.com/dotnet/coreclr/commit/
ac1effe215b1f01df31c2c97526c81e3c2211c0e
Michal Strehovský [Wed, 12 Jun 2019 14:32:53 +0000 (16:32 +0200)]
Expose readonly heap segments to DAC (dotnet/coreclr#25113)
This was in CoreRT's copy of gcinterface.dac.h, but got lost in dotnet/corertdotnet/coreclr#7517.
Commit migrated from https://github.com/dotnet/coreclr/commit/
21c4d9d55c383b92eba5fedc5a91a2821666c067
Stephen Toub [Wed, 12 Jun 2019 13:42:08 +0000 (06:42 -0700)]
Add missing TraceOperationCreation log event in GetStateMachineBox (dotnet/coreclr#25097)
This was removed accidentally as part of overhauling the async infrastructure in 2.1. VS depends on it for some task tracking logic.
Commit migrated from https://github.com/dotnet/coreclr/commit/
182b63d94e95aee139bd4f8b107b314b860cdedd
Jan Vorlicek [Wed, 12 Jun 2019 11:27:12 +0000 (13:27 +0200)]
Fix Module::IsInSameVersionBubble contract (dotnet/coreclr#25106)
* Fix Module::IsInSameVersionBubble contract
The function had an incorrect contract indicating that it cannot throw
and that it cannot trigger GC. This is not true in case the underlying
GetNativeAssemblyImport loads the manifest.
Change the contract to STANDARD_VM_CONTRACT
Commit migrated from https://github.com/dotnet/coreclr/commit/
10b057a0f39212386c07c36dbcc03e0555066ae3
Adam Sitnik [Wed, 12 Jun 2019 09:53:35 +0000 (11:53 +0200)]
seal the CriticalSortHandle class
Commit migrated from https://github.com/dotnet/coreclr/commit/
849c31039b064b1abc8086431fec07b0d930e615
Adam Sitnik [Wed, 12 Jun 2019 09:18:39 +0000 (11:18 +0200)]
change SafeSortHandle to be CriticalSortHandle to avoid expensive ref counting
Commit migrated from https://github.com/dotnet/coreclr/commit/
65d3ece67e100a6cbb4529daf67e8f47f5be5540
Suchiman [Tue, 11 Jun 2019 19:38:23 +0000 (21:38 +0200)]
CoreRT change
Commit migrated from https://github.com/dotnet/coreclr/commit/
c3ac0c460382519c0344f3e87626846ab6fd96a1
Suchiman [Sun, 9 Jun 2019 16:18:44 +0000 (18:18 +0200)]
Ensure gen0_max_size to be initially >= gen0_min_size
Otherwise, gen0_min_size is eventually capped by gen0_max_size, which makes it impossible to raise gen0 size above the default max sizes for gen0.
This is required for some scenarios (CppCodeGen, WASM) in CoreRT.
Commit migrated from https://github.com/dotnet/coreclr/commit/
2052c9c1d7be368ed687a8958b9f98a7930e3698
Suchiman [Tue, 11 Jun 2019 19:32:51 +0000 (21:32 +0200)]
Multiple CoreRT changes
Commit migrated from https://github.com/dotnet/coreclr/commit/
fb64e3a59a9dbb767a1843ebd5ae9cce30431ea6
Suchiman [Tue, 11 Jun 2019 19:30:57 +0000 (21:30 +0200)]
Fix casts
Commit migrated from https://github.com/dotnet/coreclr/commit/
13001f90aa71a7a0ec4039922f29087680b44ec3
Suchiman [Tue, 11 Jun 2019 19:17:46 +0000 (21:17 +0200)]
Fix Redhawk defines
Commit migrated from https://github.com/dotnet/coreclr/commit/
7fcbc3b5b0689a959d9da928e4d03f532a851212
Suchiman [Tue, 11 Jun 2019 19:14:57 +0000 (21:14 +0200)]
UNREFERENCED_PARAMETER
Commit migrated from https://github.com/dotnet/coreclr/commit/
18ca45f9718897f7b8fe1036213150dd6e7b97ec
Suchiman [Tue, 11 Jun 2019 18:18:39 +0000 (20:18 +0200)]
Port typo fixes from CoreRT
Commit migrated from https://github.com/dotnet/coreclr/commit/
7d0bffa8e5cea35b498dedb36393e0620377d03e
Andy Ayers [Wed, 12 Jun 2019 01:17:47 +0000 (18:17 -0700)]
JIT: use stress mode tail call validation info for implicit tail calls (dotnet/coreclr#25093)
If a call site fails tail call stress validation, don't consider it for
implicit tail calling either.
In normal jitting we defer this level of validation until impImportCall
to avoid duplicating work.
This avoids an assert when we have invalid IL.
Fixes dotnet/coreclr#25027.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a12705bfc76d6f7d7c9f795acffa92a539662b70
Juan Hoyos [Wed, 12 Jun 2019 00:16:25 +0000 (17:16 -0700)]
Fix context restore for ARM/ARM64 debugging (dotnet/coreclr#25089)
Commit migrated from https://github.com/dotnet/coreclr/commit/
491cb6c53bbe30635473b684192658d125b02e2e
Andy Hanson [Tue, 11 Jun 2019 23:20:29 +0000 (16:20 -0700)]
Fall back to CpuId if failed to get cache size from OS (dotnet/coreclr#24989)
* Fall back to CpuId if failed to get cache size from OS
It's possible for GetLogicalProcessorCacheSizeFromOS() to fail;
this happens on alpine linux where it compiles to just `return 0;`.
As a fallback, we can get the cache size from CpuId. Previously that
was specific to x86; this PR preserves the behavior that we never call
GetLogicalProcessorCacheSizeFromOS on x86.
CpuId only works on x86 and amd64; on other systems we may still return
0 from here. Then GC defaults to a cache size of only 0.25MB.
Note: Removed the code in an `#ifdef _WIN64` that was nested inside of
`#if defined (_TARGET_X86_)`. Presuming that is dead code.
* Fix exception handler
Commit migrated from https://github.com/dotnet/coreclr/commit/
6d29903a0f2d966214685c7d15de4435bb4b8ee3
Jan Vorlicek [Tue, 11 Jun 2019 22:42:46 +0000 (00:42 +0200)]
Fix ForeignThreadExceptions test (dotnet/coreclr#25074)
This test creates a native thread on which it calls a managed callback. It uses
std::thread to create the thread. The problem is that on MUSL based Linux distros,
the default stack size for secondary threads is 80kB, which is not enough for this
test.
Since std::thread has no way to set the thread stack size, the fix is to use
pthreads on Unix and keep the std::thread for Windows only.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1eee9e5338118aeb6afa199658b2fdd4f318414e