platform/upstream/dotnet/runtime.git
3 years agoIntroducing support for callchain profile-driven optimizations (#47664)
Tomáš Rylek [Tue, 9 Feb 2021 00:27:58 +0000 (01:27 +0100)]
Introducing support for callchain profile-driven optimizations (#47664)

After adding support for calculating callchain profile statistics
as an initial attempt at compile-time measure for code layout
quality, I have implemented an initial algorithm for method
placement based on the statistics. The algorithm is trivial, it
just sorts all caller-callee pairs resolved from the profile
by descending call counts and then goes through the list and
just places methods in the order in which they are found,
putting non-profiled methods last. In the System.Private.CoreLib
compilation using the profile file

simple_new_model_two_apps_1_7.json

(not yet the latest one from Siva with signatures), I'm seeing
the following difference in the statistics:

--callchain-method:none

CHARACTERISTIC            | PAIR COUNT | CALL COUNT | PERCENTAGE
----------------------------------------------------------------
ENTRIES TOTAL             |        291 |     266229 |     100.00
RESOLVED ENTRIES          |        267 |     260172 |      97.72
UNRESOLVED ENTRIES        |         24 |       6057 |       2.28
NEAR (INTRA-PAGE) CALLS   |        145 |     109055 |      40.96
FAR (CROSS-PAGE) CALLS    |        122 |     151117 |      56.76

--callchain-method:sort

CHARACTERISTIC            | PAIR COUNT | CALL COUNT | PERCENTAGE
----------------------------------------------------------------
ENTRIES TOTAL             |        291 |     266229 |     100.00
RESOLVED ENTRIES          |        267 |     260172 |      97.72
UNRESOLVED ENTRIES        |         24 |       6057 |       2.28
NEAR (INTRA-PAGE) CALLS   |        237 |     260110 |      97.70
FAR (CROSS-PAGE) CALLS    |         30 |         62 |       0.02

While the initial results seem encouraging, I guess that's mostly
because the profile used is very small, I guess that with more
complex profiles and / or with composite compilation of the entire
framework things may become substantially more complex.

Thanks

Tomas

3 years agomake sure TcpClient is properly initialized when using name in ctor (#47058)
Tomas Weinfurt [Tue, 9 Feb 2021 00:27:43 +0000 (16:27 -0800)]
make sure TcpClient is properly initialized when using name in ctor (#47058)

* make sure TcpClient is properly initialized when using name in ctor

* add client.Dispose

* feedback from review

* feedback from review

* feedback from review

3 years ago[master] Update dependencies from dotnet/runtime dotnet/xharness (#47993)
dotnet-maestro[bot] [Tue, 9 Feb 2021 00:08:23 +0000 (00:08 +0000)]
[master] Update dependencies from dotnet/runtime dotnet/xharness (#47993)

[master] Update dependencies from dotnet/runtime dotnet/xharness

3 years agoAdd SystemNative_LowLevelMonitor_TimedWait to System.Native (#47325)
Ryan Lucia [Mon, 8 Feb 2021 23:08:46 +0000 (18:08 -0500)]
Add SystemNative_LowLevelMonitor_TimedWait to System.Native (#47325)

* Add SystemNative_LowLevelMonitor_TimedWait to System.Native

* Undefine _XOPEN_SOURCE before pthread.h to fix CoreCLR MacOS build

* Rework pthread_condattr_setclock/CLOCK_MONOTONIC logic to support iOS

* Try redefining _XOPEN_SOURCE

* Fix header for pthread_condattr_setclock check

* Copy check from CoreCLR GC

3 years agoMove common corelib code to shared partition (#47956)
Adeel Mujahid [Mon, 8 Feb 2021 22:50:53 +0000 (00:50 +0200)]
Move common corelib code to shared partition (#47956)

* Move common corelib code to shared partition

* Inline SetCustomAttributeNoLock method

3 years agorebuild certificate context if we use client cert from credential cache (#47729)
Tomas Weinfurt [Mon, 8 Feb 2021 21:09:11 +0000 (13:09 -0800)]
rebuild certificate context if we use client cert from credential cache (#47729)

* rebuild context if we use client cert from cache

* adjust expectation for windows

* add ITestOutputHelper

* use fixture to set up certificates

* add chain verification to the test

* adjust test

* fix assert

* disable test on macOS

3 years agoFix GDI handle leak in Icon.DrawImage (#47836)
Santiago Fernandez Madero [Mon, 8 Feb 2021 20:44:58 +0000 (12:44 -0800)]
Fix GDI handle leak in Icon.DrawImage (#47836)

* Fix GDI handle leak in Icon.DrawImage

* Fix build

* Add test

* Fix test in Mono

* Add missing Usings

3 years agoResolve ILLink warnings for System.Resources.ResourceManager (#47778)
Jose Perez Rodriguez [Mon, 8 Feb 2021 20:44:48 +0000 (12:44 -0800)]
Resolve ILLink warnings for System.Resources.ResourceManager (#47778)

* Making System.Resources.ResourceManager trim safe

* Addressing PR Feedback

* Rename objects => types

* Also rename the strings.resx

* More PR Feedback

* Add UnconditionalSuppressMessage to Extensions

* Rename feature switch and reword error messages

* Removing new warning that is already addressed

* Rename AppContext switch and add feature switch to docs

* Addressing Feedback

* Revert changes to findtype plus some other feedback

* Revert FindType back

* move feature check up

3 years agoRefactor TranscodeUtf8 to allow trimming of Vector128<T> (#47928)
Tanner Gooding [Mon, 8 Feb 2021 20:22:12 +0000 (12:22 -0800)]
Refactor TranscodeUtf8 to allow trimming of Vector128<T> (#47928)

3 years agoName some more threads (#47084)
Dan Moseley [Mon, 8 Feb 2021 20:17:10 +0000 (12:17 -0800)]
Name some more threads (#47084)

* name threads

* typo:

* typo

* Truncate

* Name long running TP thread

* Allow resetting thread names

* Fix thread set test

* Remove unnecessary reset of FSW thread name

* prettier names

* consistent syntax

* Fix threadpool test

* Fix code typo

* typo

* adjust names

3 years agoBitOperations.IsPow2 for all supported integral types (#36163)
John Kelly [Mon, 8 Feb 2021 20:08:00 +0000 (20:08 +0000)]
BitOperations.IsPow2 for all supported integral types (#36163)

* Add IsPow2

* Update BitOperationsTests.cs

* Refactor to static locals

* Add profiled software fallback

* Remove popcnt paths

* Remove popcnt usage as discussed

cc @tannergooding

* Invert branch

Discussed with tanner in DMs

* Update BitOperations.cs

3 years agoAdd Mac Catalyst (iOS API, Mac ABI) runtime (#47823)
Jo Shields [Mon, 8 Feb 2021 19:26:14 +0000 (14:26 -0500)]
Add Mac Catalyst (iOS API, Mac ABI) runtime (#47823)

Initial support for Mac Catalyst for mono subset. This enables building runtime packs and working jobs, but right now the `tests` subset needs some work to allow library test runs in CI

3 years agoEnable markdownlint rule (MD009) (#40887)
Youssef Victor [Mon, 8 Feb 2021 18:43:40 +0000 (20:43 +0200)]
Enable markdownlint rule (MD009) (#40887)

* Create markdownlint.yml

* Create markdownlint-problem-matcher.json

* Create .markdownlint.json

* Update .markdownlint.json

* fix violations

* fixes

* Remove "push" section

As advised by @viktorhofer so it's quite clear it only runs in CI.

Co-authored-by: Dan Moseley <danmose@microsoft.com>
3 years agoConvert calls of instance HashAlgorithm.ComputeHash to static HashData
Wei Zheng [Mon, 8 Feb 2021 18:04:44 +0000 (02:04 +0800)]
Convert calls of instance HashAlgorithm.ComputeHash to static HashData

This only affects target sites which are not cross-compiled for a TFM where the static HashData methods don't exist.

3 years agoFix Numeric Test when Number Grouping is Empty (#47983)
Tarek Mahmoud Sayed [Mon, 8 Feb 2021 17:31:03 +0000 (09:31 -0800)]
Fix Numeric Test when Number Grouping is Empty (#47983)

3 years ago[interp] Add handling for conv.i from r4 (#47991)
Vlad Brezae [Mon, 8 Feb 2021 15:45:55 +0000 (17:45 +0200)]
[interp] Add handling for conv.i from r4 (#47991)

3 years ago[master] Update dependencies from mono/linker (#47857)
dotnet-maestro[bot] [Mon, 8 Feb 2021 13:40:06 +0000 (14:40 +0100)]
[master] Update dependencies from mono/linker (#47857)

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Marek Safar <marek.safar@gmail.com>
3 years agoSplit lock to prevent deadlock in Http2Stream. (#47769)
Marie Píchová [Mon, 8 Feb 2021 13:25:35 +0000 (14:25 +0100)]
Split lock to prevent deadlock in Http2Stream. (#47769)

Http2Connection.ChangeInitialWindowSize locks connection's SyncObject and calls Http2Stream.OnWindowUpdate which locks stream's SyncObject.
Http2Stream.Complete is called only while stream's SyncObject lock is take and then it calls Http2Connection.RemoveStream that locks connection SyncObject.

3 years agoAdd ios pinvoke functional test (#47988)
Maxim Lipnin [Mon, 8 Feb 2021 13:24:45 +0000 (16:24 +0300)]
Add ios pinvoke functional test (#47988)

Contributes to https://github.com/dotnet/runtime/issues/43865.

3 years agomark FileStream.Lock and Unlock as unsupported on macOS (#47040)
Adam Sitnik [Mon, 8 Feb 2021 12:54:03 +0000 (13:54 +0100)]
mark FileStream.Lock and Unlock as unsupported on macOS (#47040)

* mark FileStream.Lock and Unlock as unsupported on macOS

* update ref assembly

* annotate types derived from FileStream

* annotate VisualBasic parts as well

3 years agoConsolidate ComWrappers implementation across platforms (#47982)
Andrii Kurdiumov [Mon, 8 Feb 2021 11:33:41 +0000 (17:33 +0600)]
Consolidate ComWrappers implementation across platforms (#47982)

* Consolidate ComWrappers implementation across platforms
This should help in implementing https://github.com/dotnet/runtimelab/issues/306

* Fix incorrect and missing partial declarations

* Update src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
3 years agoSingle Transport Package for aspnetcore (#47684)
Anirudh Agnihotry [Mon, 8 Feb 2021 08:03:31 +0000 (00:03 -0800)]
Single Transport Package for aspnetcore (#47684)

* Adding non ectensions library to transport package and moving transport package to all config leg

* update servicing policy doc

* change name from Microsoft.Extensions.Internal.Transport -> Microsoft.AspNetCore.Internal.Transport

* make isAspnetCore property explicit

* csproj to proj change

* remove non used extensions assemblies from transport package

* Update Directory.Build.props

3 years agoCompletely get rid of "refonly" from Mono (#47973)
Aleksey Kliger (λgeek) [Mon, 8 Feb 2021 06:54:56 +0000 (01:54 -0500)]
Completely get rid of "refonly" from Mono (#47973)

* InternalGetAssemblyName can open the image !refonly

Initially this was opening in refonly mode in order to be able to get
the name of problematic assemblies.  See
d64b25aabeb8581a27be4968ca3517217290dd8b

However that concept doesn't exist anymore in netcore mono.  So open
the image normally.

* Get rid of MonoImage ref_only field

* no refonly mono_domain_get_assemblies

* no refonly arg to assembly search hooks

* No refonly preload hook

* No refonly assembly_loaded_internal

* No refonly mono_error_set_simple_file_not_found

* There's no GAC or shadow copying

* Remove MonoAssembly in_gac field

* remove unused var

3 years agoRemove MONO_ASMCTX_REFONLY (#47966)
Aleksey Kliger (λgeek) [Sun, 7 Feb 2021 17:08:01 +0000 (12:08 -0500)]
Remove MONO_ASMCTX_REFONLY (#47966)

* remove MONO_ASMCTX_REFONLY

* Also remove mono_image_open_from_data_internal refonly arg

3 years agoError out if an unknown option is given in ENABLE_MINIMAL. (#47974)
Zoltan Varga [Sun, 7 Feb 2021 16:30:37 +0000 (11:30 -0500)]
Error out if an unknown option is given in ENABLE_MINIMAL. (#47974)

3 years ago[mono] Remove some dead code (#47975)
Aleksey Kliger (λgeek) [Sun, 7 Feb 2021 13:34:46 +0000 (08:34 -0500)]
[mono] Remove some dead code (#47975)

* Remove console-null console-win32 dead icalls

* Remove shadow copying remains

No more MonoDomain shadow_serial field

* No MonoDomain socket assembly fields

* remove MonoRuntimeInfo arg from mono_assembly_load_corlib

* delete useless allocations

3 years agoremove most of w32process (#47962)
Aleksey Kliger (λgeek) [Sun, 7 Feb 2021 04:11:36 +0000 (23:11 -0500)]
remove most of w32process (#47962)

3 years ago[master] Update dependencies from dotnet/arcade (#47952)
dotnet-maestro[bot] [Sun, 7 Feb 2021 02:36:12 +0000 (21:36 -0500)]
[master] Update dependencies from dotnet/arcade (#47952)

* Update dependencies from https://github.com/dotnet/arcade build 20210205.5

Microsoft.DotNet.XUnitExtensions , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.ApiCompat , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.GenFacades , Microsoft.DotNet.GenAPI , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SharedFramework.Sdk
 From Version 6.0.0-beta.21101.7 -> To Version 6.0.0-beta.21105.5

* Fix xunit analyzer warning in SharedArrayBufferTests.cs

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
3 years agoFix flaky EventLog test (#47888)
Dan Moseley [Sun, 7 Feb 2021 01:43:33 +0000 (17:43 -0800)]
Fix flaky EventLog test (#47888)

3 years agoCleanup assembly loading code. (#47958)
Zoltan Varga [Sun, 7 Feb 2021 00:32:50 +0000 (19:32 -0500)]
Cleanup assembly loading code. (#47958)

* Cleanup the assembly loading code.

* Remove the 'problematic' assembly code.

Co-authored-by: Aleksey Kliger (λgeek) <alklig@microsoft.com>
3 years agoRemove the remainder of the appdomain unload code. (#47955)
Zoltan Varga [Sun, 7 Feb 2021 00:02:48 +0000 (19:02 -0500)]
Remove the remainder of the appdomain unload code. (#47955)

* Remove the remainder of the appdomain unload code.

* Restore public API functions.

3 years agoAdd crossgen2 automated SuperPMI collection of Core_Root libraries (#47818)
Bruce Forstall [Sat, 6 Feb 2021 20:45:46 +0000 (10:45 -1000)]
Add crossgen2 automated SuperPMI collection of Core_Root libraries (#47818)

* Add crossgen2 automated SuperPMI collection of Core_Root libraries

Linux is excluded; there are uninvestigated crashes doing crossgen2 Linux collections.

I added logic to copy the runtime ".dotnet" directory to Helix machines to use as the
driver for crossgen2, but that doesn't work for cross-platform scenarios (e.g., Windows
x64 .dotnet, x86 Core_Root), so it's commented out for now and the same-Core_Root corerun.exe
is used as the crossgen2 driver.

Add `-collection_type` argument to superpmi-setup.py

Allow copying of .json files to Helix; needed by crossgen2.

Changed superpmi pipeline to run with DEBUG level logging from superpmi.py so it's
easier to see what happened when looking at Helix logs (without having to find and separately
download the superpmi.log file).

Changed superpmi.py to write stdout/stderr files to log on failure, so we can see why
crossgen2 failed.

Fix creation of log file directories when `-log_file` argument specified

Excluded many more native files from superpmi collection setup.

Fixes #47541

Extra:
1. If `-temp_dir` is specified to superpmi.py, normalize it to
an absolute path.
2. Add a superpmi.py collect `-exclude` option to avoid collecting
assemblies known to fail (and cause pop-up failures: see #47552).
(This isn't used by the automated collection, but is generally useful.)
3. Stop logging too-verbose message about CORINFO_SIG_INST handle
array illegal values, since it's "by design" for crossgen2
4. Force lower-casing of JIT-EE version string, for consistency.

3 years agoRemove security code. (#47957)
Zoltan Varga [Sat, 6 Feb 2021 20:20:20 +0000 (15:20 -0500)]
Remove security code. (#47957)

3 years agoFix tests failing xunit analyzers after dependency update (#47954)
Stephen Toub [Sat, 6 Feb 2021 16:23:13 +0000 (11:23 -0500)]
Fix tests failing xunit analyzers after dependency update (#47954)

3 years agoClean up the threading code. (#47948)
Zoltan Varga [Sat, 6 Feb 2021 15:49:33 +0000 (10:49 -0500)]
Clean up the threading code. (#47948)

Remove unused fields/functions.

3 years agoCleanup System.Reflection.Emit code. (#47945)
Zoltan Varga [Sat, 6 Feb 2021 15:49:08 +0000 (10:49 -0500)]
Cleanup System.Reflection.Emit code. (#47945)

* Remove unused fields from ref.emit classes.

* Remove MonoDynamicImage->run/save, they are always TRUE/FALSE.

* Remove more code.

3 years agoAvoid unnecessary Range usage in TranscodingStream (#47893)
Stephen Toub [Sat, 6 Feb 2021 14:00:19 +0000 (09:00 -0500)]
Avoid unnecessary Range usage in TranscodingStream (#47893)

- Enables MemoryExtensions.AsSpan(T[], Range) to be trimmed in a default Blazor wasm app.
- Use of span.Slice(int) is more efficient than span[int..]
- Use of AsSpan(int, int) is more efficient than AsSpan(Range)

3 years agoRe-remove NetEventSource.IsEnabled property (#47917)
Stephen Toub [Sat, 6 Feb 2021 12:47:46 +0000 (07:47 -0500)]
Re-remove NetEventSource.IsEnabled property (#47917)

We'd removed this almost a year ago, but it came back almost immediately and accidentally as a result of two PRs that raced with each other.

3 years agoTweak dependency injection's StackGuard (#47890)
Stephen Toub [Sat, 6 Feb 2021 12:31:12 +0000 (07:31 -0500)]
Tweak dependency injection's StackGuard (#47890)

- Use TryEnsureSufficientExecutionStack rather than EnsureSufficientExecutionStack, allowing the latter to be trimmed in a default Blazor wasm app.
- Use ValueTuple instead of Tuple, allowing the latter to be trimmed in a default Blazor wasm app
- Clean up awaiter usage in RunOnEmptyStackCore

3 years agoReplace string.Trim(null) with string.Trim() in corelib (#47885)
Stephen Toub [Sat, 6 Feb 2021 12:28:16 +0000 (07:28 -0500)]
Replace string.Trim(null) with string.Trim() in corelib (#47885)

The former just checks the input, and if it's null, calls the latter.

3 years agoRemove use of string.GetHashCode(StringComparison) (#47883)
Stephen Toub [Sat, 6 Feb 2021 12:27:37 +0000 (07:27 -0500)]
Remove use of string.GetHashCode(StringComparison) (#47883)

All of our call sites to it pass in a const StringComparison; GetHashCode will then turn around and decide which property on StringComparer to use, and then call GetHashCode on the relevant instance... we may as well just pick the instance directly, which not only saves the lookup and enables devirtualization, it also enables better trimming, as string.GetHashCode(StringComparison) ends up rooting all of the StringComparer properties in case you pass in the appropriate StringComparison.

3 years agoThe min address within the segment should be computed using max (#47926)
Andrew Au [Sat, 6 Feb 2021 03:26:13 +0000 (19:26 -0800)]
The min address within the segment should be computed using max (#47926)

3 years agoRemove string.Insert/Remove usage from Uri.GetCanonicalPath (#47924)
Stephen Toub [Sat, 6 Feb 2021 01:34:13 +0000 (20:34 -0500)]
Remove string.Insert/Remove usage from Uri.GetCanonicalPath (#47924)

For a rare path, GetCanonicalPath is removing one character from a string and then inserting  a replacement character.  Thanks to span, we can replace the two string allocations with a single char[] allocation and avoid these Remove/Insert calls, which are the only ones keeping string.Remove and string.Insert from being trimmed out of a default Blazor wasm app.

3 years agoFix NameValueHeaderValue.CheckValueFormat (#794)
Marco Rossignoli [Sat, 6 Feb 2021 00:59:53 +0000 (01:59 +0100)]
Fix NameValueHeaderValue.CheckValueFormat (#794)

Fixes NameHeaderValue validation to be in line with RFC.

Resolves #1504

3 years ago[reflection] Remove sre-save and DISABLE_REFLECTION_EMIT_SAVE (#47915)
Aleksey Kliger (λgeek) [Sat, 6 Feb 2021 00:31:20 +0000 (19:31 -0500)]
[reflection] Remove sre-save and DISABLE_REFLECTION_EMIT_SAVE (#47915)

* [reflection] Remove sre-save and DISABLE_REFLECTION_EMIT_SAVE

* remove old sre-save entrypoint declarations too

3 years agomono: remove ENABLE_NETCORE and associated framework code (#47925)
Ryan Lucia [Fri, 5 Feb 2021 23:52:05 +0000 (18:52 -0500)]
mono: remove ENABLE_NETCORE and associated framework code (#47925)

* mono: remove ENABLE_NETCORE and associated framework code

* Remove g_assert_not_netcore

* No more locales.h

* No more filewatcher.h

* Fix Windows build

* Remove g_assert_netcore

I don't see anything calling this

* Add now-needed include

3 years agoFix the mono cmake build to work without mono.proj. (#47913)
Zoltan Varga [Fri, 5 Feb 2021 22:55:27 +0000 (17:55 -0500)]
Fix the mono cmake build to work without mono.proj. (#47913)

3 years agoFix violations system private xml (#47874)
Newell Clark [Fri, 5 Feb 2021 22:47:17 +0000 (17:47 -0500)]
Fix violations system private xml (#47874)

* Set diagnostic severity

* Fix violations in System.Private.Xml

* Revert .editorconfig

3 years agoRemove a couple LINQ usages in Microsoft.Extensions (#47873)
Eric Erhardt [Fri, 5 Feb 2021 20:07:48 +0000 (14:07 -0600)]
Remove a couple LINQ usages in Microsoft.Extensions (#47873)

* Remove a couple LINQ usages in Microsoft.Extensions

* Respond to PR feedback.

3 years ago[mbr] Fix link in README (#47914)
Aleksey Kliger (λgeek) [Fri, 5 Feb 2021 18:38:37 +0000 (13:38 -0500)]
[mbr] Fix link in README (#47914)

3 years agoAdd example for installing/launching emulator to Android test doc (#47889)
Elinor Fung [Fri, 5 Feb 2021 18:03:38 +0000 (10:03 -0800)]
Add example for installing/launching emulator to Android test doc (#47889)

3 years agoChange ParameterDefaultValue to use GetUninitializedObject instead of Activator.Creat...
Eric Erhardt [Fri, 5 Feb 2021 18:00:37 +0000 (12:00 -0600)]
Change ParameterDefaultValue to use GetUninitializedObject instead of Activator.CreateInstance (#47722)

* Change ParameterDefaultValue to use GetUninitializedObject instead of Activator.CreateInstance

Activator.CreateInstance has the ability to call a parameterless constructor (if one is defined) on a value type. This is incorrect for ParameterDefaultValue. It is more correct to call GetUninitializedObject, which is the same as using `default(T)`.

* Add test for struct with default constructor

3 years ago[mono][debugger]Reverting major version change (#47872)
Thays Grazia [Fri, 5 Feb 2021 17:15:12 +0000 (14:15 -0300)]
[mono][debugger]Reverting major version change (#47872)

3 years agoResolve ILLink warnings in System.Linq.Expressions (Round 2) (#47803)
Eric Erhardt [Fri, 5 Feb 2021 16:51:55 +0000 (10:51 -0600)]
Resolve ILLink warnings in System.Linq.Expressions (Round 2) (#47803)

* Resolve ILLink warnings in System.Linq.Expressions (Round 2)

Contributes to #45623

* Suppress ToString warning in ExpressionStringBuilder

3 years agoRemoved unneeded variable (#44896)
N [Fri, 5 Feb 2021 16:28:32 +0000 (11:28 -0500)]
Removed unneeded variable (#44896)

3 years ago[browser] Fix the exit code in the sample (#47884)
Larry Ewing [Fri, 5 Feb 2021 16:28:10 +0000 (10:28 -0600)]
[browser] Fix the exit code in the sample (#47884)

Fix typo in browser sample so it doesn't log an error

3 years agoRemove more unused files from netcore/. (#47882)
Zoltan Varga [Fri, 5 Feb 2021 11:39:15 +0000 (06:39 -0500)]
Remove more unused files from netcore/. (#47882)

* Remove more unused files from netcore/.

* Remove unused gen-xunit-runner.

3 years agoEnsure mono_gc_thread_detach is always called. (#47816)
Jonathan Chambers [Fri, 5 Feb 2021 11:31:27 +0000 (06:31 -0500)]
Ensure mono_gc_thread_detach is always called. (#47816)

The previous logic would not call `mono_gc_thread_detach` for a number of scenarios. One example:
```
start_wrapper
- mono_thread_info_attach - thread is now live in mono threads layer
- start_wrapper_internal
-- mono_thread_attach_internal - mono attached to vm thread layer. GC handle is set via mono_thread_info_set_internal_thread_gchandle
-- mono_thread_detach_internal - detached from vm thread layer. GC handle cleared via call to mono_thread_info_unset_internal_thread_gchandle
- mono_thread_info_exit
-- mono_thread_info_detach
--- unregister_thread
---- thread_detach callback - checks if gc handle is valid and returns if not via mono_thread_info_try_get_internal_thread_gchandle. We've already cleared above so we never call mono_gc_thread_detach.
```

This change ensures `mono_gc_thread_detach` is always called even the GC handle for the thread has already been cleared.

3 years agoFix covariant returns when overriding method of non-parent ancestor (#47846)
Jan Vorlicek [Fri, 5 Feb 2021 09:34:34 +0000 (10:34 +0100)]
Fix covariant returns when overriding method of non-parent ancestor (#47846)

There is a problem in the
ClassLoader::ValidateMethodsWithCovariantReturnTypes that results in
failed verification of valid override in case the return type of the
method being overriden is generic in canonical form and it is defined
in an ancestor class that is not the parent.

The problem is that we attempt to use instantiation of the parent class
instead of the ancestor class that contains definition of the method
being overriden.

This change fixes it by locating the proper ancestor MethodTable and
using it.

3 years agoLimit unique SNI to 63 chars in tests (#47854)
Jan Jahoda [Fri, 5 Feb 2021 04:03:09 +0000 (05:03 +0100)]
Limit unique SNI to 63 chars in tests (#47854)

* Limit SNI to 63 chars

* Split SNI to more DNS labels

3 years agoEnable Console.OpenStandard* to be trimmed in default Blazor wasm app (#47878)
Stephen Toub [Fri, 5 Feb 2021 03:37:13 +0000 (22:37 -0500)]
Enable Console.OpenStandard* to be trimmed in default Blazor wasm app (#47878)

3 years agoEnable SequenceMarshal to be trimmed from default Blazor wasm app (#47879)
Stephen Toub [Fri, 5 Feb 2021 03:36:58 +0000 (22:36 -0500)]
Enable SequenceMarshal to be trimmed from default Blazor wasm app (#47879)

3 years agoJIT: fix interaction of PGO and jitstress (#47876)
Andy Ayers [Fri, 5 Feb 2021 01:53:41 +0000 (17:53 -0800)]
JIT: fix interaction of PGO and jitstress (#47876)

We always need to run the profile data phase so that jit stress can inject
random profile counts if it so chooses.

Also, clean up a few dumping nits -- don't dump the profile query status until
we get around to trying to incorporate counts; summarize schema records before
asserting that we must have block counts, etc.

Closes #47839

3 years agoFix armel build (#47771)
Gleb Balykov [Fri, 5 Feb 2021 00:05:37 +0000 (03:05 +0300)]
Fix armel build (#47771)

3 years agoRemove the src/mono/netcore directory, move its contents to src/mono. (#47847)
Zoltan Varga [Thu, 4 Feb 2021 23:59:14 +0000 (18:59 -0500)]
Remove the src/mono/netcore directory, move its contents to src/mono. (#47847)

* Remove the src/mono/netcore directory, move its contents to src/mono.

* Fix docs and make targets.

* Remove the netcore dir itself.

* Fix samples.

3 years agoUpdate build-runtime to disable PGO when not building release (#47865)
Elinor Fung [Thu, 4 Feb 2021 23:16:53 +0000 (15:16 -0800)]
Update build-runtime to disable PGO when not building release (#47865)

3 years agomake TestUserCredentialsPropertiesOnWindows stable on Windows Server Core (#47031)
Adam Sitnik [Thu, 4 Feb 2021 22:05:22 +0000 (23:05 +0100)]
make TestUserCredentialsPropertiesOnWindows stable on Windows Server Core (#47031)

* kill the process first, then remove the access and then remove the user

this is to try to make TestUserCredentialsPropertiesOnWindows stable on Windows Server Core

* is UnauthorizedAccessException thrown from finally swallowing a different exception (throw in the catch block)?

* I was right, the first call to SetAccessControl was throwing

What if we don't give the user rigts to execute it at all?

3 years agoResolve ILLink warnings in System.Security.Cryptography.Primitives (#47853)
Eric Erhardt [Thu, 4 Feb 2021 20:47:56 +0000 (14:47 -0600)]
Resolve ILLink warnings in System.Security.Cryptography.Primitives (#47853)

* Resolve ILLink warnings in System.Security.Cryptography.Primitives

Contributes to #45623

3 years ago* Initial arm64e support. (#47819)
Zoltan Varga [Thu, 4 Feb 2021 20:14:43 +0000 (15:14 -0500)]
* Initial arm64e support. (#47819)

* Fix the c++ build.

* Remove some unused prototypes.

3 years ago[mono] Compile runtime with MBR support by default on Android and Browser (#47785)
Aleksey Kliger (λgeek) [Thu, 4 Feb 2021 20:01:17 +0000 (15:01 -0500)]
[mono] Compile runtime with MBR support by default on Android and Browser (#47785)

Contributes to https://github.com/dotnet/runtime/issues/44806

3 years agoAdd missing dlclose on error (#47487)
Omair Majid [Thu, 4 Feb 2021 18:35:49 +0000 (13:35 -0500)]
Add missing dlclose on error (#47487)

If the symbol is not found, close the library before returning false.

Otherwise, the library is not stored anywhere and never cleaned up.

3 years agoFix dynamic pgo (#47790)
David Wrighton [Thu, 4 Feb 2021 18:05:47 +0000 (10:05 -0800)]
Fix dynamic pgo (#47790)

* Fix dynamic pgo schema data copy

3 years agoRemove ENABLE_MINIMAL options which are disabled on netcore already. (#47817)
Zoltan Varga [Thu, 4 Feb 2021 18:03:56 +0000 (13:03 -0500)]
Remove ENABLE_MINIMAL options which are disabled on netcore already. (#47817)

3 years agoRemove unused unicode header inclusion (#47840)
Adeel Mujahid [Thu, 4 Feb 2021 18:01:10 +0000 (20:01 +0200)]
Remove unused unicode header inclusion (#47840)

`unicode/uclean.h` was added in bdc8955 for `u_init()` when the PR was
WIP: https://github.com/dotnet/runtime/pull/37971/commits

By the time PR was merged, `u_init()` was removed, so this header is
not required by any configuration.

3 years agoFix createdump on Apple Silicon (#47835)
Steve MacLean [Thu, 4 Feb 2021 15:51:27 +0000 (10:51 -0500)]
Fix createdump on Apple Silicon (#47835)

3 years agoUpdate CODEOWNERS (#47851)
Karel Zikmund [Thu, 4 Feb 2021 15:10:40 +0000 (16:10 +0100)]
Update CODEOWNERS (#47851)

Removing Ahson as he is not on BCL team anymore

3 years agoFix DISABLE_JIT support on amd64. (#47827)
Zoltan Varga [Thu, 4 Feb 2021 14:51:39 +0000 (09:51 -0500)]
Fix DISABLE_JIT support on amd64. (#47827)

3 years agoDisable Android arm64 runtime tests (#47852)
Alexander Köplinger [Thu, 4 Feb 2021 14:49:48 +0000 (15:49 +0100)]
Disable Android arm64 runtime tests (#47852)

See https://github.com/dotnet/runtime/issues/47850

3 years ago[master] Update dependencies from dotnet/xharness dotnet/runtime-assets dotnet/arcade...
dotnet-maestro[bot] [Thu, 4 Feb 2021 14:42:19 +0000 (15:42 +0100)]
[master] Update dependencies from dotnet/xharness dotnet/runtime-assets dotnet/arcade (#47797)

* Update dependencies from https://github.com/dotnet/runtime-assets build 20210202.1

System.ComponentModel.TypeConverter.TestData , System.Drawing.Common.TestData , System.IO.Compression.TestData , System.IO.Packaging.TestData , System.Net.TestData , System.Private.Runtime.UnicodeData , System.Runtime.TimeZoneData , System.Security.Cryptography.X509Certificates.TestData , System.Windows.Extensions.TestData
 From Version 5.0.0-beta.21062.1 -> To Version 5.0.0-beta.21102.1

* Update dependencies from https://github.com/dotnet/arcade build 20210201.7

Microsoft.DotNet.XUnitExtensions , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.ApiCompat , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.GenFacades , Microsoft.DotNet.GenAPI , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SharedFramework.Sdk
 From Version 6.0.0-beta.21081.1 -> To Version 6.0.0-beta.21101.7

* Update dependencies from https://github.com/dotnet/xharness build 20210203.1

Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Xunit
 From Version 1.0.0-prerelease.21102.1 -> To Version 1.0.0-prerelease.21103.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
3 years ago[master] Update dependencies from mono/linker (#47709)
dotnet-maestro[bot] [Thu, 4 Feb 2021 13:05:26 +0000 (14:05 +0100)]
[master] Update dependencies from mono/linker (#47709)

* Update dependencies from https://github.com/mono/linker build 20210201.1

Microsoft.NET.ILLink.Tasks
 From Version 6.0.0-alpha.1.21079.1 -> To Version 6.0.0-alpha.1.21101.1

* Update dependencies from https://github.com/mono/linker build 20210201.2

Microsoft.NET.ILLink.Tasks
 From Version 6.0.0-alpha.1.21079.1 -> To Version 6.0.0-alpha.1.21101.2

* Update dependencies from https://github.com/mono/linker build 20210203.1

Microsoft.NET.ILLink.Tasks
 From Version 6.0.0-alpha.1.21079.1 -> To Version 6.0.0-alpha.1.21103.1

* Add warnings to baseline

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Mateo Torres Ruiz <matorre@microsoft.com>
Co-authored-by: Marek Safar <marek.safar@gmail.com>
3 years agoApple silicon debugger (#47834)
Steve MacLean [Thu, 4 Feb 2021 09:58:08 +0000 (04:58 -0500)]
Apple silicon debugger (#47834)

* Use PAL_JITWriteEnable in debug/ee/controller.cpp

* Fix breakpoint exception handling on macos

* Fix Arm64SingleStepper for osx W^X

* Fix DebuggerHeapExecutableMemoryPage for W^X

* Fix DebuggerEval::DebuggerEval() during W^X

3 years agoHandle NativeLibrary.GetExport/Free on libs not loaded through NativeLibrary.*Load...
Johan Lorensson [Thu, 4 Feb 2021 07:53:32 +0000 (08:53 +0100)]
Handle NativeLibrary.GetExport/Free on libs not loaded through NativeLibrary.*Load* on Mono. (#47705)

Handle NativeLibrary.GetExport on libs loaded with Interop.Kernel32.LoadLibraryEx.

https://github.com/dotnet/runtime/pull/47013 changed how kernel32.dll
and Ws2_32.dll gets loaded on Windows. Instead of loading using
NativeLibrary.Load these system libraries are now loaded directly using
LoadLibraryEx, but symbols are still handled through NativeLibrary.
This short-circuits some logic in Mono that assumes all libraries gets
loaded through NativeLibrary.Load.

Fix adds ability to use passed in HMODULE when not finding a matching
library in our native library cache and use it directly, inline with CoreClr behavior.

* Handle NativeLibrary GetExport/Free using IntPtr library OS handle xplat.

* Disable additional System.Drawing.Common tests due to missing COM support.

3 years agofix #47561 (#47575)
Anton Firszov [Thu, 4 Feb 2021 06:10:40 +0000 (07:10 +0100)]
fix #47561 (#47575)

3 years ago Update the analyzer version in runtime and enable the TFM attributes on browser...
Buyaa [Thu, 4 Feb 2021 05:09:07 +0000 (21:09 -0800)]
 Update the analyzer version in runtime and enable the TFM attributes on browser build (#47789)

* Remove logic for removing TFM target supported attributes for browser build, use latest analyzer

3 years agoFix error message in R2R log (#47811)
Jan Kotas [Thu, 4 Feb 2021 03:08:30 +0000 (19:08 -0800)]
Fix error message in R2R log (#47811)

3 years agoPass opaque method signature handle between JIT/CG2 (#47779)
Simon Nattress [Thu, 4 Feb 2021 00:54:57 +0000 (16:54 -0800)]
Pass opaque method signature handle between JIT/CG2 (#47779)

* Crossgen2 presently abuses the `CORINFO_SIG_INFO` pSig field to pass a handle representing a managed method signature object which the JIT passes back to us later in compilation. This field is for byte arrays and causes problems with SuperPMI which rightly doesn't know how to interpret a zero-length buffer whose pointer is set.
* Introduce a new field ,`methodSignature` where we pass the handle back to the JIT. This pattern saves us from allocating and pinning a byte buffer for signatures, something the native code VM and Crossgen1 don't have to worry about.
* Add strongly typed `ObjectToHandle` and `HandleToObject` methods for `CORINFO_MODULE_STRUCT_` <=> `MethodIL` and `MethodSignatureInfo` <=> `MethodSignature`.
* Add SuperPMI support for CORINFO_SIG_INFO.methodSignature

Co-authored-by: Bruce Forstall <brucefo@microsoft.com>
3 years agoAdd more sources to tasks.proj build semaphore (#47804)
Alexander Köplinger [Wed, 3 Feb 2021 23:27:48 +0000 (00:27 +0100)]
Add more sources to tasks.proj build semaphore (#47804)

* Add more sources to tasks.proj build semaphore

With the Apple/AndroidAppBuilders we now have additional sources besides *.cs so we need to add them to the semaphore,
otherwise changes in these files wouldn't cause a rebuild.

* Review feedback

3 years agoFix weight computation in jit (#47470)
Omair Majid [Wed, 3 Feb 2021 22:01:45 +0000 (17:01 -0500)]
Fix weight computation in jit (#47470)

This appears to be a typo. weight1 is from dsc1 and weight2 is from
dsc2. If we checking whether dsc1 is a register arg, we should be
adjusting weight1, not weight2.

3 years agoAdd missing docs for ConcurrentDictionary.Comparer (#47807)
Eirik Tsarpalis [Wed, 3 Feb 2021 21:07:03 +0000 (21:07 +0000)]
Add missing docs for ConcurrentDictionary.Comparer (#47807)

* add missing docs for ConcurrentDictionary.Comparer

* Update src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentDictionary.cs

Co-authored-by: Stephen Toub <stoub@microsoft.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
3 years agoAdd rich nav specific pipeline to enable Rich Navigation (#43374)
Jessica Petty [Wed, 3 Feb 2021 20:20:06 +0000 (12:20 -0800)]
Add rich nav specific pipeline to enable Rich Navigation (#43374)

* Add new Rich Nav specific pipeline, temporarily enable RichNav in CI

* Temporarily fix template issue in arcade to test build

* Fix typo in build-job.yml

* Add Rich Nav package feed

* Thread 'enableRichCodeNavigation' parameter through, respond to PR feedback

* Remove change from templates

* Simplify templating and building after insight from Santiago

* Respond to pull request feedback from Santiago

* Specify environment manually, enable for allConfigurations

* Flow environment parameter through to build script

* HACK HACK HACK: replace normal CI with Rich Nav

* Increase timeout to 4 hours

* Empty commit to force another build

* Push empty commit to re-trigger build

* empty commit to force build

* fix build pipeline - remove script that no longer exists

* Add missing task

* Try changing the platform that is building this

* Update Rich Nav pipeline, revert changes to runtime pipeline

3 years agoAdd Mac Catalyst RIDs (#47645)
Steve Pfister [Wed, 3 Feb 2021 19:36:21 +0000 (14:36 -0500)]
Add Mac Catalyst RIDs (#47645)

First step in being able to build different mac catalyst runtimes

Resolves https://github.com/dotnet/runtime/issues/47518

3 years agoUpdates for conditional expression type breaking change (#47738)
Charles Stoner [Wed, 3 Feb 2021 19:02:41 +0000 (11:02 -0800)]
Updates for conditional expression type breaking change (#47738)

3 years agoBug fix issue 30351 (#46436)
Newell Clark [Wed, 3 Feb 2021 18:35:57 +0000 (13:35 -0500)]
Bug fix issue 30351 (#46436)

Added overrides for async methods on IndentedTextWriter that call the respective async methods on the underlying TextWriter.

3 years agoAdd ability to update the friend assembly set of an assembly with Reflection Emit...
David Wrighton [Wed, 3 Feb 2021 18:20:05 +0000 (10:20 -0800)]
Add ability to update the friend assembly set of an assembly with Reflection Emit (#47784)

- Add routine/lock for updating friend assemblies
- Unify all assembly handling custom attribute updates in the runtime
  - This adjusts the handling of the DebuggableAttribute, which in the past would have worked even if it was applied to anything via the CustomAttributeBuilder apis

Co-authored-by: Krzysztof Wicher <kwicher@microsoft.com>
3 years agoAdded ConcurrentDictionary.Comparer property (#47787)
Sergei Papikian [Wed, 3 Feb 2021 16:56:10 +0000 (19:56 +0300)]
Added ConcurrentDictionary.Comparer property (#47787)

* fix #31350

* fix ref file

* fix getter

* added tests

3 years agoVector.As<TFrom, TTo> (#47150)
Huo Yaoyuan [Wed, 3 Feb 2021 15:21:39 +0000 (23:21 +0800)]
Vector.As<TFrom, TTo> (#47150)

* Implement Vector.As using Unsafe.As.

* Ref source for Vector.As.

* Mark managed impl with intrinsic and aggressive inlining.

* Hwintrinsic definition

* Hwintrinsic impl

* Add missing break.

* Make extension method.

* Add test for unsupported As types.

* Add test for op_explicit and cast.

* Reorder intrinsic checks.

3 years agoFix throw decl for math functions (#47687)
Adeel Mujahid [Wed, 3 Feb 2021 12:59:39 +0000 (14:59 +0200)]
Fix throw decl for math functions (#47687)

3 years ago[AOT] Make native linker name configurable (#47747)
Marek Habersack [Wed, 3 Feb 2021 11:03:59 +0000 (12:03 +0100)]
[AOT] Make native linker name configurable (#47747)

Context: https://github.com/android/ndk/wiki/Changelog-r22#announcements
Context: https://github.com/xamarin/xamarin-android/pull/5475
Context: https://github.com/mono/mono/pull/20814

This commit fixes a problem where the AOT compiler hard-codes the native
linker executable name to a platform-specific value but such an
executable does not exist in the toolchain being used, thus making the
AOT compiler fail to link the final binary.

The specific use case here is the new Android NDK r22 which not only
deprecates GNU binutils, but also removes architecture-prefixed `ld`
binary (e.g. `aarch64-linux-android-ld` no longer exists). Instead, the
NDK provides a non-prefixed `ld` binary and two prefixed ones:
`$arch-ld.gold` and `$arch-ld.bfd`. However, since the AOT compiler
hardcodes `ld` as the linker name on Linux systems, the AOT compilation
fails when attempting to link the final executable. Which, in turn,
breaks some Xamarin.Android AOT tests.

This commit fixes the issue by adding a new `ld-name` option to the AOT
compiler allowing one to specify just the name of the linker binary to
use. The rest of the toolchain mechanics doesn't change.

3 years agoAdd missing logging to gtFoldExpr (#47757)
SingleAccretion [Wed, 3 Feb 2021 07:54:33 +0000 (10:54 +0300)]
Add missing logging to gtFoldExpr (#47757)

* Add missing logging to the folding functions

* Use DISPTREE and JITDUMP in more places

3 years agoFix race condition reloading file configuration (#47503)
Frank Racis [Wed, 3 Feb 2021 07:39:08 +0000 (02:39 -0500)]
Fix race condition reloading file configuration (#47503)

Data was being cleared before file was reloaded, causing gap where
invalid configuration could be read.   Now data is only cleared if
reload fails.

Fix #36244