platform/upstream/dotnet/runtime.git
4 years ago[mono] iOS Test runner (#34976)
Egor Bogatov [Fri, 17 Apr 2020 12:55:41 +0000 (15:55 +0300)]
[mono] iOS Test runner (#34976)

4 years agoUpdate Microsoft.NET.HostModel to reference System.Text.Json 5.0 (#35024)
Eric Erhardt [Fri, 17 Apr 2020 12:23:26 +0000 (07:23 -0500)]
Update Microsoft.NET.HostModel to reference System.Text.Json 5.0 (#35024)

Microsoft.Extensions.DependencyModel and Microsoft.NET.HostModel are both used on .NET Framework's MSBuild by dotnet/sdk's Microsoft.NET.Build.Tasks assembly. However, they are referencing differnet versions of System.Text.Json, which is causing file load errors on .NET Framework.

Fixing this by updating Microsoft.NET.HostModel to use a 5.0 version.

Fix #35006

4 years agoResetting _waitForCompletion to null was removed from DuplexContent (#35010)
Alexander Nikolaev [Fri, 17 Apr 2020 11:52:09 +0000 (13:52 +0200)]
Resetting _waitForCompletion to null was removed from DuplexContent (#35010)

`_waitForCompletion` gets reset to null in `DuplexContent.Complete` and `Fail` which leads to race condition with `SerializeToStreamAsync`. This reset seems redundant since `_waitForCompletion` is always unconditionally initialized on each call to `SerializeToStreamAsync`. This PR removes that reset logic.

Fixes #33141

4 years agoMerge pull request #35058 from janvorli/fix-vsd-stub-nullref-handling
Jan Vorlicek [Fri, 17 Apr 2020 10:53:16 +0000 (12:53 +0200)]
Merge pull request #35058 from janvorli/fix-vsd-stub-nullref-handling

Fix VSD stub null reference handling on amd64

4 years ago[aot] Fix the support for separate aot data files. Reorder the MONO_AOT_TABLE constan...
monojenkins [Fri, 17 Apr 2020 09:41:02 +0000 (05:41 -0400)]
[aot] Fix the support for separate aot data files. Reorder the MONO_AOT_TABLE constants so they match the ordering in MonoAotFileInfo. (#35064)

Co-authored-by: vargaz <vargaz@users.noreply.github.com>
4 years agoFix an incorrect CSE case with struct retyping. (#34676)
Sergey Andreenko [Fri, 17 Apr 2020 08:37:52 +0000 (01:37 -0700)]
Fix an incorrect CSE case with struct retyping. (#34676)

* Fix old printing issues.

* add a repro test that doesn't require crossgen2.

* Check that all `ADDR` sources are marked as DONT_CSE.

* Fix text(no size) diffs found by SPMI.

* Add a question/comment.

* Update src/coreclr/src/jit/compiler.hpp

Co-Authored-By: Eugene Rozenfeld <erozen@microsoft.com>
* Delete an optimization that was not proved to be correct.

* Delete useless code.

* Revert "Fix text(no size) diffs found by SPMI."

This reverts commit cd24383210b9ed22f7ea3640005217021f9fbd63.

4 years agoFix for PInvoke behavior in composite mode (#35027)
Tomáš Rylek [Fri, 17 Apr 2020 06:50:40 +0000 (08:50 +0200)]
Fix for PInvoke behavior in composite mode (#35027)

Thanks to Fadi's help I finally identified the root problem with
Crossgen2 PInvokes in composite mode: we weren't setting the
READYTORUN_FLAG_NONSHARED_PINVOKE_STUBS flag on the component
assembly R2R headers and that's what the runtime is looking at.

I believe it's both easier and more general to fix this in the compiler
as it comes for free whereas redirecting the runtime to always look
at the composite header would requite at least an additional
indirection. Also we could theoretically use different settings for
different component assemblies even though my impression from Fadi's
detailed explanation was that we basically always want to use
non-shared PInvokes in Crossgen2.

Thanks

Tomas

4 years agofix endless loop in GetActiveUdpListeners (#35078)
Tomas Weinfurt [Fri, 17 Apr 2020 04:50:14 +0000 (21:50 -0700)]
fix endless loop in GetActiveUdpListeners (#35078)

4 years agoMerge pull request #34933 from monojenkins/sync-pr-19535-from-mono
Larry Ewing [Fri, 17 Apr 2020 03:39:10 +0000 (22:39 -0500)]
Merge pull request #34933 from monojenkins/sync-pr-19535-from-mono

[wasm][debugger] Show signature for delegate, or target, if available…

4 years agoFix Http.Json serialization performance by using static options (#35040)
David Cantu [Fri, 17 Apr 2020 02:59:13 +0000 (19:59 -0700)]
Fix Http.Json serialization performance by using static options (#35040)

4 years agoGet the IUnknown identity of COM instance for global ComWrappers (#35032)
Elinor Fung [Fri, 17 Apr 2020 02:20:27 +0000 (19:20 -0700)]
Get the IUnknown identity of COM instance for global ComWrappers (#35032)

4 years agoJIT: fix recursive inline checking (#35020)
Andy Ayers [Thu, 16 Apr 2020 22:39:20 +0000 (15:39 -0700)]
JIT: fix recursive inline checking (#35020)

We were not setting `m_Code` in the root inline context, and so were
sometimes allowing one level of recursive inlining.

4 years ago[jit] Add support for fconv.ovf.*.un opcodes (#34949)
Vlad Brezae [Thu, 16 Apr 2020 22:38:34 +0000 (01:38 +0300)]
[jit] Add support for fconv.ovf.*.un opcodes (#34949)

* [jit] Handle fconv_ovf_un opcodes

We handle them the same way as non _un versions, by doing a float to int64 conversion followed by a simple integer conversion to the final size.

* [jit] Remove no longer needed emulation

We no longer need to emulate fconv_ovf_u8_un and rconv_ovf_u8_un since we reuse the mechanism for non _un versions (which uses just the emulation for fconv_ovf_u8 and rconv_ovf_u8)

Partly reverts https://github.com/mono/mono/commit/de5dca22649ae581085863b0935f94eff4483e55.

* Enable some mono tests

* [jit] Properly handle conv.r.un applied to r4

Fixes src/coreclr/tests/src/JIT/Regression/VS-ia64-JIT/V2.0-Beta2/b309576/bug2.il which was silently failing before

4 years agoAllow known values for HttpHeaderType.Custom in KnownHeaders (#35003)
Stephen Toub [Thu, 16 Apr 2020 21:42:44 +0000 (17:42 -0400)]
Allow known values for HttpHeaderType.Custom in KnownHeaders (#35003)

4 years agoAdd OSPlatform.Browser and Architecture.Wasm (#34781)
Larry Ewing [Thu, 16 Apr 2020 20:55:45 +0000 (15:55 -0500)]
Add OSPlatform.Browser and Architecture.Wasm (#34781)

4 years ago[wasm][debugger] Show signature for delegate, or target, if available…
radical [Thu, 16 Apr 2020 19:37:50 +0000 (19:37 +0000)]
[wasm][debugger] Show signature for delegate, or target, if available…

… (#19505)

* [wasm][debugger] Show signature for delegate, or target, if available

- As object properties, we return a `Target` which has the signature of
the delegate target.

Fixes https://github.com/mono/mono/issues/19382

* [wasm][debugger] Some tidying up

* [wasm][debugger] Remove unused `sig_desc`

* [wasm][debugger] Simplify code, avoid extra allocations

.. as suggested by @lewing

(cherry picked from commit 4eca12e794764da1a0646e77af5b8c60a2e2767a)

4 years agoRemove explicit null check for VSD from JIT for 64 bit targets
Jan Vorlicek [Thu, 16 Apr 2020 19:26:30 +0000 (21:26 +0200)]
Remove explicit null check for VSD from JIT for 64 bit targets

4 years agoFix missing semicolon
Jan Vorlicek [Thu, 16 Apr 2020 19:16:56 +0000 (21:16 +0200)]
Fix missing semicolon

4 years agoMake the -Wsometimes-uninitialized into an error. (#34965)
Zoltan Varga [Thu, 16 Apr 2020 16:32:32 +0000 (12:32 -0400)]
Make the -Wsometimes-uninitialized into an error. (#34965)

4 years agoFix swapped Unix and Windows instruction codes
Jan Vorlicek [Thu, 16 Apr 2020 15:56:05 +0000 (17:56 +0200)]
Fix swapped Unix and Windows instruction codes

4 years ago[wasm][debugger] Fix typo and silence output (#35041)
monojenkins [Thu, 16 Apr 2020 15:53:08 +0000 (11:53 -0400)]
[wasm][debugger] Fix typo and silence output (#35041)

Co-authored-by: lewing <lewing@users.noreply.github.com>
4 years ago[debugger] Remove assert when the DebuggerTypeProxy cannot be instantiated (#34966)
monojenkins [Thu, 16 Apr 2020 13:17:12 +0000 (09:17 -0400)]
[debugger] Remove assert when the DebuggerTypeProxy cannot be instantiated (#34966)

Remove the assert because we don't need to stop the debug if we cannot create the object when calling the constructor using invoke_method, if it's a DebuggerTypeProxy, we are not able to show the value of the DebuggerTypeProxy, but we still can show the Raw View, if it's not the case of DebuggerTypeProxy, we just cannot evaluate this expression, but we can continue the debug session.

Fix mono/mono#19492

Co-authored-by: thaystg <thaystg@users.noreply.github.com>
4 years agoCreating a runtime pack artifacts directory in the libraries build (#34662)
Mitchell Hwang [Thu, 16 Apr 2020 12:49:20 +0000 (08:49 -0400)]
Creating a runtime pack artifacts directory in the libraries build (#34662)

This change populates a runtime pack directory structure in artifcats/bin.  This is so that we can support running libraries tests for iOS and Android.

4 years agoAdd regression test
Jan Vorlicek [Thu, 16 Apr 2020 09:39:44 +0000 (11:39 +0200)]
Add regression test

4 years agoRemove double lookups for virtual stubs
Jan Vorlicek [Thu, 16 Apr 2020 09:09:37 +0000 (11:09 +0200)]
Remove double lookups for virtual stubs

4 years agoMake the ajdustment unconditional for all architectures
Jan Vorlicek [Thu, 16 Apr 2020 09:03:42 +0000 (11:03 +0200)]
Make the ajdustment unconditional for all architectures

4 years agoFix null reference handling in VSD stubs on amd64
Jan Vorlicek [Thu, 16 Apr 2020 08:53:48 +0000 (10:53 +0200)]
Fix null reference handling in VSD stubs on amd64

When null "this" pointer is passed to the VSD dispatch and resolve
stubs on amd64, it is not converted to NullReferenceException and it
generates AccessViolationException instead, tearing down the process.
This happens due to the fact that AdjustContextForVirtualStub always
returns FALSE on amd64. It behaves correctly on ARM, x86 and ARM64.
This issue has been present at least since .NET Framework 4.5.

This change fixes it by implementing the AdjustContextForVirtualStub for
amd64 too. I've also found that we were doing this adjustment for ARM
and x86 only at some places while ARM64 needs it too. So I've made it
unconditional for all architectures at all places.

4 years agoimprove TLS perf on macOS (#32338)
Tomas Weinfurt [Thu, 16 Apr 2020 04:54:01 +0000 (21:54 -0700)]
improve TLS perf on macOS (#32338)

* improve TLS perf on macOS

* feedback from review

* feedback from review

* remove unnecesary locking

Co-authored-by: Tomas Weinfurt <furt@Shining.local>
4 years agoPrevent 'in' folder from being created in output directory (#34979)
Juan Hoyos [Thu, 16 Apr 2020 03:03:45 +0000 (20:03 -0700)]
Prevent 'in' folder from being created in output directory (#34979)

4 years agoAdditional nullable annotation on IPAddress (#34698)
Kevin Jones [Thu, 16 Apr 2020 02:43:53 +0000 (22:43 -0400)]
Additional nullable annotation on IPAddress (#34698)

* Additional nullable annotation on IPAddress.

* TryParse for System.Net.Http

* TryParse for System.Runtime.Numerics

* CoreLib TryParse nullable annotations

* Update Runtime reference source.

* NotNullWhen for Guid format.

* NotNullWhen for DateTime{Offset} format parameters

* Correct format parameter nullability for TimeSpan.

* Update reference source.

Co-authored-by: Stephen Toub <stoub@microsoft.com>
4 years agoPass $(officialBuildIdArg) during build phase of Mono (Closes: #34993) (#35002)
Jo Shields [Wed, 15 Apr 2020 22:29:31 +0000 (18:29 -0400)]
Pass $(officialBuildIdArg) during build phase of Mono (Closes: #34993) (#35002)

4 years agomono.proj: use --build-id=sha1 (#34939)
Alexander Köplinger [Wed, 15 Apr 2020 22:02:09 +0000 (00:02 +0200)]
mono.proj: use --build-id=sha1 (#34939)

To mirror what the coreclr/libraries builds are using

4 years agoRemove unnecessary MemoryStream allocation from ByteArrayContent (#35005)
Stephen Toub [Wed, 15 Apr 2020 20:52:22 +0000 (16:52 -0400)]
Remove unnecessary MemoryStream allocation from ByteArrayContent (#35005)

Constructing a ByteArrayContent (or anything that derives from it, like StringContent) or a ReadOnlyMemoryContent  proactively allocates a MemoryStream that it stores as the _bufferedContent on the base HttpContent.  But the 99.99% use case for ByteArrayContent is as a request payload, and this _bufferedContent isn't used for that.  The only time this would be used is if a developer created a ByteArrayContent and then explicitly got the stream from it, e.g. via GetStreamAsync, in which case we're no worse off by doing the creation lazily.  This PR just deletes the unnecessary code / allocation.

4 years agoFix some flag uses (#34969)
Carol Eidt [Wed, 15 Apr 2020 20:02:20 +0000 (13:02 -0700)]
Fix some flag uses (#34969)

* Fix some flag uses

4 years agoScript changes enabling composite R2R build with shared framework (#34661)
Tomáš Rylek [Wed, 15 Apr 2020 19:39:33 +0000 (21:39 +0200)]
Script changes enabling composite R2R build with shared framework (#34661)

4 years agoAdd FreeBSD-specific SONAME versions to portable OpenSSL probing.
Jason Pugsley [Wed, 15 Apr 2020 17:27:14 +0000 (03:27 +1000)]
Add FreeBSD-specific SONAME versions to portable OpenSSL probing.

The version of OpenSSL installed will depend on the version of FreeBSD and
whether OpenSSL has been updated from the FreeBSD Ports collection.

The order of attempted loading is:
    libssl.so.11 (ports)
    libssl.so.111 (base FreeBSD using OpenSSL 1.1.1)
    libssl.so.8 (base FreeBSD using OpenSSL 1.0.2)

4 years agoClose timeout increased to 20 seconds (#34999)
Alexander Nikolaev [Wed, 15 Apr 2020 17:16:45 +0000 (19:16 +0200)]
Close timeout increased to 20 seconds (#34999)

CloseOutputAsync_Cancel_Success tests are failing due to 2 reasons:
1. `Assert` expecting the state to be `Aborted`, finds it's `Open` - most frequent
2. Connection gets forcibly terminated on a connect attempt

However, the second failure type is not specific to this test because it affects many tests in different types during the same time. Thus, it seems to be an infra issue.
This PR fixes only the first failure type by increasing Close operation timeout.
Fixes #1725

4 years agoSimplify KnownHeaders lookup in SocketsHttpHandler (#34974)
Stephen Toub [Wed, 15 Apr 2020 17:13:37 +0000 (13:13 -0400)]
Simplify KnownHeaders lookup in SocketsHttpHandler (#34974)

* Simplify KnownHeaders lookup

* Update src/libraries/System.Net.Http/src/System/Net/Http/Headers/KnownHeaders.cs

Co-Authored-By: David Shulman <david.shulman@microsoft.com>
Co-authored-by: David Shulman <david.shulman@microsoft.com>
4 years ago[metadata] Identify when a field is overlapped by a non-object field (#34745)
monojenkins [Wed, 15 Apr 2020 16:09:03 +0000 (12:09 -0400)]
[metadata] Identify when a field is overlapped by a non-object field (#34745)

- Fix class loader to identify when the class has a field overlapped by a non-object field.
- Fix method-to-ir to forward the TypeLoad error.
- Fix transform to forward the TypeLoad error.
- Fix unit test that has a class with a field that is overlapped by a non-object field.

Fixes https://github.com/dotnet/runtime/issues/34388

Co-authored-by: thaystg <thaystg@users.noreply.github.com>
4 years agoFix Span length in TryFormatUInt64Slow (#34840)
Andrew Au [Wed, 15 Apr 2020 16:00:28 +0000 (09:00 -0700)]
Fix Span length in TryFormatUInt64Slow (#34840)

* Make the Span length right

* Adding a regression test for the span problem

* Avoid dependency on machine locale

* Using customFormat

4 years agoAdds AssertContentsAgainstJsonNet to avoid unnecessary calls (#34931)
Marcus Turewicz [Wed, 15 Apr 2020 13:41:07 +0000 (23:41 +1000)]
Adds AssertContentsAgainstJsonNet to avoid unnecessary calls (#34931)

* Adds AssertContentsAgainstJsonNet to avoid unnecessary calls

Fixes #32351

* Remove temporary hack comments

4 years agoFix pal_io.c code based on code review suggestions (#34970)
Omair Majid [Wed, 15 Apr 2020 12:23:20 +0000 (08:23 -0400)]
Fix pal_io.c code based on code review suggestions (#34970)

These suggestions were provided by @lpereira on
https://github.com/dotnet/corefx/pull/42900

4 years agoFix section reference (#34992)
Marek Safar [Wed, 15 Apr 2020 12:20:46 +0000 (14:20 +0200)]
Fix section reference (#34992)

4 years agoAdd wasm cross compiler to the mono build. (#34935) (#34972)
Zoltan Varga [Wed, 15 Apr 2020 09:34:16 +0000 (05:34 -0400)]
Add wasm cross compiler to the mono build. (#34935) (#34972)

4 years agoSystem.Net.Http ref sources regenerated. (#34961)
Marie Píchová [Wed, 15 Apr 2020 08:57:27 +0000 (10:57 +0200)]
System.Net.Http ref sources regenerated. (#34961)

4 years agoFix missing array ctor(int32,int32) test failures. (#34764)
monojenkins [Wed, 15 Apr 2020 08:44:56 +0000 (04:44 -0400)]
Fix missing array ctor(int32,int32) test failures. (#34764)

According to ECMA, VES should add the following methods to arrays:

* A constructor that takes a sequence of int32 arguments, one for each dimension of the array, that specify the number of elements in each dimension beginning with the first dimension. A lower bound of zero is assumed.

* A constructor that takes twice as many int32 arguments as there are dimensions of the array. These arguments occur in pairs—one pair per dimension—with the first argument of each pair specifying the lower bound for that dimension, and the second argument specifying the total number of elements in that dimension.

* Get.

* Set.

* Address.

In Mono's case we only added the `ctor (int32, int32)` for rank 1 arrays if they were "jagged" array. Array with rank 1-4 executed an optimized code path always using the one int32 per rank constructor.

This doesn't work in cases where the array is constructed using both a length and a lower bound pattern, like:

`newobj instance void int32[10000...10005]::.ctor(int32, int32)`

this would trigger a method not found exception, since its not a jagged array, Mono wouldn't add the `ctor(int32, int32)` constructor for this type.

Fix will make sure we follow ECMA's definition of this and fix code to use right instance methods of arrays. Code also adds an assert to trap if a jagged array is created through this code path
(shouldn't happen) since current implementation would have handled it as
a 2 ranked array.

Fix also adds several tests into iltests.il allocating different variations of arrays using lower/upper bounds and validating length, rank, upper/lower bounds of allocated arrays.

Co-authored-by: lateralusX <lateralusX@users.noreply.github.com>
4 years agoRemove outdated CoreFx.Private.TestUtilities.Unicode references (#34981)
Levi Broderick [Wed, 15 Apr 2020 07:05:18 +0000 (00:05 -0700)]
Remove outdated CoreFx.Private.TestUtilities.Unicode references (#34981)

* Remove outdated CoreFx.Private.TestUtilities.Unicode references

* Update System.Globalization.Extensions.Nls.Tests dependencies

* Add System.Runtime.Nls.Tests to System.Runtime.sln

* Add missing .sln entry

4 years agoFix PrinterSettings.SupportsColor to use the right PInvoke (#34651)
Santiago Fernandez Madero [Wed, 15 Apr 2020 01:10:28 +0000 (18:10 -0700)]
Fix PrinterSettings.SupportsColor to use the right PInvoke (#34651)

* Fix PrinterSettings.SupportsColor to use the right PInvoke

* PR Fedback

* Fix test

* PR Feedbak

4 years agoFix NullReference on JsonExtensionData (#34569)
Reza Jooyandeh [Tue, 14 Apr 2020 23:55:10 +0000 (16:55 -0700)]
Fix NullReference on JsonExtensionData (#34569)

* Fix NullReference on JsonExtensionData

Fix NullReferenceException on serialization when JsonExtensionData dictionary has a custom JsonConverter.

Fix #32903

* Add test for converters declared through attribute

* Ensure custom serialization is not used for reading JsonExtensionData

* Cover all the combinations in tests

4 years agoSync cgroup v2 in libraries with coreclr (#34665)
Omair Majid [Tue, 14 Apr 2020 22:51:31 +0000 (18:51 -0400)]
Sync cgroup v2 in libraries with coreclr (#34665)

This commit brings in two changes from coreclr to libraries:

1. https://github.com/dotnet/runtime/pull/980

   "Fix named cgroup handling in docker"

   This fixes getting cgroup information for named cgroups inside containers.

2. https://github.com/dotnet/runtime/pull/34334

   "Add cgroup v2 support to coreclr"

   This is essentially the same change pushed to corefx (now libraries)
   to add cgroupv2 support, but this newer coreclr change has one major
   difference: it determines whether the system is using cgroup v1 or
   cgroup v2 once, and then explicitly uses that (only). This avoids
   issues on systems where both cgroup v1 and v2 are enabled, (but only
   one is being used by default).

4 years agoHttpClientMiniStressTest: Disable parallelism (#34941)
TalAloni [Tue, 14 Apr 2020 22:51:14 +0000 (01:51 +0300)]
HttpClientMiniStressTest: Disable parallelism (#34941)

* Update HttpClientMiniStressTest.cs

Currently, it's possible for 4 different instances of SingleClient_ManyGets_Sync to run in parallel, each using up to 2 x 5000 sockets, totaling in 40,000 sockets. way beyond the original intent of testing 5000 client instances. since this additional stress is random in nature, I believe it is not intentional.
This change make sure that those tests will not run in parallel, this avoids some issues I've encountered in some systems.

* HttpClientMiniStressTest: Disable Parallelism: Used CollectionAttribute on the base class

4 years agoUpdate issues.targets to baseline recent Crossgen2 bugs (#34917)
Tomáš Rylek [Tue, 14 Apr 2020 22:17:52 +0000 (00:17 +0200)]
Update issues.targets to baseline recent Crossgen2 bugs (#34917)

I have also expanded the timeout from 150 to 200 minutes as
my several recent attempts to run the runtime-coreclr crossgen2
pipeline timed out on Windows.

Thanks

Tomas

4 years agoCall `SetParentAssembly` when binding from native manifest (#34924)
Simon Nattress [Tue, 14 Apr 2020 22:14:42 +0000 (15:14 -0700)]
Call `SetParentAssembly` when binding from native manifest (#34924)

In large version bubble mode, Crossgen2 uses the native manifest table to encode assembly references. When a referenced module is decoded and an `AssemblySpec` is created, set the parent assembly for the bind.

Fixes Loader\binding\tracing\BinderTracingTest.Basic regression, which checks parent assembly is correctly set in the bind result.

4 years agoFix for runtime constraint checking for default interface methods (#34889)
Manish Godse [Tue, 14 Apr 2020 22:04:30 +0000 (15:04 -0700)]
Fix for runtime constraint checking for default interface methods (#34889)

* pass in InstantiationContext to check constraints.

* add a test

4 years agoImprove crossgen HWIntrinsics handling (#34849)
Clinton Ingram [Tue, 14 Apr 2020 20:59:56 +0000 (13:59 -0700)]
Improve crossgen HWIntrinsics handling (#34849)

* improve crossgen HWIntrinsics handling

* use fIsPlatformSubArchitecture for all x64 checks

4 years agoUse ICU on Windows when available (#34645)
Santiago Fernandez Madero [Tue, 14 Apr 2020 20:45:15 +0000 (13:45 -0700)]
Use ICU on Windows when available (#34645)

* Use ICU when available on Windows

* Fix System.Globalization tests

* Fix System.Globalization.Extensions tests

* Fix System.Runtime tests

* Add System.Globalization.Nls.Tests to test UseNls runtime switch

* Add System.Globalization.Extensions.Nls.Tests to force them to run on NLS

* Add System.Runtime.Nls.Tests.csproj to test Nls behavior

* Fix left over from GlobalizationTestMode

* PR Feedback

* PR Feedback 2

* Fix mono build

* Fix failing tests

* Fix typo

* Fix bad merge in projitems for tvOS

* PR Feedback 3

* PR Feedback 4

4 years agoAdd some more common response headers to KnownHeaders (#34922)
Stephen Toub [Tue, 14 Apr 2020 20:17:36 +0000 (16:17 -0400)]
Add some more common response headers to KnownHeaders (#34922)

4 years agoFix an uninitialized variable error introduced by #34877. (#34951)
Zoltan Varga [Tue, 14 Apr 2020 19:40:05 +0000 (15:40 -0400)]
Fix an uninitialized variable error introduced by #34877. (#34951)

4 years agoRevert "Add wasm cross compiler to the mono build. (#34935)" (#34968)
Santiago Fernandez Madero [Tue, 14 Apr 2020 19:39:05 +0000 (12:39 -0700)]
Revert "Add wasm cross compiler to the mono build. (#34935)" (#34968)

This reverts commit b134994b40eaecd98051362f076be4e23f904944.

4 years agoAdd JsonIncludeAttribute & support for non-public accessors (#34675)
Layomi Akinrinade [Tue, 14 Apr 2020 18:24:23 +0000 (14:24 -0400)]
Add JsonIncludeAttribute & support for non-public accessors (#34675)

* Add JsonIncludeAttribute & support for non-public property accessors

* Address review feedback

* Remove extra reflection call for non-public properties

4 years agouse curl with OpenSSL backend on 16.04-cross based containers (#34909)
Tomas Weinfurt [Tue, 14 Apr 2020 16:51:39 +0000 (09:51 -0700)]
use curl with OpenSSL backend on 16.04-cross based containers (#34909)

* use curl with OpenSSL backend

* update docs

4 years agoAdd wasm cross compiler to the mono build. (#34935)
Zoltan Varga [Tue, 14 Apr 2020 16:39:42 +0000 (12:39 -0400)]
Add wasm cross compiler to the mono build. (#34935)

* Add wasm cross compiler to the mono build.

* Address comments.

* Fix typo

Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
4 years agoSingle-File: Add a test case with Resource Assemblies (#34736)
Swaroop Sridhar [Tue, 14 Apr 2020 15:44:50 +0000 (08:44 -0700)]
Single-File: Add a test case with Resource Assemblies (#34736)

Add a test to verify that resolution of deps.json files directly from bundle succeeds when there are resource assemblies.

4 years agoBetter codegen / perf form Math.Max and Math.Min (#33851)
Günther Foidl [Tue, 14 Apr 2020 14:58:39 +0000 (16:58 +0200)]
Better codegen / perf form Math.Max and Math.Min (#33851)

* Forced inline of Math.Min/Max double/float

* Math.Min split in fast and slow

* Math.Min another try

* Added more tests to Math

* Picked variant "MinReorder"

4 years ago[mono] Add iOS app builder project (#34563)
Egor Bogatov [Tue, 14 Apr 2020 12:37:11 +0000 (15:37 +0300)]
[mono] Add iOS app builder project (#34563)

* Add iosAppBuilderTasks project

* Escape spaces in ProjectName

* Remove add_definitions(-DDEVICE)

* Fix typoe Buillder -> Builder, also build the task as part of mono runtime

* Rewrite HelloiOS sample (to use the task)

* Fix build

* Clean up

* Add license headers

* Clean up

* dont build app if provisionig is not set

* Add ExcludeFromAppDir input argument, remove stopwatch

* Drop DOTNET_SYSTEM_GLOBALIZATION_INVARIANT

* Address feedback

* Validate input

* fix build

* Disable GenerateXcodeProject by default

* move to mono/msbuild

* Add OutputDirectory property

* Fix sample

* Minor improvements

* fix build issues

4 years agoFix infrequent/random crashes on Windows x64 due to use of GC forwarded objects....
monojenkins [Tue, 14 Apr 2020 11:46:55 +0000 (07:46 -0400)]
Fix infrequent/random crashes on Windows x64 due to use of GC forwarded objects. (#34694)

Hard to repro and very infrequent crash. Have been analyzing a couple of crash dumps from retail devices getting different crashes related to vtable "corruption" on Windows x64. After some deeper analysis it turns out the object instance has been forwarded by GC (object vtable pointers lowest bit set to 1), but object still holds tagged vtable. This will then cause misaligned reads, getting back random values and pointers from vtable on next object access.

After some further analyzing it turns out that LLVM codegen and some specific generic vt arrays lowering can cause optimized mem copies using XMM registers. I have also identified scenarios where vt copies gets lowered into a c-runtime memcpy that in turn uses XMM registers as an optimization. Since Windows x64 currently don't include XMM registers in context, any references in XMM registers will not be visible and pinned by GC, meaning that they will point to potentially
forwarded objects after completing GC, restarting threads, leading to these infrequent random crashes.

Fix includes xmm0-xmm15 into MonoContext on Windows x64, making sure GC will see all references that could be held in those registers, regardless if getting into those registers due to LLVM optimization or other native code, like memcpy.

Co-authored-by: lateralusX <lateralusX@users.noreply.github.com>
4 years agoMerge pull request #34754 from monojenkins/sync-pr-19490-from-mono
Ankit Jain [Tue, 14 Apr 2020 05:21:40 +0000 (01:21 -0400)]
Merge pull request #34754 from monojenkins/sync-pr-19490-from-mono

[wasm][debugger] Improve some valuetype visualization

4 years ago[wasm] Disable the AOT cache check on wasm as well. (#34880)
Zoltan Varga [Tue, 14 Apr 2020 04:55:15 +0000 (00:55 -0400)]
[wasm] Disable the AOT cache check on wasm as well. (#34880)

4 years ago[runtime] Try to load assemblies from bundles on netcore before trying other methods...
Zoltan Varga [Tue, 14 Apr 2020 02:23:38 +0000 (22:23 -0400)]
[runtime] Try to load assemblies from bundles on netcore before trying other methods, the ALC might not be initialized yet. (#34877)

4 years agoPort Native libraries to SunOS (#34867)
Adeel Mujahid [Tue, 14 Apr 2020 01:20:44 +0000 (04:20 +0300)]
Port Native libraries to SunOS (#34867)

4 years agoUpdate ownership of Buffers and Drawing (#34928)
Jeff Handley [Tue, 14 Apr 2020 00:31:36 +0000 (17:31 -0700)]
Update ownership of Buffers and Drawing (#34928)

4 years agoUpdate ELT Hooks - tail calls.md (#34926)
David Mason [Tue, 14 Apr 2020 00:31:19 +0000 (17:31 -0700)]
Update ELT Hooks - tail calls.md (#34926)

4 years agoIssue incorrect exception message (#34416)
mrj001 [Mon, 13 Apr 2020 23:26:38 +0000 (17:26 -0600)]
Issue incorrect exception message (#34416)

* Created unit test to trigger incorrect error message.  This also covers a previously uncovered branch.

* Added string resource for the fractionDigits error, and changed the error message being thrown when the derived type has a larger fractionDigits value than the parent type.

4 years agoenables test (#34911)
Anirudh Agnihotry [Mon, 13 Apr 2020 22:34:41 +0000 (15:34 -0700)]
enables test (#34911)

4 years ago[mono] Implement Sse41, Pclmulqdq, Aes and enable Sse41 intrinsics (#34866)
Egor Bogatov [Mon, 13 Apr 2020 21:37:05 +0000 (00:37 +0300)]
[mono] Implement Sse41, Pclmulqdq, Aes and enable Sse41 intrinsics  (#34866)

* Implement Sse41, Pclmulqdq and Aes, enable Sse42.

4 years agoReimplement System.Net.Http's ObjectCollection<T> to reduce allocation / interface...
Stephen Toub [Mon, 13 Apr 2020 21:19:41 +0000 (17:19 -0400)]
Reimplement System.Net.Http's ObjectCollection<T> to reduce allocation / interface dispatch (#34902)

The current implementation of `ObjectCollection<T>` wraps a `List<T>` and derives from `Collection<T>`.  This means that every `ObjectCollection<T>` allocated also involves an extra `List<T>` object (and its array if items are added to it) as well as multiple levels of indirection on each operation.

We can instead just implement `ObjectCollection<T>` directly.  Since most uses end up with just a single object contained (e.g. for a `MedaTypeHeaderValue`'s `CharSet`), and since it only ever stores `T`s that are non-null classes, we can use the items field to be either a `T` or a `T[]`, optimizing for the case where a single element is stored.  In implementing it directly, we then also avoid the extra `List<T>` object allocation, as well as the interface dispatch that results from going through the `IList<T>` interface.

4 years agoCode cleanup (#34862)
Maoni Stephens [Mon, 13 Apr 2020 21:05:41 +0000 (14:05 -0700)]
Code cleanup (#34862)

made these #define's always defined -

INTERIOR_POINTERS
MARK_ARRAY (replace it with BACKGROUND_GC)
SEG_MAPPING_TABLE
GROWABLE_SEG_MAPPING_TABLE

got rid of code associated with GC_STATS, recursive_gc_sync and the following configs:
GCStressMix, GCStressStep, GCStressMaxFGCsPerBGC, GCMixLog, GCStressStart and GCStressStartAtJit.

got rid of all the unnecessary UNREFERENCED_PARAMETER
got rid of MAYBE_UNUSED_VAR

for joins, got rid of all the extra pairs of checking for #ifdef MULTIPLE_HEAPS and made code styling consistent

got rid of various other pieces of unused code and completely pointless comments.

note there is one functional change: fixed a memory leak by actually doing seg_table->delete_old_slots
when FEATURE_BASICFREEZE is defined; previously this could be leaking memory if there were more than 600
segments (which is very rare for ro segs) and it only leaks a small amount memory in that case.

Co-authored-by: Maoni Stephens <maonis@ntdev.microsoft.com>
4 years agoFix HostPolicyMock (corehost_error_writer_fn was moved) (#34903)
Egor Bogatov [Mon, 13 Apr 2020 20:33:02 +0000 (23:33 +0300)]
Fix HostPolicyMock (corehost_error_writer_fn was moved) (#34903)

4 years agofix: distinct from streams (#34918)
Bruno Garcia [Mon, 13 Apr 2020 20:32:24 +0000 (17:32 -0300)]
fix: distinct from streams (#34918)

4 years agoAdd logic for JsonIgnoreCondition[Never|WhenNull] on properties to win over global...
Layomi Akinrinade [Mon, 13 Apr 2020 19:30:00 +0000 (15:30 -0400)]
Add logic for JsonIgnoreCondition[Never|WhenNull] on properties to win over global IgnoreReadOnlyValues (#34672)

4 years agoAdd support to pass subset without arg specifier in Unix (#34844)
Santiago Fernandez Madero [Mon, 13 Apr 2020 19:22:34 +0000 (12:22 -0700)]
Add support to pass subset without arg specifier in Unix (#34844)

* Add support to pass subset without arg specifier in Unix

* PR Feedback

* Fix regex expression to match whole word

4 years agoFix bug in test regarding GC'd delegate instance. (#34901)
Aaron Robinson [Mon, 13 Apr 2020 18:22:12 +0000 (11:22 -0700)]
Fix bug in test regarding GC'd delegate instance. (#34901)

4 years agoConsole.Unix: avoid deadlock between LazyInitializer and Console.Out (#34297)
Tom Deseyn [Mon, 13 Apr 2020 17:14:12 +0000 (19:14 +0200)]
Console.Unix: avoid deadlock between LazyInitializer and Console.Out (#34297)

* Console.Unix: avoid deadlock between LazyInitializer and Console.Out

* Add assert for InternalSyncObject

* Console: use Interlocked for lazy initialization

* Cleanup unused 'using'

* Limit locking to event handlers

* Fix AllowNull -> NotNull

* Localize LazyInitializer.EnsureInitialized logic

* Remove lazy initialize delegates

* Use static local functions for initializing

* Remove unused EnsureInitializedDisposableCore

* Remove unused arg from EnsureInitializedStdInReader

* Also EnsureInitialize when not redirected

* Dispose Console Streams with their Reader/Writer

* Fix s_out -> s_error

* leaveOpen streams, fix Encoding set race

* Fix races between Encoding en initializers of In/Out/Error

* Remove EnsureInitialized

* Cleanup

* Rename static local initializer functions to EnsureInitialized

* Use lock in Input/OutputEncoding

* Rename InternalSyncObject to s_syncObject

* Cleanup space

* Fix _isStdErrRedirected -> _isStdInRedirected

* Remove space

* Improve comments

* Fix potential CancelKeyPress deadlock

* Apply suggestions from code review

Co-Authored-By: Stephen Toub <stoub@microsoft.com>
* Remove unnecessary null forgiving

* Add comment about why we're not Disposing StdInReader

* Add Volatile.Writes for Volatile.Read fields

* More Volatile.Writes

* Add back lock to SetIn

Co-authored-by: Stephen Toub <stoub@microsoft.com>
4 years agoAppend TryGetValue to ImmutableHashSet`1.Builder and ImmutableSortedSet`1.Builder...
GeorgeAlexandria [Mon, 13 Apr 2020 16:55:40 +0000 (19:55 +0300)]
Append TryGetValue to ImmutableHashSet`1.Builder and ImmutableSortedSet`1.Builder (#34869)

* Append TryGetValue method.

Append method to builder of ImmutableHashSet and ImmutableSortedSet.

Implements #28160.

* Small cleanup.

4 years agoUse 3-arg Array.Copy in ImmutableArray.CopyTo (#32387)
Marius Ungureanu [Mon, 13 Apr 2020 16:22:28 +0000 (19:22 +0300)]
Use 3-arg Array.Copy in ImmutableArray.CopyTo (#32387)

4 years ago[wasm] Configure the wasm target runtime using --with-lazy-gc-… (#34878)
Zoltan Varga [Mon, 13 Apr 2020 07:18:50 +0000 (03:18 -0400)]
[wasm] Configure the wasm target runtime using --with-lazy-gc-… (#34878)

This flag got lost in the move to mono.proj.

4 years agoLoopbackServer.ReadAsync: Fixed data corruption bug (#34875)
TalAloni [Mon, 13 Apr 2020 00:34:31 +0000 (03:34 +0300)]
LoopbackServer.ReadAsync: Fixed data corruption bug (#34875)

This caused the unused parts of the temp buffer to be copied to buffer, returning 0 to the caller instead of the actual data.
This caused several tests to fail when targeting .NET Standard 2.0

4 years agoFix corlib and runtime rules in Makefile (#34868)
Egor Bogatov [Sun, 12 Apr 2020 18:25:58 +0000 (21:25 +0300)]
Fix corlib and runtime rules in Makefile (#34868)

4 years agoRename CoreFx.Private.TestUtilities.Unicode to TestUtilities.Unicode (#34836)
Levi Broderick [Sun, 12 Apr 2020 17:36:36 +0000 (10:36 -0700)]
Rename CoreFx.Private.TestUtilities.Unicode to TestUtilities.Unicode (#34836)

And explicitly reference it from solutions which consume it

4 years agoFix System.Runtime version referenced by S.R.CS.Unsafe (#34870)
Jan Kotas [Sun, 12 Apr 2020 17:21:31 +0000 (10:21 -0700)]
Fix System.Runtime version referenced by S.R.CS.Unsafe (#34870)

* Fix System.Runtime version referenced by S.R.CS.Unsafe

* Feedback

4 years agoremove unused local of genId in BinaryObjectReader (#34865)
Eriawan Kusumawardhono [Sun, 12 Apr 2020 14:27:19 +0000 (21:27 +0700)]
remove unused local of genId in BinaryObjectReader (#34865)

4 years agoMove "hostpolicy" pinvokes to Interop.HostPolicy.cs (#34813)
Egor Bogatov [Sun, 12 Apr 2020 13:03:23 +0000 (16:03 +0300)]
Move "hostpolicy" pinvokes to Interop.HostPolicy.cs (#34813)

4 years agoOptimize HttpDateParser.TryStringToDate (#34860)
Stephen Toub [Sun, 12 Apr 2020 12:12:33 +0000 (08:12 -0400)]
Optimize HttpDateParser.TryStringToDate (#34860)

* Optimize HttpDateParser.TryStringToDate

When HttpResponseMessage headers are enumerated, even though SocketsHttpHandler adds headers with TryAddWithoutValidation, the enumeration ends up validating them (that's something to be discussed and follow-up on separately).  As part of that, it validates the Date header that's required of most responses. It does so using DateTimeOffset.TryParseExact, but using a long list of allowed formats as well as options that knock TryParseExact's processing off the fast path.  Since most responses are going to contain a date using RFC1123 format (aka "r"), we just try that first, in a way that will generally result in hitting the optimized "r" code path which is much faster.

* Address PR feedback

4 years agoReduce libraries build matrix with mono (#34835)
Santiago Fernandez Madero [Sun, 12 Apr 2020 12:12:02 +0000 (05:12 -0700)]
Reduce libraries build matrix with mono (#34835)

4 years agoFix incorrect behavior noted while compiling large aspnet application with debug...
David Wrighton [Sun, 12 Apr 2020 10:20:01 +0000 (03:20 -0700)]
Fix incorrect behavior noted while compiling large aspnet application with debug build of compiler (#34842)

- Multi-thread handling of UnboxingMethodDesc was incorrect. It would result in incorrect caching of fixups to unboxing methods
- ldtoken of a static method on a valuetype should not refer to an unboxing stub

4 years agoSeveral allocation reductions in SocketsHttpHandler (#34724)
Stephen Toub [Sat, 11 Apr 2020 18:21:37 +0000 (14:21 -0400)]
Several allocation reductions in SocketsHttpHandler (#34724)

* Remove state machine allocation for SendWithNtConnectionAuthAsync

Just manually inline the tiny helper that's only used from one call site.

* Remove unnecessary HeaderStoreItemInfo allocations

For the common case of a raw string, let the dictionary store the raw string directly rather than always wrapping it in a HeaderStoreItemInfo.

* Cache Date and Server response header values

For Server, we expect it to be the same for every request on the same connection.

For Date, if we're making lots of requests in a high-throughput fashion, we expect many responses on the same connection to have the same value.

In both cases, we compare the received value against the last one received, and if it's the same, reuse the same string.

4 years agoMore analyzer changes (#34843)
Prashanth Govindarajan [Sat, 11 Apr 2020 17:33:54 +0000 (10:33 -0700)]
More analyzer changes (#34843)

4 years agoUpdate dependencies from https://github.com/mono/linker build 20200410.1 (#34851)
dotnet-maestro[bot] [Sat, 11 Apr 2020 16:58:05 +0000 (16:58 +0000)]
Update dependencies from https://github.com/mono/linker build 20200410.1 (#34851)

- ILLink.Tasks: 5.0.0-preview.3.20209.2 -> 5.0.0-preview.3.20210.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
4 years agoAdd native configurations for SunOS (#34756)
Adeel Mujahid [Sat, 11 Apr 2020 16:03:18 +0000 (19:03 +0300)]
Add native configurations for SunOS (#34756)

4 years agoHttpWebRequest allow returning redirect response (#34560)
Matthew R Johnson [Sat, 11 Apr 2020 15:55:51 +0000 (16:55 +0100)]
HttpWebRequest allow returning redirect response (#34560)

* HttpWebRequest allow returning redirect response

Throw WebException for 3xx responses only when `AllowAutoRedirect = true`

Fixes #1074

* Simplify status code check