Stephen Toub [Tue, 18 Feb 2020 14:58:37 +0000 (09:58 -0500)]
Merge branch 'master' into feature/nullable_microsoft_win32_registry
Stephen Toub [Tue, 18 Feb 2020 14:25:32 +0000 (09:25 -0500)]
Change several `static readonly byte[]` fields to be `ReadOnlySpan<byte>` properties (#32464)
Stephen Toub [Tue, 18 Feb 2020 13:24:08 +0000 (08:24 -0500)]
Reduce allocation in HTTP/2 requests by ~30% (#32406)
* Avoid forcing ExpectContinue / TransferEncodingChunked headers into existence
* Reduce cookie-related allocations
- Make CookieParser/CookieTokenizer into structs. CookieParser is just created as a helper with some state to help a loop do parsing; it's not passed around in any way. And CookieTokenizer is just the implementation of CookieParser separated out for some reason. They can both be structs.
- Remove enumerator allocations related to cookies. Also reduces interface method invocations.
* Remove often-unnecessary allocation in Uri.IdnHost
This is happening for every request. But if the host is already all ASCII, we don't need to create a new string, and if it's already all lowercase, we don't need to create yet another new string. (This logic could stand to be cleaned up further; I just removed the allocations and some unnecessarily complex unsafe code along the way.)
* Combine ReadAtLeastAsync into EnsureIncomingBytesAsync
There's no need for them to be separate, and separating them leads to an extra async stack frame / state machine.
* Reduce calls to ReadFrameAsync that need to yield
Many frames either won't have a payload, or the act of waiting for the header will also end up waiting for the payload (in the same packet). By pulling out the wait in the hot path, we significantly reduce the number of times ReadFrameAsync will need to yield.
* Override Http2ReadStream.CopyToAsync
Reduces allocation / improves throughput when using responseStream.CopyToAsync.
* Shrink EnsureIncomingBytesAsync state machine by 8 bytes
Remove two lifted Int32s.
* Shrink size of Http2Connection.SendAsync state machine
The order of a comparison operation is, based on C# required order of operations, forcing a temporary to be spilled and lifted to the state machine.
* Add additional values to known headers
Avoids string allocations when these common response values are used.
* Remove dead Uri code
Stephen Toub [Tue, 18 Feb 2020 13:23:25 +0000 (08:23 -0500)]
Prefer StringBuilder.Append(char) over Append(string) (#32467)
* Prefer StringBuilder.Append(char) over Append(string)
* Address PR feedback
dotnet-maestro[bot] [Tue, 18 Feb 2020 11:24:41 +0000 (12:24 +0100)]
[master] Update dependencies from mono/linker dotnet/arcade (#32472)
* Update dependencies from https://github.com/mono/linker build
20200217.1
- ILLink.Tasks - 0.1.6-prerelease.20117.1
* Update dependencies from https://github.com/dotnet/arcade build
20200217.3
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.20117.3
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.20117.3
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.20117.3
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.20117.3
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.20117.3
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.20117.3
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.20117.3
- Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk - 5.0.0-beta.20117.3
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.20117.3
- Microsoft.DotNet.GenAPI - 5.0.0-beta.20117.3
- Microsoft.DotNet.GenFacades - 5.0.0-beta.20117.3
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.20117.3
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.20117.3
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.20117.3
monojenkins [Tue, 18 Feb 2020 09:53:13 +0000 (04:53 -0500)]
Remove #if __cplusplus from MagicTypeInfo. (#32461)
This wastes about 24 static const bytes which I think is ok.
6 bytes per struct plus 2 padding, and there are 3 of them, total, ever, passed by pointer.
I was looking into https://github.com/mono/mono/issues/18827
and wanting to rule out #if __cplusplus.
Co-authored-by: Jay Krell <jay.krell@cornell.edu>
Marek Safar [Tue, 18 Feb 2020 08:10:51 +0000 (09:10 +0100)]
Update ILLinkTasksVersion dependency (#32170)
* Revert "Revert "Update ILLinkTasksVersion dependency (#2334)" (#31807)"
This reverts commit
334391bdc9d4e9e20ea8b8a19ec5788da680b850.
* Update ILLink version
* Update ILLink task netcore execution version
* Another version update
Stephen Toub [Tue, 18 Feb 2020 06:36:16 +0000 (01:36 -0500)]
Use CancellationToken.ThrowIfCancellationRequested directly where applicable (#32468)
Joseph Musser [Tue, 18 Feb 2020 03:38:22 +0000 (22:38 -0500)]
UnobservedTaskExceptionEventArgs.Exception should not be nullable (#32457)
Andrew Au [Tue, 18 Feb 2020 02:33:13 +0000 (18:33 -0800)]
R2RDump fixes (#32460)
monojenkins [Mon, 17 Feb 2020 21:35:18 +0000 (16:35 -0500)]
[win32] Make non-recursive mutexes SRWLOCK instead of CRITICAL_SECTION. (#32258)
Co-authored-by: Jay Krell <jay.krell@cornell.edu>
Eric Erhardt [Mon, 17 Feb 2020 21:14:46 +0000 (15:14 -0600)]
Annotate System.IO.Pipes.AccessControl for nullable reference types (#32343)
* Annotate System.IO.Pipes.AccessControl for nullable reference types
Contributes to #2339
s0dyy [Mon, 17 Feb 2020 19:19:49 +0000 (20:19 +0100)]
Cross compilation, check first if an env variable is defined (#32392)
Alexander Köplinger [Mon, 17 Feb 2020 18:13:15 +0000 (19:13 +0100)]
Fix GeneratorCommand in Microsoft.XmlSerializer.Generator.Tests.csproj (#32446)
On non-Windows operating systems we need to use `&&` to chain the two commands instead of a single ampersand.
Dong-Heon Jung [Mon, 17 Feb 2020 17:12:19 +0000 (02:12 +0900)]
Fix IsArgPassedByRef in crossgen2 on ARM32 (#32425)
dotnet-maestro[bot] [Mon, 17 Feb 2020 16:38:46 +0000 (10:38 -0600)]
Update dependencies from https://github.com/dotnet/arcade build
20200216.1 (#32438)
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.20116.1
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.20116.1
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.20116.1
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.20116.1
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.20116.1
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.20116.1
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.20116.1
- Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk - 5.0.0-beta.20116.1
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.20116.1
- Microsoft.DotNet.GenAPI - 5.0.0-beta.20116.1
- Microsoft.DotNet.GenFacades - 5.0.0-beta.20116.1
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.20116.1
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.20116.1
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.20116.1
Federico Zuccollo [Mon, 17 Feb 2020 16:06:19 +0000 (17:06 +0100)]
Update environ.cpp (#832)
The search for a prefix has been inlined to squeeze some extra performance by directly comparing bytes.
The prefix search functionality has been put in a separate static function to have all the state given as input and use multiple returns as control flow.
Fixes https://github.com/dotnet/runtime/issues/866
monojenkins [Mon, 17 Feb 2020 16:03:17 +0000 (11:03 -0500)]
[interp] Consolidate non-recursive call sites. (#32220)
Consolidate native_stack_addr as a result (resolving a FIXME).
Builds on:
https://github.com/mono/mono/pull/18857
https://github.com/mono/mono/pull/18858
https://github.com/mono/mono/pull/18869
Co-authored-by: Jay Krell <jay.krell@cornell.edu>
Vitek Karas [Mon, 17 Feb 2020 15:36:58 +0000 (07:36 -0800)]
Add PreserveDependency to StackFrameHelper (#32023)
While linker can recognize the hardcoded type name in the InitializeSoruceInfo it sometimes fails to resolve the type as the System.Diagnostics.StackTrace is not directly referenced by most assemblies. This is partially an internal linker limitation and the attribute is a workaround.
That said linker would not be able to recognize the GetMethod or CreateInstance calls which follow and in member-level trimming mode would not correctly keep the GetSourceLineInfo nor the .ctor of the type.
Vladimir Sadov [Mon, 17 Feb 2020 15:26:21 +0000 (07:26 -0800)]
Introducing Pinned Object Heap (#32283)
* Introducing Pinned Object Heap
* PR feedback
* reverted a test-only change
monojenkins [Mon, 17 Feb 2020 15:06:43 +0000 (10:06 -0500)]
Fix THREADS_SUSPEND_DEBUG to compile (id vs. mono_thread_info_get_tid). (#32393)
Co-authored-by: Jay Krell <jay.krell@cornell.edu>
monojenkins [Mon, 17 Feb 2020 14:41:54 +0000 (09:41 -0500)]
[llvm] Disable X86 call frame size optimization. (#11118)
Fixes https://github.com/mono/mono/issues/17285.
For calls that require parameters passed in stack memory,
X86CallFrameOptimization can sometimes replace a sequence of movs to
prologue-reserved stack memory with a sequence of pushes and a compensating sub
rsp after the call. LLVM accumulates an OpAdjustCfaOffset MCCFIInstruction for
each push and and records the ephemeral parameter space consumed by the call
using an OpGnuArgsSize MCCFIInstruction (i.e. DW_CFA_GNU_args_size).
MonoException doesn't support encoding OpGnuArgsSize MCCFIInstructions, and
attempting to encode this instruction can cause unpredictable behavior, due to
our use of llvm_unreachable with assertions disabled [1]. Moreover, even if
MonoException happens to emit valid call frame instructions despite the UB
induced by llvm_unreachable, Mono's exception handler will restore the stack
pointer to the value it contained at the time right before the protected call
instruction was made, without compensating for any ephemeral parameter space.
The stack pointer could be fixed before the jump to the EH handler by
supporting DW_CFA_GNU_args_size or by executing call frame instructions for the
EH handler's frame all the way to the end of the protected instruction address
range--which will include a sub rsp with an appropriate immediate--to determine
an appropriate delta. But it's easier to just disable this optimization. We
already disable it for AOT [2]. It's sometimes disabled by LLVM on Darwin [3].
Also, this commit adds a test (which is a nearly verbatim copy of laszk's
reproduction sample in mono/mono#17285) for EH failures caused by the interaction of our
EH code and X86CallFrameOptimization.
See also [4], [5], and [6].
[1] https://github.com/dotnet/llvm-project/blob/
adeaa08e7bbc9aba5d67cb16c2b348be12deb000/llvm/lib/CodeGen/AsmPrinter/MonoException.cpp#L209-L210
[2] https://github.com/mono/mono/blob/
1317cf06da06682419f8f4b0c9810ad5d5d3ac3a/mono/mini/aot-compiler.c#L9872-L9875
[3] https://github.com/dotnet/llvm-project/blob/
adeaa08e7bbc9aba5d67cb16c2b348be12deb000/llvm/lib/Target/X86/X86CallFrameOptimization.cpp#L146-L152
[4] https://bugs.llvm.org/show_bug.cgi?id=24792
[5] https://reviews.llvm.org/D13132
[6] http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-
20151005/304074.html
Co-authored-by: imhameed <imhameed@microsoft.com>
monojenkins [Mon, 17 Feb 2020 14:15:23 +0000 (09:15 -0500)]
[jit] Run static cctors for inlined methods, the cctor might not have ran in AOT mode. (#31752)
Co-authored-by: Zoltan Varga <vargaz@gmail.com>
Alexander Köplinger [Mon, 17 Feb 2020 13:39:44 +0000 (14:39 +0100)]
Add missing MONO_LLVM_INTERNAL to mono_marshal_get_native_wrapper (#32431)
It was missed due to a glitch in the GitHub API that caused the mirror to not get the latest version of the diff.
monojenkins [Mon, 17 Feb 2020 13:22:12 +0000 (08:22 -0500)]
[cross] check against correct alignment value (#31801)
It's essentially dead code in any of our configurations.
`MONO_ALIGN_gint8` is define here:
https://github.com/mono/mono/blob/
ab2321c1dc1bf0293dadd7e52436b2bd87f2b7c3/mono/metadata/abi-details.h#L26-L35
And the correct value is set here:
https://github.com/mono/mono/blob/
ab2321c1dc1bf0293dadd7e52436b2bd87f2b7c3/mono/metadata/abi.c#L71-L75
Co-authored-by: Bernhard Urban-Forster <bernhard.urban@xamarin.com>
monojenkins [Mon, 17 Feb 2020 13:21:36 +0000 (08:21 -0500)]
[abi-details] add explaining comment for macro magic (#31802)
I think the fallback was added because "let's get it back to work quickly", back in the dark times without CI: https://github.com/mono/mono/commit/
b655fb35c61fd3422003de01eed8e634d46b4186
Co-authored-by: Bernhard Urban-Forster <bernhard.urban@xamarin.com>
monojenkins [Mon, 17 Feb 2020 13:01:37 +0000 (08:01 -0500)]
Remove unnecessary ifdef before undef. (#32417)
#undef never needs an ifdef guard, it works unconditionally without warning.
Co-authored-by: Jay Krell <jay.krell@cornell.edu>
Alexander Köplinger [Mon, 17 Feb 2020 12:51:08 +0000 (13:51 +0100)]
Add back System.Json to mono-profiler-coverage.suppression (#32430)
It was removed in https://github.com/dotnet/runtime/pull/32329 but this file contains assemblies that apply to mono/mono.
monojenkins [Mon, 17 Feb 2020 12:50:44 +0000 (07:50 -0500)]
Remove duplicated Windows header content. (#32252)
Co-authored-by: Jay Krell <jay.krell@cornell.edu>
Anton Firszov [Mon, 17 Feb 2020 12:33:24 +0000 (13:33 +0100)]
Reduce execution time of Socket handle inheritance tests (#31813)
Reduce the execution time for CtorAndAccept_SocketNotKeptAliveViaInheritance and DuplicateSocket_IsNotInheritable on Windows, using a new utility method, SocketTestExtensions.TryConnect().
monojenkins [Mon, 17 Feb 2020 11:50:21 +0000 (06:50 -0500)]
Fix/quash some warnings. (#32395)
mini\mini.c(1253,59): warning C4390: ';': empty controlled statement found; is this the intent?
mini\mini.c(3100,43): warning C4390: ';': empty controlled statement found; is this the intent?
mini\mini.c(3273,49): warning C4390: ';': empty controlled statement found; is this the intent?
mini\mini.c(3281,49): warning C4390: ';': empty controlled statement found; is this the intent?
mini\mini.c(3480,51): warning C4390: ';': empty controlled statement found; is this the intent?
mini\mini.c(3490,49): warning C4390: ';': empty controlled statement found; is this the intent?
mini\mini.c(3626,48): warning C4390: ';': empty controlled statement found; is this the intent?
mini\mini.c(3664,48): warning C4390: ';': empty controlled statement found; is this the intent?
mini\mini.c(3722,48): warning C4390: ';': empty controlled statement found; is this the intent?
mini\mini.c(3944,47): warning C4390: ';': empty controlled statement found; is this the intent?
mini\mini-runtime.c(549,64): warning C4390: ';': empty controlled statement found; is this the intent?
mini\method-to-ir.c(11838,2): warning C4065: switch statement contains 'default' but no 'case ' labels
metadata\sre.c(2286,11): warning C4309: '=': truncation of constant value
metadata\sre.c(2179,11): warning C4309: '=': truncation of constant value
metadata\sre.c(2204,11): warning C4309: '=': truncation of constant value
metadata\sre.c(2232,11): warning C4309: '=': truncation of constant value
mini\method-to-ir.c(11838,2): warning C4065: switch statement contains 'default' but no 'case
mini\type-checking.c(167,3): warning C4334: '<<': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
Co-authored-by: Jay Krell <jay.krell@cornell.edu>
monojenkins [Mon, 17 Feb 2020 11:47:57 +0000 (06:47 -0500)]
Remove unnecesssary include. (#32394)
Less to build if you edit the file.
Co-authored-by: Jay Krell <jay.krell@cornell.edu>
monojenkins [Mon, 17 Feb 2020 11:47:00 +0000 (06:47 -0500)]
[interp] Use method_entry at interp entry instead of duplicating the code. (#32382)
`tracing` was a mix of:
- sometimes ifdef out, sometimes not; make it always ifdefed
- sometimes `int`, sometimes `gint`, sometimes `gboolean`; make it always `int`
Much of this PR will end up deleted when the multiple nonrecursive calls are
consolidated, but two will remain -- entry and call: label.
https://github.com/mono/mono/pull/18825 is where this is going but it was deemed
too large and requested to be split up. This is part of it.
Co-authored-by: Jay Krell <jay.krell@cornell.edu>
monojenkins [Mon, 17 Feb 2020 11:43:58 +0000 (06:43 -0500)]
[interp] Step toward consolidating nonrecursive call sites (retval). (#32308)
https://github.com/mono/mono/pull/18825 was deemed too large and requested to be split up.
This is one of the required pieces.
To consolidate the multiple nonrecursive call sites requires they share the same retval variable. Go ahead and share them all.
Co-authored-by: Jay Krell <jay.krell@cornell.edu>
monojenkins [Mon, 17 Feb 2020 11:42:46 +0000 (06:42 -0500)]
[interp] Fix incorrect comment -- stackval has no size. (#32410)
Co-authored-by: Jay Krell <jay.krell@cornell.edu>
Egor Bogatov [Mon, 17 Feb 2020 09:03:13 +0000 (12:03 +0300)]
[mono] Fix msvc mono build and add `CopyMonoRuntimeFilesFromArtifactsToDestination` target (#32130)
* Fix msvc mono build
* Add CopyMonoRuntimeFilesFromArtifactsToDestination target
* Address feedback
* Change condtion to Exists(..\mono.proj)
* Minor improvements
monojenkins [Mon, 17 Feb 2020 08:13:02 +0000 (03:13 -0500)]
[interp] Step toward consolidation of non-recursive call sites. (#32306)
https://github.com/mono/mono/pull/18825 was too large.
This starts by replacing imethod with cmethod which is a necessary
part of the consolidation of multiple non-recursive call sites to just one.
Co-authored-by: Jay Krell <jay.krell@cornell.edu>
Viktor Hofer [Mon, 17 Feb 2020 07:41:46 +0000 (08:41 +0100)]
Update Build Script Help Content (#2046)
* Update Build Script Help Content
Add the new runtime/library configuration arguments.
* PR feedback
Viktor Hofer [Mon, 17 Feb 2020 07:40:50 +0000 (08:40 +0100)]
Publish (bin)logs as pipeline artifacts (#2345)
* Publish (bin)logs as pipeline artifacts
Currently we publish logs and binlogs as build artifacts. Pipeline
artifacts are the replacement for build artifacts and enable multi-stage
uploads. This doesn't change upload our build artifacts via the
PublishBuildArtifacts task.
* Parameterize artiact name
Stephen Toub [Mon, 17 Feb 2020 06:54:32 +0000 (01:54 -0500)]
Simplify and remove char[] allocation from AsnFormatter.EncodeHexString
Stephen Toub [Mon, 17 Feb 2020 05:01:56 +0000 (00:01 -0500)]
Use double.Parse on span instead of string in Unix ping (#32423)
Avoids a string allocation.
Dong-Heon Jung [Mon, 17 Feb 2020 05:01:39 +0000 (14:01 +0900)]
Fix an assert error in crossgen2 on ARM (#32421)
- Initialize wrapperDelegateInvoke of CORINFO_CALL_INFO in ARM.
Vladimir Sadov [Sun, 16 Feb 2020 23:42:01 +0000 (15:42 -0800)]
GC polling in unboxing JIT helpers (#32353)
* GC polling in unboxing JIT helpers
* further tuning the type check for enums
pi1024e [Sun, 16 Feb 2020 19:57:51 +0000 (14:57 -0500)]
Simplify to use NOT operator instead of comparing to false. (#32398)
Ilia [Sun, 16 Feb 2020 19:41:16 +0000 (22:41 +0300)]
Define FEATURE_PROFAPI_ATTACH_DETACH always (#32293)
Allow to use profiler attach/detach feature because it seems to work on
other platforms (macOS in particular).
Also, remove unused DATA_PROFAPI_ATTACH_DETACH definition.
Fixes #32093
Viktor Hofer [Sun, 16 Feb 2020 19:22:18 +0000 (20:22 +0100)]
Disable EventLog test on all targets (#32403)
Disabling to get CI green: https://github.com/dotnet/runtime/issues/32241
dotnet-maestro[bot] [Sun, 16 Feb 2020 15:06:04 +0000 (15:06 +0000)]
[master] Update dependencies from dotnet/arcade (#32292)
* Update dependencies from https://github.com/dotnet/arcade build
20200213.6
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.20113.6
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.20113.6
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.20113.6
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.20113.6
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.20113.6
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.20113.6
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.20113.6
- Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk - 5.0.0-beta.20113.6
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.20113.6
- Microsoft.DotNet.GenAPI - 5.0.0-beta.20113.6
- Microsoft.DotNet.GenFacades - 5.0.0-beta.20113.6
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.20113.6
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.20113.6
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.20113.6
* Update dependencies from https://github.com/dotnet/arcade build
20200214.5
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.20114.5
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.20114.5
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.20114.5
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.20114.5
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.20114.5
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.20114.5
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.20114.5
- Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk - 5.0.0-beta.20114.5
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.20114.5
- Microsoft.DotNet.GenAPI - 5.0.0-beta.20114.5
- Microsoft.DotNet.GenFacades - 5.0.0-beta.20114.5
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.20114.5
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.20114.5
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.20114.5
* Update dependencies from https://github.com/dotnet/arcade build
20200215.1
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.20115.1
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.20115.1
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.20115.1
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.20115.1
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.20115.1
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.20115.1
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.20115.1
- Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk - 5.0.0-beta.20115.1
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.20115.1
- Microsoft.DotNet.GenAPI - 5.0.0-beta.20115.1
- Microsoft.DotNet.GenFacades - 5.0.0-beta.20115.1
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.20115.1
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.20115.1
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.20115.1
Marius Ungureanu [Sun, 16 Feb 2020 11:36:02 +0000 (13:36 +0200)]
Remove CreateDefensiveCopy and inline it in ImmutableArray.Create (#32386)
Tomáš Rylek [Sun, 16 Feb 2020 11:12:49 +0000 (12:12 +0100)]
Temporarily disable Windows ARM test executions (#32390)
The new Windows.10.Arm64v8.Open queue exhibits flaky behavior
that is currently failing in most of our PR runs. Disabling test
execution on ARM before this is fixed.
Thanks
Tomas
Anatoly Belyaev [Sun, 16 Feb 2020 04:46:18 +0000 (07:46 +0300)]
remove duplicate definition of Interop.Advapi32.CryptReleaseContext from src/libraries/Common/src/Interop/Windows/Crypt32/ (#32289)
Marius Gundersen [Sun, 16 Feb 2020 04:43:40 +0000 (05:43 +0100)]
Fix build on systems with space in path (#32169)
This fixes building the project on systems where there is a space in the path of the user. For example on Windows where the user might (hypothetically) be called 'Marius Gundersen' and the path to their user folder is `C:\Users\Marius Gundersen\` the build would fail
This fixes #32165
Michał Bryłka [Sun, 16 Feb 2020 04:27:02 +0000 (05:27 +0100)]
Update documentation for Vector256.Create methods (#382)
* Update documentation for Vector256.Create methods
* Add docs for _setr_ and _set1_ methods. Apply pool request suggestions
* Add XML docs to Vector.Create methods for non CLS compliant types
Marius Ungureanu [Sun, 16 Feb 2020 04:26:28 +0000 (06:26 +0200)]
Add a comment explaining why not to switch to Array.Empty (#32365)
pi1024e [Sun, 16 Feb 2020 04:09:51 +0000 (23:09 -0500)]
!entry cannot be null ever, so why even bother have a case for it? (#32384)
Mike McLaughlin [Sun, 16 Feb 2020 01:20:07 +0000 (17:20 -0800)]
Remove DAC dependence on compile time DAC_TABLE_RVA definition on Linux (#32331)
Remove DAC dependence on compile time DAC_TABLE_RVA definition on Linux
Issue #https://github.com/dotnet/runtime/issues/1976
Added a fairly generic elf reader class.
Change createdump to use the elfreader for all the ELF enumeration
and find the g_dacTable to ensure all the symbol and string tables
are in the coredump.
Aaron Robinson [Sat, 15 Feb 2020 23:26:47 +0000 (15:26 -0800)]
Remove unused COM shutdown logic. (#32381)
Steve Pfister [Sat, 15 Feb 2020 22:48:57 +0000 (17:48 -0500)]
Add additional info to the mono building and testing docs (#32339)
Anton Lapounov [Sat, 15 Feb 2020 21:13:58 +0000 (13:13 -0800)]
Avoid throwing NRE when system module is not passed to crossgen2 (#32323)
Crossgen2 would throw a NullReferenceException if the system module was not provided. That was caused by dereferencing CompilerTypeSystemContext.CanonTypesModule before it was set. See dotnet/corert#7972 for the context.
The fix consists of removing the CanonTypesModule property, which was needed for .NET Native only, and inverting the 'if' conditions to simplify the code a little.
Ahson Khan [Sat, 15 Feb 2020 18:27:56 +0000 (10:27 -0800)]
Improve Span.SequenceEqual for small buffers. (#32364)
Miha Zupan [Sat, 15 Feb 2020 17:54:51 +0000 (18:54 +0100)]
Avoid using stackalloc in a loop (#32375)
Manuel Pfemeter [Sat, 15 Feb 2020 17:50:16 +0000 (18:50 +0100)]
Incorporate feedback
Andy Ayers [Sat, 15 Feb 2020 16:46:49 +0000 (08:46 -0800)]
JIT: note when simd store coalescing produces a full local field. (#32324)
And if so, remove `GTF_VAR_USEASG`.
Fixes #31615.
Anirudh Agnihotry [Sat, 15 Feb 2020 12:34:02 +0000 (04:34 -0800)]
removing system.json project (#32329)
Stephen Toub [Sat, 15 Feb 2020 11:11:14 +0000 (03:11 -0800)]
Add Socket.OSSupportsUnixDomainSocket (#32160)
Stephen Toub [Sat, 15 Feb 2020 11:10:26 +0000 (03:10 -0800)]
Remove char[] allocation from XmlConverter.StripWhitespace (#32297)
Stephen Toub [Sat, 15 Feb 2020 11:09:51 +0000 (03:09 -0800)]
Use span-based IndexOfAny in ModuleBuilder (#32299)
Removes an unnecessary char[] allocation per iteration.
Also simplified one IndexOfAny usage in Environment.cs.
Jan Kotas [Sat, 15 Feb 2020 11:08:41 +0000 (03:08 -0800)]
Use SYSTEM_PRIVATE_CORELIB ifdef for consistency (#32366)
Stephen Toub [Sat, 15 Feb 2020 09:39:57 +0000 (01:39 -0800)]
Remove startup byte[] allocation in EventSource (#32276)
Only occurs once and is then cached, but it's hit on startup, and may as well remove it.
Ahson Khan [Sat, 15 Feb 2020 09:13:11 +0000 (01:13 -0800)]
Add issues to the TODOs in S.T.Json source for better tracking and minor clean up (#32360)
* Remove redundant check in condition (&& true) since it doesn't change
the behavior.
* Add issues to the TODOs for better tracking and fix some that were easy.
* Update ActiveIssue and enable tests that are now fixed.
Levi Broderick [Sat, 15 Feb 2020 07:23:14 +0000 (23:23 -0800)]
Add public ReferenceEqualityComparer API (#31753)
monojenkins [Sat, 15 Feb 2020 06:52:45 +0000 (01:52 -0500)]
[llvmonly] Allow more direct calls. (#32214)
Co-authored-by: Zoltan Varga <vargaz@gmail.com>
Anton Lapounov [Sat, 15 Feb 2020 06:41:29 +0000 (22:41 -0800)]
Crossgen2: set 'X' bit in unwind info for ARM (#32346)
Bill Wert [Sat, 15 Feb 2020 06:17:38 +0000 (22:17 -0800)]
Cleanup old links (#32319)
* Remove old debug instructions about using dumpling
* remove dumpling reference
* stop invoking dumpling
* remove unused perf scripts
* more dumpling references
* Remove unused perf scripts and change instructions to point to perf repo
* add updated SOS link
monojenkins [Sat, 15 Feb 2020 05:57:18 +0000 (00:57 -0500)]
[llvm] Remove unused llvm.mono.load/store intrinsics. (#32280)
Co-authored-by: Zoltan Varga <vargaz@gmail.com>
Simon Nattress [Sat, 15 Feb 2020 02:42:37 +0000 (18:42 -0800)]
Disable coreroot_determinism test (#32334)
It's causing CI issues.
See https://github.com/dotnet/runtime/issues/32333
Sergey Andreenko [Sat, 15 Feb 2020 02:25:12 +0000 (18:25 -0800)]
Keep correct `fieldSeq` for 0-offset fields. (#32085)
* a few renamings in fgMorphCopyBlock.
Clean up the existing code.
* Add zero field offsets where it was missed.
And don't add it as `ADD(,0)` in another.
* Add an optimization to lower to delete `LEA(addr, 0)`.
* Fix for x86 tests.
* Add a function header for `LowerNode`.
Andy Ayers [Sat, 15 Feb 2020 02:18:12 +0000 (18:18 -0800)]
Support 32 byte alignment of code on xarch (#2249)
* Support 32 byte alignment of code on xarch
Update jit and runtime to allow jit to ask for code to be 32 byte aligned.
Request 32 byte alignment for Tier1 methods on x86/x64.
Add minimal crossgen support; one can imagine requesting or choosing 32 byte
alignment for crossgenned code, but that is left as future work.
This should provide some measure of performance stability, in particular for
microbenchmarks or other code where performance depends crucially on a few
branches.
It may or may not improve performance. If/when there are regressions we can
contemplate updating the jit to add intra-method padding to address alignment
sensitive code layout (e.g. dotnet/coreclr#11607).
This will require a jit GUID update in addition to the changes here.
* restrict to larger methods with loops; don't update zapper
* new jit GUID
* fix target ifdef name
monojenkins [Sat, 15 Feb 2020 01:34:11 +0000 (20:34 -0500)]
[llvm] Fix LLVM JIT when used with multiple AppDomains. (#32219)
We currently reuse LLVM's command line parsing system to configure and
enable passes. When using the default code generator pass configuration,
the `ImplicitNullChecks` and `X86CallFrameOptimization` passes can only
be enabled or disabled via the command line argument parser: the
`cl::opt`s controlling these (and many other) passes are private to
their translation units, and `TargetPassConfig`/`X86PassConfig` read
from these `cl::opt`s with no other means to override these values.
Unfortunately, some LLVM command line options have restrictions on the
number of times they may be set, and running the LLVM command line
argument parser more than once can fail, because the 'number of
occurrences' counter is stored in each global `cl::opt`. This causes
several tests to fail--one such test is unhandled-exception-7.cs.
This change:
- removes the lazy LLVM JIT initialization logic and instead
runs this initialization once during `mini_init`,
- moves some stray JIT-only code from mini-llvm.c to llvm-jit.cpp,
- wraps the declarations in domain-internals.h with a
`G_BEGIN_DECLS`/`G_END_DECLS` pair, so that they avoid name
mangling when included in C++ source, and
- removes `exception_cb` and `emitted_cb`: neither were actually used
by live code.
monojenkins [Sat, 15 Feb 2020 01:33:17 +0000 (20:33 -0500)]
[llvmonly] Avoid adding the aot init wrappers to the method table, its not needed. (#32262)
Co-authored-by: Zoltan Varga <vargaz@gmail.com>
Miha Zupan [Sat, 15 Feb 2020 00:47:34 +0000 (01:47 +0100)]
Fix and optimize EscapeUnescapeIri (#32025)
* Remove byte[] allocation per encoded character
* Remove dead code from EscapeUnescapeIri
* Use int instead of IntPtr for stack buffer
* Use sizeof(int) instead of 4 as const
* Fix EscapeUnescapeIri for escaped surrogate pairs
Ahson Khan [Sat, 15 Feb 2020 00:33:55 +0000 (16:33 -0800)]
Fix typo in S.T.J namespace in the writable dom spec (#32345)
Anirudh Agnihotry [Sat, 15 Feb 2020 00:13:58 +0000 (16:13 -0800)]
Show all files in file explorer and some extent of refactoring (#32312)
* Show all files in file explorer and some extent of refactoring
* adding comment
* improving the comment
Co-Authored-By: Santiago Fernandez Madero <safern@microsoft.com>
* Update src/libraries/Directory.Build.targets
Co-Authored-By: Santiago Fernandez Madero <safern@microsoft.com>
Co-authored-by: Santiago Fernandez Madero <safern@microsoft.com>
Swaroop Sridhar [Fri, 14 Feb 2020 23:38:20 +0000 (15:38 -0800)]
SingleFile bundles: Ensure extraction mappings are closed on Windows. (#2272)
When running a single-file app, the AppHost mmap()s itself in order
to read its contents and extract the embedded contents.
The Apphost must always map its contents in order to read the headers,
but doesn't always extract the contents, because previously extracted
files are re-used when available.
In the case where apphost doesn't extract, the file mapping wasn't
immediately closed on Windows. This prevents the app from being renamed
while running -- an idiom used while updating the app in-place.
Santiago Fernandez Madero [Fri, 14 Feb 2020 23:32:14 +0000 (15:32 -0800)]
Update Pull Request docs for more detailed info (#32336)
Tomas Weinfurt [Fri, 14 Feb 2020 23:09:47 +0000 (15:09 -0800)]
fix buffer handling in Tls handshake (#32267)
* fix buffer handling in Tls handshake
* feedback from review
Saurabh Singh [Fri, 14 Feb 2020 22:52:54 +0000 (14:52 -0800)]
Merge pull request #32207 from saurabh500/soln2fixAV
AV Fix for OleDb x86
Ahson Khan [Fri, 14 Feb 2020 22:44:24 +0000 (14:44 -0800)]
Do not deserialize using internal or private default ctors for all supported TFMs. (#32213)
* Do not deserialize using internal or private default ctors for all
supported TFMs.
* Add a test with generic class with protected internal ctor and clean up.
* Make test classes private and add Debug.Fail instead of throwing.
monojenkins [Fri, 14 Feb 2020 22:40:09 +0000 (17:40 -0500)]
[interp] Fix filter clauses (#32192)
When executing a filter we create a new interp frame, that is a duplicate of the original frame that contains the filter. Once the execution of the filter is finished, we were copying the stack contents back to the base frame. The problem with this is that when the filter is run, the stack is not completely unwinded, meaning that later we can still run a finally block in a frame called by the base frame. This finally block can access the stack arguments, which would reside on the stack of base frame. This means that we must not override the stack of the base frame, only the locals.
Fixes some tests from System.Linq.Expressions suite.
Co-authored-by: Vlad Brezae <brezaevlad@gmail.com>
Drew Scoggins [Fri, 14 Feb 2020 21:57:02 +0000 (13:57 -0800)]
Merge pull request #32314 from DrewScoggins/AddPRPerf
Add PR trigger for runtime performance
buyaa-n [Fri, 14 Feb 2020 21:52:33 +0000 (13:52 -0800)]
Annotate System.Security.Cryptography.Csp for nullable (#32140)
* Annotate System.Security.Cryptography for nullable
Levi Broderick [Fri, 14 Feb 2020 21:35:34 +0000 (13:35 -0800)]
Change to https:// across System.Text.Encodings.Web (#32321)
Egor Chesakov [Fri, 14 Feb 2020 21:22:34 +0000 (13:22 -0800)]
[Arm64] Add ASIMD pairwise reduce instructions (#32277)
* fmaxp
* fmaxnm
* fmaxnmp
* fmaxnmv
* fmaxv
* fminp
* fminnm
* fminnmp
* fminnmv
* fminv
* smaxp
* sminp
* umaxp
* uminp
Yaroslav Yamshchikov [Fri, 14 Feb 2020 21:11:01 +0000 (00:11 +0300)]
fix infinite recursion in crossgen2 on ARM (#32227)
Vitek Karas [Fri, 14 Feb 2020 20:37:05 +0000 (12:37 -0800)]
Merge pull request #32221 from vitek-karas/FixProbeOrderDoc
Rewrite the assembly conflict resolution doc to describe current behavior
vitek-karas [Fri, 14 Feb 2020 20:30:05 +0000 (12:30 -0800)]
Fix step numbers
Vitek Karas [Fri, 14 Feb 2020 20:29:18 +0000 (12:29 -0800)]
Apply suggestions from code review
Co-Authored-By: Elinor Fung <47805090+elinor-fung@users.noreply.github.com>
Stephen Toub [Fri, 14 Feb 2020 20:23:51 +0000 (12:23 -0800)]
Annotate Microsoft.VisualBasic.Core ref assembly for nullable reference types (#32200)
* Annotate Microsoft.VisualBasic.Core ref assembly for nullable reference types
* Apply suggestions from code review
Co-Authored-By: Charles Stoner <chucks@microsoft.com>
Co-authored-by: Charles Stoner <chucks@microsoft.com>
Egor Bogatov [Fri, 14 Feb 2020 19:16:53 +0000 (22:16 +0300)]
JIT: Optimize "constant_string".Length (#1378)
* Add GetStringLength() to jit interface
* Use `gen.bat` to update crossgen2
* Implement the actual optimization
* Code formatting
* return -1 for crossgen2 (TODO: implement)
* Disable for R2R
* remove `pString != nullptr` check (it's ok for empty strings)
* does order matter? (in ThunkInput.txt)
* Rename to GetStringLiteral
* Fix build errors
* Address feedback
* handle null return value
* fix build
* Address feedback
* add comments in corinfo.h
* Address feedback
* Update ThunkGenerator.csproj
* remove HackishString thing
* Update importer.cpp
* Map wchar_t to C# char in ThunkInput.txt
Drew Scoggins [Fri, 14 Feb 2020 19:16:36 +0000 (11:16 -0800)]
Used the wrong include/exclude block
Anton Lapounov [Fri, 14 Feb 2020 19:13:56 +0000 (11:13 -0800)]
Fix OOM in R2RDump (#32274)
R2RDump allocated a new copy of the System.Private.CoreLib assembly for each method of every generic type defined in the same image. As a result, it died due to OOM when dumping big images, e.g., System.Private.CoreLib itself. Also, in case of a non-composite R2R image, a wrong metadata reader was used for methods of generic types defined in the same image. Both issues were introduced in #32027.