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)
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.
monojenkins [Fri, 14 Feb 2020 18:59:30 +0000 (13:59 -0500)]
[llvmonly] Emit stubs for methods which failed compilation. (#32162)
Emit a stub for methods which failed llvm compilation. Currently the stub will
throw a MissingMethodException, later it can fall back to the interpreter etc.
This is required for cross-assembly direct calls, since the caller doesn't
know that the callee has failed llvm compilation leading to missing
symbols during linking.
Co-authored-by: Zoltan Varga <vargaz@gmail.com>
Drew Scoggins [Fri, 14 Feb 2020 18:55:23 +0000 (10:55 -0800)]
Add PR trigger for runtime performance
Tomáš Rylek [Fri, 14 Feb 2020 18:45:43 +0000 (19:45 +0100)]
Fix CG2 framework compilation on Linux / OSX
Cory Nelson [Fri, 14 Feb 2020 18:34:02 +0000 (10:34 -0800)]
Get tests running for HTTP/3 (#31898)
Update generic tests to use a Version rather than boolean IsHttp11/IsHttp20, and update some HTTP/2 to work for HTTP/3.
Enable tests for HTTP/3, behind a conditional feature test.
Fix QPackDecoder lzcnt assuming an 8-bit test.
Rename test QPACK classes from QPackEncoder/QPackDecoder -> QPackTestEncoder/QPackTestDecoder to avoid naming confusion with product code classes.
Fix QPackTestDecoder bit flag checks.
Fix a double call to QuicConnection.CloseAsync(). Update to shutdown QuicConnection in a background task.
Fix test cert usage.
Ryan Lucia [Fri, 14 Feb 2020 18:26:16 +0000 (13:26 -0500)]
[loader] Move AssemblyDependencyResolver to shared (#32253)
Stephen Toub [Fri, 14 Feb 2020 18:21:50 +0000 (10:21 -0800)]
Remove some char[] allocations from Split usage (#32301)
Stephen Toub [Fri, 14 Feb 2020 18:20:46 +0000 (10:20 -0800)]
Remove a char[] allocation from HttpUtility (#32298)
Anirudh Agnihotry [Fri, 14 Feb 2020 18:16:55 +0000 (10:16 -0800)]
fixing the order of targetFrameworks to show appropriate files in the VS (#32206)
* fixing the vs
* Update System.Runtime.Serialization.Formatters.Tests.csproj
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Santiago Fernandez Madero [Fri, 14 Feb 2020 17:52:31 +0000 (09:52 -0800)]
Enable cryptography tests hitting libssl issue (#32255)
Eirik Tsarpalis [Fri, 14 Feb 2020 17:49:41 +0000 (17:49 +0000)]
Merge pull request #32174 from eiriktsarpalis/annotate-system-security-cryptography-openssl
Nullable annotate System.Security.Cryptography.OpenSSL
Eirik Tsarpalis [Fri, 14 Feb 2020 17:45:14 +0000 (17:45 +0000)]
Nullable annotate System.Security.Cryptography.Cng (#32039)
* nullable annotate System.Security.Cryptography.Cng
* add nullable directives to common source files
* update ref signatures
* remove erroneous assertion
* address feedback
* address feedback
* address feedback
Ben Adams [Fri, 14 Feb 2020 17:41:30 +0000 (17:41 +0000)]
Xml use strongly typed struct enumerators (#32296)
Stephen Toub [Fri, 14 Feb 2020 17:12:31 +0000 (09:12 -0800)]
Add Interlocked unsigned and bitwise operations (#32216)
* Add Interlocked unsigned and bitwise operations
* Address PR feedback
* Delete dead code for internal CompareExchange(..., ref bool)
* Remove Xor
Anirudh Agnihotry [Fri, 14 Feb 2020 17:05:50 +0000 (09:05 -0800)]
fix solution build (#32259)
Jo Shields [Fri, 14 Feb 2020 16:54:45 +0000 (11:54 -0500)]
Forcibly disable use of libstdc++ C++11 ABI on Mono LLVM (#32234)
* Forcibly disable use of libstdc++ C++11 ABI on Mono LLVM
This feature is documented at https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html
Basically, the C++ ABI of the LLVM libraries needs to match the ABI of Mono.
The CentOS7 images we build with on CI use the old (GCC 4 style) ABI by
default, which ends up embedded in our LLVM nupkgs. This results in linker
errors when building runtime.git on distributions which use the C++11 ABI
instead, like Ubuntu 16.04+:
```
./.libs/libmini.a(llvm-jit.o): In function `mono_llvm_create_ee':
/home/directhex/Projects/runtime/src/mono/mono/mini/llvm-jit.cpp:447: undefined reference to `MonoEHFrameSymbol[abi:cxx11]'
./.libs/libmini.a(llvm-jit.o): In function `llvm::RTDyldMemoryManager::getSymbolAddress(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/home/directhex/Projects/runtime/artifacts/obj/mono/Linux.x64.Debug/llvm/include/llvm/ExecutionEngine/RTDyldMemoryManager.h:84: undefined reference to `llvm::RTDyldMemoryManager::getSymbolAddressInProcess(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
./.libs/libmini.a(llvm-jit.o):(.data.rel.ro+0x90): undefined reference to `llvm::RTDyldMemoryManager::getPointerToNamedFunction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)'
```
Adding a define to CXXFLAGS, -D _GLIBCXX_USE_CXX11_ABI=0 forces the build
to use the same ABI as the LLVM nupkgs we produce.
The alternative would be to modify our LLVM build to enable the
non-default C++11 ABI.
* Also add flag in Release configuration
Frederik Carlier [Fri, 14 Feb 2020 16:44:46 +0000 (17:44 +0100)]
System.Drawing.Common: Assert libgdiplus 6.0.1 on macOS unit tests (#335)
* Require at least libgdiplus 6.0.1
* Fix typo
* StyleCop fix
* Fix recursion
* PR feedback
* Don't catch DllNotFoundException
* PR feedback
* Enforce libgdiplus version on macOS
* Add a unit test which check the libgdiplus version on macOS
* Revert initial change
* Re-enable ~14 tests on libgdiplus 6
* Re-enable ~10 font tests
* Re-enable 2 DrawBezier tests
* Re-enable ~15 Drawing2D tests
* Re-enable ~8 LinearGradientBrush tests
* Re-enable 6 matrix tests
* Re-enable 7 PathGradientBrush tests
* Re-enable 2 tests
* PR feedback
* Rename IsAtLeastLibgdiplus6 to IsWindowsOrAtLeastLibgdiplus6
* PR feedback
* Fix build errors
Miha Zupan [Fri, 14 Feb 2020 16:40:37 +0000 (17:40 +0100)]
Remove dead code in Uri (#31883)
* Remove dead code in Uri
* Remove non-descript '// perf' comments
Kirill Frolov [Fri, 14 Feb 2020 16:40:03 +0000 (19:40 +0300)]
Fixed few issues within Native/Unix/configure.cmake (#32037)
Issues list are following:
1) clang-5.0 compiler has warning -Wunused-variable (in addition to
-Wunused-value), which should be ignored (because tests, which is passed
to "check_c_source_compiles" written in that way, what they generate
some warnings);
2) fixed include "fnctl.h" -> include "fcntl.h"
3) fixed few warnings related to uninitialized variables (due to
-Werror).
Fix #32035
Levi Broderick [Fri, 14 Feb 2020 16:34:15 +0000 (08:34 -0800)]
Fix broken MSDN blogs links (#32273)
Bruce Forstall [Fri, 14 Feb 2020 16:32:19 +0000 (08:32 -0800)]
Update issues.targets issue numbers for merged repo (#32236)
* Update issues.targets issue numbers for merged repo
Convert from dotnet/coreclr issue number to dotnet/runtime
issue numbers based on docs\issue-mappings\coreclr.mapping.txt
file.
* Convert issue numbers to full URLs
Julien Couvreur [Fri, 14 Feb 2020 16:14:42 +0000 (08:14 -0800)]
Help compiler enforce nullability annotations (#32090)
* Help compiler enforce nullability annotations
* Revert repro changes
* Simplifications
* Address feedback
* Tweak
* Another cleanup
* Fixup on ImportTypes
* Revert from T? to [AllowNull]T
* Enable nullability on one file
* Addressing PR feedback from Stephen
* Use Debug.Assert instead of pragma
* Revert "Use Debug.Assert instead of pragma"
This reverts commit
f7175ba5427729ce60c898d5e7f00d9a4550e12d.
Stephen Toub [Fri, 14 Feb 2020 16:12:15 +0000 (08:12 -0800)]
Remove lock allocation from SafeSocketHandle on Windows (#32275)
The first time a Socket is used, we bind its handle to the ThreadPool for overlapped I/O. In order to avoid this happening on multiple threads concurrently if multiple threads concurrently race to perform this initialization, we take a lock. We currently allocate an object and store it for the lifetime of the Socket, purely to do this one-time synchronization, after which the object is useless. While in general we prefer not to lock on `this` (in order to avoid any issues that might occur from an external consumer also locking on the same object), the chances of someone locking on this object are slim to none, and even if they did, it wouldn't make any difference once the socket was already initialized, and even if the socket wasn't yet initialized, it would only be a one-time contention, without lock ordering concerns.