Tomáš Rylek [Mon, 24 Jun 2019 18:06:42 +0000 (11:06 -0700)]
Update R2R format doc to 3.0 (dotnet/coreclr#25297)
I have updated the various enumerations and tables. I didn't try
to go overboard w.r.t. understanding tables I'm not yet familiar
with, most notably the diagnostic, inlining and profiling tables.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6c9deb470b1d4f704127979552a94126285e02d7
Michal Strehovský [Mon, 24 Jun 2019 14:00:29 +0000 (16:00 +0200)]
Extend the assert for zero-offset fields (dotnet/coreclr#25341)
CoreRT has an [actual field](https://github.com/dotnet/corert/blob/dotnet/coreclr@
ba3ba929c88bd80ec5d4dd9cf6917471ad8fa180/src/System.Private.CoreLib/src/System/Object.CoreRT.cs#L30) for the method table table pointer in `System.Object`. CoreCLR does shenanigans when laying out `System.Object` to leave a pointer-sized hole instead.
I think the zero-offset field is triggering these asserts.
Commit migrated from https://github.com/dotnet/coreclr/commit/
2fe1a39d63f5e5e131ed894dd44948e9b05430c9
Stephen Toub [Mon, 24 Jun 2019 13:27:47 +0000 (09:27 -0400)]
Force secondary await continuations to run asynchronously (dotnet/coreclr#25280)
* Force secondary await continuations to run asynchronously
For performance reasons, await continuations have been invoked synchronously, meaning they're invoked as part of the antecedent task's completion (as long as that task allows it, as long as there's sufficient stack space, etc.) This generally works out well in the case where there's a single await continuation, which is far and away the common case. However, it can cause problems in situations where there are multiple await continuations, as those continuations will end up being serialized, which can lead to slowdowns and deadlocks in niche situations. To address that, this commit backs off a bit. The first await continuation is still invoked synchronously, but subsequent await continuations are invoked asynchronously, such that they are not blocked by a previously registered await continuation.
* Fix nits
Commit migrated from https://github.com/dotnet/coreclr/commit/
d58a283f2a69da1509b8d76dfec0959b93e061c8
Marco Rossignoli [Sun, 23 Jun 2019 15:30:58 +0000 (17:30 +0200)]
MemoryExtensions ToUpper / ToLower throws for overlapping buffer (dotnet/coreclr#25327)
Commit migrated from https://github.com/dotnet/coreclr/commit/
a06eb9f88e674f6aa9fba5b69ad600293b7acf87
Roman Marusyk [Sun, 23 Jun 2019 02:55:17 +0000 (05:55 +0300)]
Change exception throwing in Path.GetRelativePath (dotnet/coreclr#25047)
* Fix Path.GetRelativePath throws ArgumentNullException when relativeTo is empty string
* Fix ArgumentException for relativeTo
Commit migrated from https://github.com/dotnet/coreclr/commit/
717b32703b59682479c04399c03fe0ebfa79c22f
Herman Eldering [Sun, 23 Jun 2019 02:52:42 +0000 (04:52 +0200)]
ArgumentException: use system-supplied message if message is null (dotnet/coreclr#25115)
Enable using a system-supplied message while also providing an argument/parameter name by passing in a null message. Made to match the behavior of FileNotFoundException.
Commit migrated from https://github.com/dotnet/coreclr/commit/
248f087b8db718880c82ccd95286c133f2c36ec8
Andy Ayers [Sun, 23 Jun 2019 02:06:27 +0000 (19:06 -0700)]
Fix ReturnKind classification for byref like types returned in registers (dotnet/coreclr#25333)
These types contain byrefs, and so when returned in registers we may need
to avoid GC stress at the return site.
Addresses part of dotnet/coreclr#24263.
Commit migrated from https://github.com/dotnet/coreclr/commit/
7dceb4c5eb991794ceca27a45c56b91119a742da
Leandro A. F. Pereira [Sat, 22 Jun 2019 08:52:48 +0000 (01:52 -0700)]
Fix generation of RID on distros that do not set VERSION_ID (dotnet/coreclr#25034)
Rolling-release distros do not set this variable, leading to invalid
RIDs such as "gentoo.-x64", which causes build failures.
Omit VERSION_ID (and the period preceding it) when unset, so it's
consistent with host and PlatformAbstractions.
Fixes dotnet/coreclr#19769.
Commit migrated from https://github.com/dotnet/coreclr/commit/
268e1e138732b7bec8f9b89c624dee75c68a7028
dotnet-maestro[bot] [Sat, 22 Jun 2019 08:33:30 +0000 (01:33 -0700)]
[master] Update dependencies from dotnet/corefx (dotnet/coreclr#25120)
* Update dependencies from https://github.com/dotnet/corefx build
20190621.1
- Microsoft.Bcl.AsyncInterfaces - 1.0.0-preview7.19321.1
- Microsoft.NETCore.Platforms - 3.0.0-preview7.19321.1
- Microsoft.Private.CoreFx.NETCoreApp - 4.6.0-preview7.19321.1
* Disable failing tests
Commit migrated from https://github.com/dotnet/coreclr/commit/
f55135711f21c7c60ebaf9653e7d97486085a649
Tamar Christina [Sat, 22 Jun 2019 07:47:20 +0000 (08:47 +0100)]
Arm64: Correct encoding of fabd (dotnet/coreclr#25150)
Commit migrated from https://github.com/dotnet/coreclr/commit/
e20dc64847265b1b8d65844b12388ca19a8b074a
Maoni Stephens [Sat, 22 Jun 2019 01:06:39 +0000 (18:06 -0700)]
don't require seg size to be power of 2 for large pages (dotnet/coreclr#25216)
large pages will have segments aligned to 16mb (the default min seg size for hardlimit)
Commit migrated from https://github.com/dotnet/coreclr/commit/
5de657884fa83a25856608754efa5a24655eb8b2
Brian Sullivan [Fri, 21 Jun 2019 22:56:36 +0000 (15:56 -0700)]
Merge pull request dotnet/coreclr#25260 from briansull/GitHub_25134
Fix Issue dotnet/coreclr#25134 - AssertionProp incorrectly removes cast from uint
Commit migrated from https://github.com/dotnet/coreclr/commit/
56e6568b51476868303744473c03ac595121165b
Noah Falk [Fri, 21 Jun 2019 22:27:21 +0000 (15:27 -0700)]
Add EventPipe Processor Number support and make NetTrace the default … (dotnet/coreclr#25276)
* Add EventPipe Processor Number support and make NetTrace the default format
The EventPipe header now has a Processor Number field. On windows we query the correct value, on other OSes we currently have a -1 placeholder, but the field is written to the format regardless.
NetTrace is now the default format when using the environment variable, and the format must be explicitly configured when using the IPC channel or managed API. A parallel change in the diagnostics repo is changing dotnet-trace and dotnet-counter to specify nettrace format which means .NET devs should see nettrace almost exclusively from now on. If for whatever reason it is needed, NetPerf remains available if a scenario explicitly requests to use it.
* PR feedback + attempting to fix broken tests
Commit migrated from https://github.com/dotnet/coreclr/commit/
961e8d7bd1bdd058ee5f8f34937e9f3f9d80b65b
Sergey Andreenko [Fri, 21 Jun 2019 21:49:57 +0000 (14:49 -0700)]
WorkAround for dotnet/coreclr#25050. (dotnet/coreclr#25316)
* WorkAround for dotnet/coreclr#25050.
A temporary workaround to push the milestone for this issue to 3.next.
* Response review.
Commit migrated from https://github.com/dotnet/coreclr/commit/
205e01fc5020f597ee69643c24fd56268cdf1b50
Carol Eidt [Fri, 21 Jun 2019 21:26:11 +0000 (14:26 -0700)]
Fix test to use mutual waits (dotnet/coreclr#25317)
Fix dotnet/coreclr#25245
Commit migrated from https://github.com/dotnet/coreclr/commit/
ec54de73c309d64fcf4683c5e23c9065cd16fd08
Santiago Fernandez Madero [Fri, 21 Jun 2019 17:54:36 +0000 (10:54 -0700)]
Address nullable feedback for System.Diagnostics.Tracing and StackTrace (dotnet/coreclr#25303)
* Address nullable feedback for System.Diagnostics.Tracing and StackTrace
* Disable corefx tests that need to be updated
Commit migrated from https://github.com/dotnet/coreclr/commit/
457c13d6b561ec7ff2a48d3d2599c5dcaed7b728
Carol Eidt [Fri, 21 Jun 2019 17:40:03 +0000 (10:40 -0700)]
Update instructions to build individual tests
cc @jashook and @sandreenko
Commit migrated from https://github.com/dotnet/coreclr/commit/
cfe7e655bf3ba03622e0b347dfca6e6fcee6942b
Mike McLaughlin [Fri, 21 Jun 2019 16:40:16 +0000 (09:40 -0700)]
ifdef Linux specific readvirtual code (dotnet/coreclr#25299)
Commit migrated from https://github.com/dotnet/coreclr/commit/
821a5d282a8d0058b9311ca10ef568c5f06379b8
Stephen Toub [Fri, 21 Jun 2019 15:56:13 +0000 (11:56 -0400)]
Remove several unnecessary string allocations (dotnet/coreclr#25305)
Commit migrated from https://github.com/dotnet/coreclr/commit/
fc38c39b2eb534917edeab99a1fe8fc057f66af2
Andy Ayers [Fri, 21 Jun 2019 15:32:37 +0000 (08:32 -0700)]
JIT: update epilog exit size assert for x86 (dotnet/coreclr#25302)
With the advent of dotnet/coreclr#25251 we can now see the epilog exit sequence on x86 vary
by as much as 6 bytes. Update the assert accordingly.
Fixes dotnet/coreclr#25301.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e31c78ba38273055ef0ca36de26f31ffabe521ac
Ao Qi [Fri, 21 Jun 2019 12:29:01 +0000 (20:29 +0800)]
Fixed mis-matching arguments in src/CMakeLists.txt (dotnet/coreclr#25307)
Commit migrated from https://github.com/dotnet/coreclr/commit/
d1e7ef0f64b00fe2ab45bb0a893491528545de24
Jan Vorlicek [Fri, 21 Jun 2019 12:21:34 +0000 (14:21 +0200)]
Disable unloading incompatible test for runincontext (dotnet/coreclr#25126)
* Disable unloading incompatible test for runincontext
These tests do various things that make them incompatible with running
in an unloadable assembly load context using the runincontext tool.
I've attached comments to the UnloadabilityIncompatible element
describing the specific problems of each test.
I've also found a problem in the parameter passing in the
runincontext.sh where it was always passing 7 parameters to each test
and tests that were checking the number of parameters were failing due
to that. This change fixes it by passing just the parameters that were
passed to the runincontext.sh.
* Added printing unhandled exception details if it happened in the test
* Added 10ms wait to the GC collection loop to also give time to async
stuff to completely exit threadpool threads
Commit migrated from https://github.com/dotnet/coreclr/commit/
d7db5ab9bd3ad449b18dd96b3ac37592b207205b
David Mason [Fri, 21 Jun 2019 09:20:57 +0000 (02:20 -0700)]
Mark the profiler attach thread during attach
Commit migrated from https://github.com/dotnet/coreclr/commit/
e999f37a83583768aa68ad9fda805088ac9df6b8
Jan Vorlicek [Fri, 21 Jun 2019 08:48:08 +0000 (10:48 +0200)]
Fix OSX floating point state extraction (dotnet/coreclr#25295)
There was a bug reported on a very recent Mac with Intel i9 processor. A
crash in the RtlRestoreContext was happening at the fxrstor instruction
due to the fact that the floating point state data were garbage.
The investigation has shown that sometimes, the x86_FLOAT_STATE64
cannot be obtained using the thread_get_state API. And it was also found
that at the same time, the x86_AVX_STATE64 can be obtained. The state
extracted by the AVX variant contains all the registers that the FLOAT
variant would extract.
However, in some cases, even the x86_AVX_STATE64 cannot be obtained and
there is a third flavor that we can get - x86_AVX512_STATE64.
Unfortunately, there are cases where none of those can be obtained.
It is not clear what causes these cases, it seems only kernel debugging
can give us an answer to that.
This change modifies the way we extract the floating point state. We
first try to get the AVX state, if we fail, we try the AVX512 and
finally we fall back to the FLOAT state. If we fail to get the floating
point state with any of these, we return context without the floating
point state flag set. Also, if only getting the FLOAT state succeeds,
we return context without the XSTATE flag set.
Commit migrated from https://github.com/dotnet/coreclr/commit/
3954d187d1563a886f5ae2ed72442a813bbf2573
Stephen Toub [Fri, 21 Jun 2019 04:36:42 +0000 (00:36 -0400)]
Reduce string allocation in DiagnosticCounter.GetMetadataString (dotnet/coreclr#25219)
When the _metadata dictionary contains a single key/value pair, the method ends up allocating an unnecessary StringBuilder, char[] beneath it, and input string.
When the _metadata dictionary contains more key/value pairs, the method ends up allocating an unnecessary string per key/value pair.
Commit migrated from https://github.com/dotnet/coreclr/commit/
99c30f13c1f64180a2524e6160d374f366c01719
Vladimir Sadov [Fri, 21 Jun 2019 02:54:34 +0000 (19:54 -0700)]
ensure process-wide fence when updating GC write barrier on ARM64 (dotnet/coreclr#25130)
* ensure process-wide fences when updating GC write barrier on ARM64
Commit migrated from https://github.com/dotnet/coreclr/commit/
f77a8bee633f8fae4b3ee85afff619e11226d79b
Brian Sullivan [Fri, 21 Jun 2019 01:43:32 +0000 (18:43 -0700)]
Added the complementary test cases of going from a negative int to an unsigned.
Commit migrated from https://github.com/dotnet/coreclr/commit/
56ea111329f8dd834795676178957d63d84ba167
Jeremy Koritzinsky [Fri, 21 Jun 2019 00:57:58 +0000 (17:57 -0700)]
Revert "ILMarshaler Refactor (dotnet/coreclr#21227)" (dotnet/coreclr#25292)
This reverts commit dotnet/coreclr@
70febbad4bbe23326c26480b2848cdfe9fc8450c.
Commit migrated from https://github.com/dotnet/coreclr/commit/
41893484b3fecdb5ffe69f0c94a5832690feeb5a
Gleb Balykov [Fri, 21 Jun 2019 00:55:10 +0000 (03:55 +0300)]
Add custom default base address option to crossgen (dotnet/coreclr#25227)
* Add crossgen option to setup default base address for native image
This is enabled only with -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION.
* Mmap native images at default base address if env variable COMPlus_UseDefaultBaseAddr=0x1 is setup.
This is enabled only with -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION.
Commit migrated from https://github.com/dotnet/coreclr/commit/
86e600cef40a650a8ffb294dd195186b1679609b
Sung Yoon Whang [Thu, 20 Jun 2019 23:33:51 +0000 (16:33 -0700)]
Fix eventpipe filtering (dotnet/coreclr#25221)
* Add DOTNET_TRACE_CONTEXT and change macros to use DOTNET_TRACE_CONTEXT instead of MCGEN_TRACE_CONTEXT
* Fixing macro definitions
* eventing codegen scripts now generates EventPipe trace contexts
* Fix macros to use the EVENTPIPE_TRACE_Context
* Fix linux build
* Fix windows build
* Update Eventpipe provider context at EtwCallbackComon
* break in switch
* Update rundown provider context manually
* PR feedback
* Eventpipe->EventPipe
* cleanup in codegen script
Commit migrated from https://github.com/dotnet/coreclr/commit/
9bd2787a9dd2aa4d2b7d4f72afebc3dbe896e896
Sung Yoon Whang [Thu, 20 Jun 2019 23:32:20 +0000 (16:32 -0700)]
Update linux-performace-tracing doc to add eventpipe/dotnet-trace (dotnet/coreclr#25212)
* Update linux-performace-tracing doc to add eventpipe/dotnet-trace
* typo
* Add more detailed doc instead of just a link :)
* remove redundant part
* Update based on noah's feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
05a557349f6c60f014f708282762168a8ba093e0
Jeremy Koritzinsky [Thu, 20 Jun 2019 23:12:02 +0000 (16:12 -0700)]
Remove dead code related to copy-constructors and intercept stubs (dotnet/coreclr#25264)
* Remove dead code related to copy-constructors and intercept stubs
* PR Feedback.
Commit migrated from https://github.com/dotnet/coreclr/commit/
9b7b504ab67cc625899fbb7d10ef1e3c8b61b612
Jeremy Koritzinsky [Thu, 20 Jun 2019 23:11:17 +0000 (16:11 -0700)]
Disable NativeVarargsTest on Windows Nano Server. (dotnet/coreclr#25284)
Commit migrated from https://github.com/dotnet/coreclr/commit/
30dd5bd4ae08144da758b916f53e0f37779660a3
Egor Chesakov [Thu, 20 Jun 2019 22:36:25 +0000 (15:36 -0700)]
Move resources/containers out of azure-pipelines.yml to platform-matrix.yml (dotnet/coreclr#25155)
Commit migrated from https://github.com/dotnet/coreclr/commit/
4b9c3106faba50f6756f768bb93eec3ffa49a3bd
Tomáš Rylek [Thu, 20 Jun 2019 21:49:27 +0000 (14:49 -0700)]
Initial check-in of R2R format documentation (dotnet/coreclr#25267)
In this initial check-in I have converted Jan Kotas' R2R format doc
from an internal Word document to the md format and I removed some
references to other internal docs. I plan to follow up by updating
the description to the current format version (e.g. apparently the
description doesn't yet include the instance entrypoint table) and
by adding specific extensions for the composite R2R format.
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
7184c0f75f8088c5dfb75b3362e48ab9ee40998a
Matt Galbraith [Thu, 20 Jun 2019 21:44:45 +0000 (14:44 -0700)]
Merge pull request dotnet/coreclr#25285 from MattGal/update-arm32-dockerimages
Update ARM32 Helix Images to include Python 3
Commit migrated from https://github.com/dotnet/coreclr/commit/
61af786689d85e792069db72f0d0be4667a6362f
Mike McLaughlin [Thu, 20 Jun 2019 21:08:55 +0000 (14:08 -0700)]
Remove SOS and lldb plugin (dotnet/coreclr#25220)
* Remove SOS and lldb plugin
Issue: https://github.com/dotnet/coreclr/issues/24092
Commit migrated from https://github.com/dotnet/coreclr/commit/
6b9a3d3a87825b1a34bd8f114c9b181ce75b3b2e
Egor Chesakov [Thu, 20 Jun 2019 20:00:53 +0000 (13:00 -0700)]
Triage issues in dotnet/coreclr#25098 (dotnet/coreclr#25240)
Commit migrated from https://github.com/dotnet/coreclr/commit/
ec2a74e7649f1c0ecff32ce86724bf3ca80bfd46
Andy Ayers [Thu, 20 Jun 2019 19:04:54 +0000 (12:04 -0700)]
JIT: use register indirect for indirect jumps (dotnet/coreclr#25251)
If we are jumping to another method via an indirection cell, the cell address
may be too far from the jump to address via a RIP-relative indirection. So
instead, load the target address into RAX and jump register indirect.
Fixes dotnet/coreclr#22342.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f163abbd16d35032e4450a09c548cb804cf36a85
Matt Galbraith [Thu, 20 Jun 2019 19:00:16 +0000 (12:00 -0700)]
missed a spot
Commit migrated from https://github.com/dotnet/coreclr/commit/
25c2a8d21ad515f8bec124c981b9d3806a1d2aa8
Matt Galbraith [Thu, 20 Jun 2019 18:57:09 +0000 (11:57 -0700)]
Update ARM32 Helix Images to include Python 3
Commit migrated from https://github.com/dotnet/coreclr/commit/
88153a38251fc4c2e68035c3f7925f4830175d47
Jan Vorlicek [Thu, 20 Jun 2019 16:30:15 +0000 (18:30 +0200)]
Remove test 366085 (dotnet/coreclr#25277)
This test was checking for "Parameter name:" substring in the
ArgumentNullException message. But a recent change dotnet/coreclr#25185 modified
that string to just "Parameter".
We also have a coverage for this in corefx tests, so I am removing
this test.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b1ea5ede9393be013477d270b3496e868b8bae20
Stephen Toub [Thu, 20 Jun 2019 16:27:21 +0000 (12:27 -0400)]
Fix visibility on Exception.InnerExceptionPrefix (dotnet/coreclr#25278)
Commit migrated from https://github.com/dotnet/coreclr/commit/
8676608cefc6555961cb24d16bbe27b013a8a8a4
Bruce Forstall [Wed, 19 Jun 2019 23:39:16 +0000 (16:39 -0700)]
Merge pull request dotnet/coreclr#25265 from BruceForstall/FixCorefxTestingScript
Update run-corefx-tests.py for new 3.0.0 directory name
Commit migrated from https://github.com/dotnet/coreclr/commit/
56d57afaab150be6d1cf39869a917efe9ec5ff43
Carol Eidt [Wed, 19 Jun 2019 23:21:03 +0000 (16:21 -0700)]
Restrict copyprop if address-taken (dotnet/coreclr#25247)
* Restrict copyprop if address-taken
Fix dotnet/coreclr#25231
Commit migrated from https://github.com/dotnet/coreclr/commit/
6d0672acfba8dd2342dd528a5cd27c677b6981a2
Bruce Forstall [Wed, 19 Jun 2019 22:57:02 +0000 (15:57 -0700)]
Update run-corefx-tests.py for new 3.0.0 directory name
Commit migrated from https://github.com/dotnet/coreclr/commit/
7a811b3504296571cd567ca030b2dacf23207a3b
Santiago Fernandez Madero [Wed, 19 Jun 2019 21:33:29 +0000 (14:33 -0700)]
Address nullable feedback for S.T.Overlapped, S.Memory, S.R.InteropServices (dotnet/coreclr#25214)
* Address nullable feedback for System.Threading.Overlapped
* Address nullable feedback for System.Memory
* Address nullable for System.Runtime.InteropServices
* Update xml comments and make CultureInfo nullable to match String.ToLower/Upper feedback
* PR feedback: revert accepting null comparer in BinarySearch
* Disable test that needs to be updated in corefx
Commit migrated from https://github.com/dotnet/coreclr/commit/
23918ce912fc051b4a2443977e6973e34988c4f4
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