platform/upstream/dotnet/runtime.git
4 years ago[interp] Decruft PowerPC. (#32654)
monojenkins [Mon, 24 Feb 2020 08:13:07 +0000 (03:13 -0500)]
[interp] Decruft PowerPC. (#32654)

Co-authored-by: Jay Krell <jay.krell@cornell.edu>
4 years agoUpdate library name variations for uses with LoadLibrary (#32707)
Next Turn [Mon, 24 Feb 2020 04:49:28 +0000 (12:49 +0800)]
Update library name variations for uses with LoadLibrary (#32707)

4 years agoMove fat call policy out of RyuJIT (#32718)
Michal Strehovský [Sun, 23 Feb 2020 23:30:08 +0000 (00:30 +0100)]
Move fat call policy out of RyuJIT (#32718)

The EE side would like to be able to decide whether to do fat call or not.

4 years agoMerge pull request #32279 from nattress/coreroot_determinism
Simon Nattress [Sun, 23 Feb 2020 19:24:12 +0000 (11:24 -0800)]
Merge pull request #32279 from nattress/coreroot_determinism

Fix silent failure of coreroot_determinism test

4 years ago[interp] Remove some unused paths in newobj and cleanup a little. (#32685)
monojenkins [Sun, 23 Feb 2020 13:16:05 +0000 (08:16 -0500)]
[interp] Remove some unused paths in newobj and cleanup a little. (#32685)

This is an alternative to https://github.com/mono/mono/pull/18974.
Mainly that it does not introduce new opcode to remove branch from newobj/newobj_string.
Both eliminate a bit of dead code in newobj (if turns out to be alive, can also be new opcodes).

Co-authored-by: Jay Krell <jay.krell@cornell.edu>
4 years ago[interp] Pop leave and calli_nat frames. (#32691)
monojenkins [Sun, 23 Feb 2020 13:11:53 +0000 (08:11 -0500)]
[interp] Pop leave and calli_nat frames. (#32691)

Co-authored-by: Jay Krell <jay.krell@cornell.edu>
4 years agoAnnotate System.Net.WebProxy for nullable reference types (#32612)
Stephen Toub [Sun, 23 Feb 2020 02:11:01 +0000 (21:11 -0500)]
Annotate System.Net.WebProxy for nullable reference types (#32612)

4 years agoRemove unused param from EventPipe (#32698)
Mukul Sabharwal [Sat, 22 Feb 2020 23:59:07 +0000 (15:59 -0800)]
Remove unused param from EventPipe (#32698)

4 years ago[corlib] Link out more SR/SRE types (#32101)
monojenkins [Sat, 22 Feb 2020 22:34:59 +0000 (17:34 -0500)]
[corlib] Link out more SR/SRE types (#32101)

Co-authored-by: Zoltan Varga <vargaz@gmail.com>
4 years agoMake ReadyToRunReader constructor completely lazy (#32682)
Andrew Au [Sat, 22 Feb 2020 20:25:01 +0000 (12:25 -0800)]
Make ReadyToRunReader constructor completely lazy (#32682)

4 years agoUse StringBuilder.Append(Char) instead of converting char to string (#32686)
Alaa Masoud [Sat, 22 Feb 2020 20:04:16 +0000 (23:04 +0300)]
Use StringBuilder.Append(Char) instead of converting char to string (#32686)

* Use StringBuilder.Append(Char) instead of converting char to string

* revert unused local removal

4 years agoJIT: Fix arm gcstress/jistress issues (#32674)
Andy Ayers [Sat, 22 Feb 2020 16:30:51 +0000 (08:30 -0800)]
JIT: Fix arm gcstress/jistress issues (#32674)

Three fixes for gc liveness and the profile exit hook on arm.

* If we're returning results via the hidden return buffer pointer,
make sure we treat R0 as gc live, as it holds a BYREF and may well be
a gc reference, when the method is invoked via reflection.
* If R0 is otherwise live make sure to check the "native" return type so
we handle struct-wrapped GC ref returns properly.
* If we have a tail call or tail jump, R0 is not the return value, so deducing
GC liveness for it based on method properties is unsound. It turns out in both
cases that R0 is not in use; for tail calls this is ensured by insertion of the
helper call before register allocation; for tail jumps, by spilling the argument
registers in `genJmpMethod`.

Expect this will fix most or all of the failures in #31770.

4 years agoAdditional SuperIlc fixes for running composite R2R images (#32665)
Tomáš Rylek [Sat, 22 Feb 2020 08:56:47 +0000 (09:56 +0100)]
Additional SuperIlc fixes for running composite R2R images (#32665)

As an expedite way to run "non-shared" composite R2R images
(including the frameworK) I have added support to SuperIlc to
copy corerun, coreclr, clrjit and mscorrc next to the compiled
composite executable and supplying that as the CORE_ROOT
folder; otherwise corerun in the normal Tests/Core_Root
automatically grabs the framework next to it, not the composite
rewritten versions.

Thanks

Tomas

4 years agoFix CrstTypeTool to target the right header file on non-Windows platform (#32689)
Sung Yoon Whang [Sat, 22 Feb 2020 03:52:49 +0000 (19:52 -0800)]
Fix CrstTypeTool to target the right header file on non-Windows platform (#32689)

4 years agoUse GT_NULLCHECK for unconsumed indirections. (#32641)
Eugene Rozenfeld [Sat, 22 Feb 2020 01:53:37 +0000 (17:53 -0800)]
Use GT_NULLCHECK for unconsumed indirections. (#32641)

All unconsumed indirections are now GT_NULLCHECKs, which
allows optFoldNullChecks to remove more redundant null checks.

4 years agoMulticastOption.Group no longer accepts null. (#32518)
Eric Erhardt [Sat, 22 Feb 2020 00:55:24 +0000 (18:55 -0600)]
MulticastOption.Group no longer accepts null. (#32518)

* MulticastOption.Group no longer accepts null.

MulticastOption.Group is not supposed to accept null. If someone sets it to null, we will NRE inside of the Sockets implementation.

I also fixed two small double-cast problems while I was in here.

Fix #32490

4 years agoFix several HTTP/3 uses of ValueTask (#32671)
Stephen Toub [Sat, 22 Feb 2020 00:44:09 +0000 (19:44 -0500)]
Fix several HTTP/3 uses of ValueTask (#32671)

4 years agoBail out on CORINFO_STATIC_FIELD_ADDRESS like Crossgen1 does (#32664)
Tomáš Rylek [Fri, 21 Feb 2020 22:47:15 +0000 (23:47 +0100)]
Bail out on CORINFO_STATIC_FIELD_ADDRESS like Crossgen1 does (#32664)

This was the main problem after I overcame initial issues with
composite R2R debugging and runtime initialization: for some reason,
console output was weirdly distorted. By selectively compiling
just a subset of the framework I bisected this into
System.Console.get_Out which uses the ldsflda instruction that
Crossgen1 doesn't support. We pretended to support it but did it
incorrectly and so our result didn't match JIT. I have created
the tracking issue

https://github.com/dotnet/runtime/issues/32663

on implementing the static address as a minor perf optimization
(likely only important in some corner scenarios heavily using
statics).

Thanks

Tomas

4 years ago[metadata] Mark mono_signature_get_return_type external only (#32661)
monojenkins [Fri, 21 Feb 2020 22:35:41 +0000 (17:35 -0500)]
[metadata] Mark mono_signature_get_return_type external only (#32661)

Also `mark mono_signature_get_params` external only.

Runtime should use `mono_signature_get_return_type_internal`
and `mono_signature_get_params_internal`

Co-authored-by: Aleksey Kliger (λgeek) <akliger@gmail.com>
4 years agoFix nullability annotations in Pkcs (#32616)
buyaa-n [Fri, 21 Feb 2020 22:32:30 +0000 (14:32 -0800)]
Fix nullability annotations in Pkcs (#32616)

Fixing nullability annotations

4 years agoJIT/EE interface cleanup (#32521)
Jan Kotas [Fri, 21 Feb 2020 22:15:02 +0000 (14:15 -0800)]
JIT/EE interface cleanup (#32521)

* Delete methods on JIT/EE interface that are no longer used in CoreCLR

* Remove workaround for getLocationOfThisType method

* Hardcode verificationNeeded to false

* Added links to issues

* Delete .gitmirror files

4 years agoRemoved misleading doc and added -vs testing (#32618)
Marie Píchová [Fri, 21 Feb 2020 21:18:37 +0000 (22:18 +0100)]
Removed misleading doc and added -vs testing (#32618)

Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
4 years ago[Arm64] AddAcross MaxAcross MinAcross MaxNumber MaxNumberPairwise MaxPairwise (#32620)
Egor Chesakov [Fri, 21 Feb 2020 20:22:10 +0000 (12:22 -0800)]
[Arm64] AddAcross MaxAcross MinAcross MaxNumber MaxNumberPairwise MaxPairwise (#32620)

Implements the following intrinsics:

* AddPairwise, AddPairwiseScalar

* MaxAcross

* MaxNumber, MaxNumberScalar

* MaxNumberAcross

* MaxPairwise, MaxPairwiseScalar

* MinAcross

* MinNumberAcross

* MinPairwise, MinPairwiseScalar

---

Updates AddAcross to return Vector64<T> as we discussed in API review meeting

---

Updates emitter such that emitIns functions for faddp (scalar), fmaxp (scalar), fmaxv, smaxv and similar instructions require opt argument to have non-INS_OPTS_NONE value (i.e. specified according to the Arm technical documentation even in a case when an instruction has only one valid vector arrangement). For example, 2-operand form of faddp requires INS_OPTS_2S or INS_OPTS_2D options to be specified and fmaxv requires INS_OPTS_4S.

---

Changes the precedence of criteria for computing instruction SIMD size for GT_HWINTRINSIC node. This is needed for AddAcross, MaxAcross, AddPairwiseScalar etc.

For example, AddPairwiseScalar returns Vector64<T> value and before that change the SIMD size computed here was based only on the return value size (even when BaseTypeFromFirstArg or BaseTypeFromSecondArg flags were set), i.e. it was 8 bytes in all of these cases:

* Vector64<float> AddAcross(Vector128<float> value) - SIMD size should be 16 bytes FADDV Sd, Vn.4S

* Vector64<float> AddPairwiseScalar (Vector64<float> value) - SIMD size is 8 bytes FADDP Sd, Vn.2S

* Vector64<double> AddPairwiseScalar (Vector128<double> value) - SIMD size should be 16 bytes FADDP Dd, Vn.2D

---

Moves smaxv, sminv, addv and similar instructions to a separate instruction form DV_2T.

4 years agoAdded some parenthesis and a cast to control order of operations. (#32640)
Nathan Ricci [Fri, 21 Feb 2020 18:50:55 +0000 (13:50 -0500)]
Added some parenthesis and a cast to control order of operations. (#32640)

Fix intermittent negative values from GetTotalBytesAllocated.

4 years agoAllowNatTraversal is properly set for stopped socket (#32603)
Alexander Nikolaev [Fri, 21 Feb 2020 18:44:22 +0000 (19:44 +0100)]
AllowNatTraversal is properly set for stopped socket (#32603)

If AllowNatTraversal is called on a stopped TcpListener when ```_serverSocket``` is null, ```allow``` value gets stored in a field. Subsequently, if a new socket is created on Start call, the saved value is read and the corresponding argument is passed to SetIPProtectionLevel call after which the value is reset to preserve the current IPProtectionLevel propagation logic. The follow-up issue is #32653
Fixes #32551

4 years agoRemove CreditManager from Http2Stream (#32624)
Stephen Toub [Fri, 21 Feb 2020 18:08:13 +0000 (13:08 -0500)]
Remove CreditManager from Http2Stream (#32624)

The CreditManager implementation supports multiple awaiters, but Http2Stream's CreditManager never has more than one waiter at a time.  We can instead just encode similar logic into Http2Stream, and make its waiter a reusable singleton, such that if we have to allocate it, we can just keep reusing it for all subsequent waits.  This means we avoid the CreditManager allocation per Http2Stream as well as the Waiter allocation per wait (other than the first).

4 years agoFix NetworkInformation / execution context usage for HTTP/3 and Alt-Svc (#32621)
Cory Nelson [Fri, 21 Feb 2020 18:00:30 +0000 (10:00 -0800)]
Fix NetworkInformation / execution context usage for HTTP/3 and Alt-Svc (#32621)

Fix: leaking NetworkAddressChangedEventHandler and related WeakReference if user does not Dispose HttpClient. Resolves #32526.
Fix: using HttpClient from within a suppressed execution context. Add test for this. Resolves #32524.
Fix: capturing excessive execution context in Alt-Svc expiration timer.
Optimization: do not monitor for network changes until a non-persistent Alt-Svc is used.

4 years agoAdding new MSRC portal details (#32652)
Barry Dorrans [Fri, 21 Feb 2020 17:59:34 +0000 (09:59 -0800)]
Adding new MSRC portal details (#32652)

* Adding new MSRC portal details

* Update SECURITY.md

Co-authored-by: Stephen Toub <stoub@microsoft.com>
4 years agoAnnotate System.Net.Primitives for nullable (#31794)
Ilya [Fri, 21 Feb 2020 17:59:19 +0000 (22:59 +0500)]
Annotate System.Net.Primitives for nullable (#31794)

* Annotate System.Net.Primitives for nullable

* Fix build breaks in other libraries due to new annotations

Co-authored-by: Stephen Toub <stoub@microsoft.com>
4 years agoMerge pull request #32494 from naricc/naricc/GetGCMemoryInfoFix
Nathan Ricci [Fri, 21 Feb 2020 16:17:00 +0000 (11:17 -0500)]
Merge pull request #32494 from naricc/naricc/GetGCMemoryInfoFix

Correct values for HighMemoryLoadThresholdBytes, MemoryLoadBytes.

4 years ago[mono/metadata] add definitions for ENCLog/ENCMap (#32645)
Bernhard Urban-Forster [Fri, 21 Feb 2020 13:42:36 +0000 (14:42 +0100)]
[mono/metadata] add definitions for ENCLog/ENCMap (#32645)

4 years ago[mono] Add RunCoreFxTest AOT targets to mono.proj (+ more rules for Makefile) (#31893)
Egor Bogatov [Fri, 21 Feb 2020 13:28:56 +0000 (16:28 +0300)]
[mono] Add RunCoreFxTest AOT targets to mono.proj (+ more rules for Makefile) (#31893)

* Add run-tests-corefx rule

* Add AOT targets

* Add Makefile targets

4 years ago[interp] Cleanup: Replace retval-> with result. and retval with &result. (#32589)
monojenkins [Fri, 21 Feb 2020 10:25:00 +0000 (05:25 -0500)]
[interp] Cleanup: Replace retval-> with result. and retval with &result. (#32589)

Co-authored-by: Jay Krell <jay.krell@cornell.edu>
4 years ago[mono] .gitignore autom4te.cache (#32644)
Bernhard Urban-Forster [Fri, 21 Feb 2020 09:56:11 +0000 (10:56 +0100)]
[mono] .gitignore autom4te.cache (#32644)

4 years ago[interp] Allow inlining. (#32574)
monojenkins [Fri, 21 Feb 2020 08:43:59 +0000 (03:43 -0500)]
[interp] Allow inlining. (#32574)

Implied extra stack use is probably ok now, and this wasn't generally the most problematic stack in the first place, albeit still somewhat worth optimizing.

Might want to leave this alone for now, at least not without testing against current iOS/Blazor.
There is much other mitigating change, but these *might* matter.

Co-authored-by: Jay Krell <jay.krell@cornell.edu>
4 years agoFix up area owner GitHub alias (#32639)
Ahson Khan [Fri, 21 Feb 2020 06:06:08 +0000 (22:06 -0800)]
Fix up area owner GitHub alias (#32639)

4 years agoUpdate tests to deserialize char so that they align better with the (#32636)
Ahson Khan [Fri, 21 Feb 2020 05:46:23 +0000 (21:46 -0800)]
Update tests to deserialize char so that they align better with the (#32636)

behavior being tested.

4 years agoRemove local header compressed/uncomressed size validation vs central directory recor...
buyaa-n [Fri, 21 Feb 2020 05:34:03 +0000 (21:34 -0800)]
Remove local header compressed/uncomressed size validation vs central directory records (#32149)

* Zip data descriptor validation update and AppContext switch option

4 years agoRemove some calls to wstrcpy (#32342)
Levi Broderick [Fri, 21 Feb 2020 04:54:32 +0000 (20:54 -0800)]
Remove some calls to wstrcpy (#32342)

4 years agoCorrect values for HighMemoryLoadThresholdBytes, MemoryLoadBytes.
Nathan Ricci [Tue, 18 Feb 2020 04:08:49 +0000 (23:08 -0500)]
Correct values for HighMemoryLoadThresholdBytes, MemoryLoadBytes.

Renabled test.

Can't reenable that test yet.

4 years agoMake X509Certificate.Export non-null-returning
Jeremy Barton [Fri, 21 Feb 2020 01:52:44 +0000 (17:52 -0800)]
Make X509Certificate.Export non-null-returning

4 years agoFix createdump failures on alpine in diagnostics repo tests (#32579)
Mike McLaughlin [Fri, 21 Feb 2020 00:28:14 +0000 (16:28 -0800)]
Fix createdump failures on alpine in diagnostics repo tests (#32579)

Add "loadbias" to dynamic entries RVAs on Alpine Linux.

Move the Windows includes files and other defines from elfreader.h to elfreader.cpp.

Make the two ways the ElfReader is used more clear by renaming and cleanup some
function names:
    1) PopulateForSymbolLookup (was PopulateElfInfo) for looking up symbols and caches
       symbol/string table state in the ElfReader class.
    2) EnumerateElfInfo (was PopulateElfInfo also) which is used by createdump to enumerate
       all the native modules and their program headers and doesn't depend on or caches any state.

4 years ago[interp] Non-recursive newobj. (#32533)
monojenkins [Thu, 20 Feb 2020 23:19:49 +0000 (18:19 -0500)]
[interp] Non-recursive newobj. (#32533)

A few weird here, esp. for string, but CI passes.
Acknowledged but skipped for now, a request to also refactor the opcode -- it doesn't seem like much throwaway work to go in either order, even if the code is dead (which I don't know).

Also amend recent nonrecursive PR to simulate stack +2 instead of +1.

Co-authored-by: Jay Krell <jay.krell@cornell.edu>
4 years agoupdating docs and removing BuildConfiguration and ConfigurationGroup (#32062)
Anirudh Agnihotry [Thu, 20 Feb 2020 22:39:38 +0000 (14:39 -0800)]
updating docs and removing BuildConfiguration and ConfigurationGroup (#32062)

* build config and update docs

* remove configurationGroup and update docs

* addressing feedback

* viktor comments

4 years agoRemove compiler downgrade (#32474)
Viktor Hofer [Thu, 20 Feb 2020 22:28:17 +0000 (23:28 +0100)]
Remove compiler downgrade (#32474)

* Remove compiler downgrade

* Fix nullability warnings on S.Text.Json due to attributes now evaluated

* Fix compiler warnings in System.Runtime.cs

Co-authored-by: Santiago Fernandez Madero <safern@microsoft.com>
4 years agoMove System.Net.Quic to internal shared source (#32549) (#32610)
Chris Ross [Thu, 20 Feb 2020 21:42:07 +0000 (13:42 -0800)]
Move System.Net.Quic to internal shared source (#32549) (#32610)

4 years ago[wasm] Improve locals visualization (#32503)
monojenkins [Thu, 20 Feb 2020 21:07:22 +0000 (16:07 -0500)]
[wasm] Improve locals visualization (#32503)

Co-authored-by: Ankit Jain <radical@gmail.com>
4 years agoPermit incorrectly DER sorted SET for decoding X500 names. (#32604)
Kevin Jones [Thu, 20 Feb 2020 21:06:41 +0000 (16:06 -0500)]
Permit incorrectly DER sorted SET for decoding X500 names. (#32604)

* Permit incorrectly DER sorted SET for decoding X500 names.

* Add comment to explain.

4 years agoIncrease timeout in ValueTaskTests (#32607)
Stephen Toub [Thu, 20 Feb 2020 21:06:28 +0000 (16:06 -0500)]
Increase timeout in ValueTaskTests (#32607)

4 years agoFix verify_heap to handle > 1 UOH generations (#32586)
Vladimir Sadov [Thu, 20 Feb 2020 20:39:20 +0000 (12:39 -0800)]
Fix verify_heap to handle > 1 UOH generations (#32586)

4 years agoTemporarily disable nullable enabled for Pkcs (#32617)
Stephen Toub [Thu, 20 Feb 2020 19:58:35 +0000 (14:58 -0500)]
Temporarily disable nullable enabled for Pkcs (#32617)

4 years agoRun SuperIlc with CoreRun
Simon Nattress [Thu, 20 Feb 2020 19:34:07 +0000 (11:34 -0800)]
Run SuperIlc with CoreRun

4 years agoRemove unused LogSendPacketsBuffers method (#32605)
Eric Erhardt [Thu, 20 Feb 2020 18:26:57 +0000 (12:26 -0600)]
Remove unused LogSendPacketsBuffers method (#32605)

4 years agoAnnotate System.Security.Cryptography.Pkcs for nullable (#32571)
buyaa-n [Thu, 20 Feb 2020 18:03:32 +0000 (10:03 -0800)]
Annotate System.Security.Cryptography.Pkcs for nullable (#32571)

* Annotate System.Security.Cryptography.Pkcs

4 years agoFix debugger crash during unload of assemblies in ALC (#32311)
Juan Hoyos [Thu, 20 Feb 2020 18:02:35 +0000 (10:02 -0800)]
Fix debugger crash during unload of assemblies in ALC (#32311)

* Add implementation for DebuggerModuleTable::RemoveModule

4 years agoRemove duplicate ToString() call (#32598)
Alaa Masoud [Thu, 20 Feb 2020 17:44:05 +0000 (20:44 +0300)]
Remove duplicate ToString() call (#32598)

4 years agoNullable annotate System.Security.Cryptography.X509Certificates (#32191)
Eirik Tsarpalis [Thu, 20 Feb 2020 17:42:26 +0000 (17:42 +0000)]
Nullable annotate System.Security.Cryptography.X509Certificates (#32191)

* Nullable annotate System.Security.Cryptography.X509Certificates

* address feedback

* address feedback

* address feedback

* address feedback

4 years agoAvoid Split(new char[]) inside loops (#32601)
Alaa Masoud [Thu, 20 Feb 2020 16:52:19 +0000 (19:52 +0300)]
Avoid Split(new char[]) inside loops (#32601)

4 years agoCleanup System.Text.Json tests names with issue number (#32562)
Santiago Fernandez Madero [Thu, 20 Feb 2020 16:51:04 +0000 (08:51 -0800)]
Cleanup System.Text.Json tests names with issue number (#32562)

* Cleanup System.Text.Json tests names with issue number

* Fix build

* Cleanup more test/classes names

* PR Feedback

4 years agoUpdate testing with configuration system changes
Viktor Hofer [Thu, 20 Feb 2020 16:39:21 +0000 (17:39 +0100)]
Update testing with configuration system changes

4 years agoReduce simple HTTP/2 post app allocation by ~40% (#32557)
Stephen Toub [Thu, 20 Feb 2020 14:28:01 +0000 (09:28 -0500)]
Reduce simple HTTP/2 post app allocation by ~40% (#32557)

* Remove cancellation-related allocations in Http2Stream

We don't need to allocate a linked token source in SendRequestBodyAsync if the caller's token is the default

* Reduce size of SendDataAsync state machine

We're carrying around an extra 24-bytes for a `ReadOnlyMemory<byte>`, when we could instead just use the argument.

* Tweak HeaderField's ctor to use ROS.ToArray

If `value` happens to be empty, this will avoid an allocation.  But what actually led me to do this was just tightening up the code.

* Make HPackDecoder.State enum 1 instead of 4 bytes

* Remove spilled CancellationTokenSource field from SendDataAsync

* Add known-header values for access-control-* headers

* Reduce allocation in SslStream.ReadAsync

The current structure is that ReadAsync makes two calls to FillBufferAsync, one to ensure the frame header is read and another to ensure any additional payload is read.  This has two issues:
1. It ensures that in addition to allocating a state machine for FillBufferAsync (or, rather, a helper it uses) when it needs to yield, it'll also end up allocating for ReadAsync.
2. It complicates error handling, which needs to differentiate whether the first read can't get any bytes or whether a subsequent read can't, which necessitates storing state like how many bytes we initially had buffered so we can compare to that to see if we need to throw.

We can instead:
- Make FillBufferAsync into a simple "read until we get the requested number of bytes" loop and throw if it fails to do so.
- Do the initial read in ReadAsync, thereby allowing us to special-case the first read for both error handling and to minimize the chances that the helper call needs to yield.

This eliminates a bunch of FillBufferAsync state machines and also decreases the size of the state machines when they are needed.

* Replace CreditManager's waiter queue with a circular singly-linked list

This has a variety of benefits:
- We no longer need to allocate a `Queue<Waiter>` and its underlying `Waiter[]`.
- We no longer need to allocate a `TaskCompletionSource<int>` and its `Task<int>`, instead creating a single `IValueTaskSource<T>` implementation.
- For non-cancelable waiters, we can specialize to not need to carry around a meaningless CancellationToken field.
- For cancelable waiters (the common case), we can avoid an entire async method and its state machine by just storing the relevant state onto the waiter itself.

* Fix comment from previous change

* Manually inline and specialize EnsureIncomingBytesAsync

It's not that much more code to just manually inline EnsureIncomingBytesAsync into the three places it's used, and doing so has multiple benefits, both for size and for error messages.

* Update src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/Http2Connection.cs

Co-Authored-By: Cory Nelson <phrosty@gmail.com>
* Fix typo in online feedback

Co-authored-by: Cory Nelson <phrosty@gmail.com>
4 years agoFix minor issue in debugging.md (#32597)
Egor Bogatov [Thu, 20 Feb 2020 14:16:59 +0000 (17:16 +0300)]
Fix minor issue in debugging.md (#32597)

4 years agoAdd struct offset definitions to s390x (#32591)
monojenkins [Thu, 20 Feb 2020 14:06:00 +0000 (09:06 -0500)]
Add struct offset definitions to s390x (#32591)

Fix build on s390x after commit 79135c6

Fixes: mono/mono#18930

Co-authored-by: sharkcz <dan@danny.cz>
4 years ago[debugger] Enable reading embedded ppdb (#32447)
monojenkins [Thu, 20 Feb 2020 12:59:52 +0000 (07:59 -0500)]
[debugger] Enable reading embedded ppdb (#32447)

To fix the issue of enable reading embedded pdb everywhere the problem was that when the roslyn tests are compiling sources it creates embedded pdb with source file "", and before enable reading the embedded pdb we don't read this information, and now we read and our StackTrace corlib doesn't expect a source file "", it's okay if it's NULL but not "".
I could fix in corlib or in mono, I prefer to fix on mono because I don't know if there is any other place in corlib that doesn't expect source file "".

Co-authored-by: Thays Grazia <thaystg@gmail.com>
4 years ago[mono] Remove CoreFX.issues_mac.rsp file (#32585)
Maxim Lipnin [Thu, 20 Feb 2020 10:01:25 +0000 (13:01 +0300)]
[mono] Remove CoreFX.issues_mac.rsp file (#32585)

* Remove CoreFX.issues_mac.rsp

* Replace ActiveIssue with ConditionalFact

4 years agoRemove LOCK_DECLARE and LOCK_INIT -- unused and incorrect comments (not idempotent...
monojenkins [Thu, 20 Feb 2020 09:51:40 +0000 (04:51 -0500)]
Remove LOCK_DECLARE and LOCK_INIT -- unused and incorrect comments (not idempotent). (#32572)

Co-authored-by: Jay Krell <jay.krell@cornell.edu>
4 years agoCheck return code of bootstrap script in format.py. (#32581)
Eugene Rozenfeld [Thu, 20 Feb 2020 08:40:24 +0000 (00:40 -0800)]
Check return code of bootstrap script in format.py. (#32581)

Formatting jobs run format.py script, which calls bootstrap.{cmd/sh}
from jitutils. This change adds a check for return code of the call and
returns an error code from format.py if bootstrap.{cmd/sh} failed.

4 years ago[metadata] use descriptive constants for method table columns (#32567)
Bernhard Urban-Forster [Thu, 20 Feb 2020 08:30:33 +0000 (09:30 +0100)]
[metadata] use descriptive constants for method table columns (#32567)

4 years agoFix OverflowException in JsonSerializer.Serialize (#1308)
Felipe Pessoto [Thu, 20 Feb 2020 08:15:58 +0000 (00:15 -0800)]
Fix OverflowException in JsonSerializer.Serialize (#1308)

* Add failing test

At first I tried to create five internal references to CustomClassToExceedMaxBufferSize and create 25 levels deep instances, but the tests ran forever. So I changed it to have several big string properties, which lead to the System.OverflowException using 3 level deep instance.

* Initial implementation. Still needs to throw the appropriated Exception

* Validate new buffer size against MaxByteArrayLength

* When newSize overflows because growBy == _renteBuffer.Length, it tries to use growBy = sizeHint
If it still overflow, we set the newSize to int.MaxValue, which will throw an OutOfMemoryException when calling ArrayPool.Rent.

* Change to make assembly smaller and reduce a extra check in the common case

* Name conventions
OuterLoop
Make the test simpler

* Improve assembly size
Run test on 64 bits only

* Added Platform Specific attribute.
Separate OuterLoop attribute, to be consistent with the other tests in this solution.

4 years agoUpdate documentation about HostModel (#32583)
Swaroop Sridhar [Thu, 20 Feb 2020 07:11:48 +0000 (23:11 -0800)]
Update documentation about HostModel (#32583)

Update the notes about HostModel library, to reflect the post-repo consolidation names.

4 years agoNullability of BaseDirectory fix (#32486)
Tomasz Kajetan Stańczak [Thu, 20 Feb 2020 05:57:46 +0000 (06:57 +0100)]
Nullability of BaseDirectory fix (#32486)

BaseDirectory is never null. Not sure if you want to keep it this way as a protection against the future API changes?

4 years agoFix managed hosting assembly PackageReference versions to libraries to 4.7.0 (#2115)
Jeremy Koritzinsky [Thu, 20 Feb 2020 05:50:58 +0000 (21:50 -0800)]
Fix managed hosting assembly PackageReference versions to libraries to 4.7.0 (#2115)

* Hardcode System.Text.Json and System.Text.Encodings.Web package version to 4.7.0.

* Use System.Reflection.Metadata@1.8.0 to match the combined dotnet/sdk+dotnet/toolset repo.

4 years agoRemove a smattering of string allocations with spans (#32463)
Stephen Toub [Thu, 20 Feb 2020 02:39:20 +0000 (21:39 -0500)]
Remove a smattering of string allocations with spans (#32463)

4 years agoRemove _activeReadWriteTask field from Stream (#32569)
Stephen Toub [Thu, 20 Feb 2020 02:38:42 +0000 (21:38 -0500)]
Remove _activeReadWriteTask field from Stream (#32569)

The field is only used for handling misuse (EndXx called for something other than the "current" operation / called multiple times), and only with the legacy Begin/EndXx methods, yet it's taking up 8 bytes (on 64-bit) on the very mainstream Stream type.

4 years ago[mono.proj] use all available cores for runtime build (#32566)
Bernhard Urban-Forster [Thu, 20 Feb 2020 01:35:46 +0000 (02:35 +0100)]
[mono.proj] use all available cores for runtime build (#32566)

* [mono.proj] use all available cores for runtime build

* Update src/mono/mono.proj

Co-Authored-By: Alexander Köplinger <alex.koeplinger@outlook.com>
Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
4 years agoUpdate areas and owners (#32570)
Eric StJohn [Thu, 20 Feb 2020 01:27:15 +0000 (17:27 -0800)]
Update areas and owners (#32570)

Make System.Net areas owned by dotnet/ncl

4 years agoJIT: invoke nullable box optimizations earlier (#32269)
Andy Ayers [Thu, 20 Feb 2020 00:17:40 +0000 (16:17 -0800)]
JIT: invoke nullable box optimizations earlier (#32269)

Move the logic in `fgMorphRecognizeBoxNullable` into `gtFoldExprSpecial`
so it can be invoked earlier. This may prevent the original struct
from becoming address exposed and allow subsequent optimizations when the
`hasValue` field has a known value.

Fixes #31661.

4 years agoSupport Write-Thru of EH variables in LSRA (#543)
Carol Eidt [Wed, 19 Feb 2020 23:52:22 +0000 (15:52 -0800)]
Support Write-Thru of EH variables in LSRA (#543)

* Support Write-Thru of EH variables in LSRA

Mark EH variables (those that are live in or out of exception regions) only as lvLiveInOutOfHndlr, not necessarily lvDoNotEnregister
During register allocation, mark these as write-thru, and mark all defs as write-thru, ensuring that the stack value is always valid.
Mark those defs with GTF_SPILLED (this the "reload" flag and is not currently used for pure defs) to indicate that it should be kept in the register.
Mark blocks that enter EH regions as having no predecessor, and set the location of all live-in vars to be on the stack.
Change genFnPrologCalleeRegArgs to store EH vars also to the stack if they have a register assignment.

Tuned throughput to compensate for extra processing by rearranging some fields and short-circuiting the physical register RefPositions during allocation.

It is disabled by default

4 years agoAppHost.Bundle.Tests: Fix a flaky test (#32563)
Swaroop Sridhar [Wed, 19 Feb 2020 23:49:18 +0000 (15:49 -0800)]
AppHost.Bundle.Tests: Fix a flaky test (#32563)

The BundleRename test is an inherently concurrent test which needs the app and the test infrastructure to synchronize.
Originally, the app and the test synchronized using a lock file: the app creates the lock file and waits until the lock is deleted.
However, this caused problems because the test may attempt to delete the lock file even before the app has closed it.

Therefore, this change fixes the issue by using different files to trigger the app's wait and resume steps.

4 years agoJIT: fix profiler leave hook trash register sets for x64 SysV (#32553)
Andy Ayers [Wed, 19 Feb 2020 22:49:45 +0000 (14:49 -0800)]
JIT: fix profiler leave hook trash register sets for x64 SysV (#32553)

The profiler leave hook must preserve `rdx` and `xmm1` as they
can be used to return values.

Fixes #31769.

4 years agoChange back-edge dependencies to toolset dependencies (#32554)
Matt Mitchell [Wed, 19 Feb 2020 22:43:36 +0000 (14:43 -0800)]
Change back-edge dependencies to toolset dependencies (#32554)

There were a bunch of backedge and build-only dependencies in here that should be moved to the toolset category.
Also fix a few darc verify errors

4 years agoChange COMPlus_DiagnosticsServerTransportPath (#32087)
John Salem [Wed, 19 Feb 2020 22:41:13 +0000 (14:41 -0800)]
Change COMPlus_DiagnosticsServerTransportPath (#32087)

* Change COMPlus_DiagnosticsServerTransportPath to DOTNET_DiagnosticsServerAddress

4 years ago[interp] Inline newobj. (#32480)
monojenkins [Wed, 19 Feb 2020 22:32:46 +0000 (17:32 -0500)]
[interp] Inline newobj. (#32480)

The real goal is to make it not recursive.
This is just a step along the way.
Note that the actual not-recursive change has *not* yet been developed,
so this *might* amount to nothing useful.

Co-authored-by: Jay Krell <jay.krell@cornell.edu>
4 years agoHostModel: Retry ResourceUpdate on Win32 error (#32347)
Swaroop Sridhar [Wed, 19 Feb 2020 22:27:09 +0000 (14:27 -0800)]
HostModel: Retry ResourceUpdate on Win32 error (#32347)

This change attempts to fix a non-deterministic customer reported failure.

Several customers have observed failure during resource update when the HostModel updates the AppHost (to transfer resources from the managed app).
The failure is not detereminisitc, not reproducible on our machines, and depends on specific computers/software running.
This indicates interference by other software while the HostWriter is updating the AppHost.

The current implementation retries the resource update if an update because the device or drive is locked (say by an antivurus) HRESULT 0x21 and 0x6C.
However, the failures reported have errors 0x5 (Access violation) and 0x6# (Open failed).
Windows/Defender team said that file-locking with these error-codes is not expected.
However, different AVs work differently about examining files.

We believe that the correct fix for this issue is to complete:

To implement #3828 and #3829
Ship AppHost with an extension/permissions not indicating an executable.
However the above is a fairly large change for servicing .net core 3.1.

So, this change implements a simpler fix intended for servicing 3.1 branch:
Always retry the resource-update on Win32 error, unless the failure is a knwon irrecoverable code (listed a few error codes relevent to File IO).

This change may cause unnecessary retries on legitimate failures (about 50 seconds).
But such cases are rare, because the SDK supplies the apphost, and the HostModel itself creates the file to update.

Fixes #3832

4 years ago[wasm] Avoid spilling refs to the stack in gsharedvt wrappers, those functions don...
monojenkins [Wed, 19 Feb 2020 22:16:15 +0000 (17:16 -0500)]
[wasm] Avoid spilling refs to the stack in gsharedvt wrappers, those functions don't need safepoints. (#32215)

Co-authored-by: Zoltan Varga <vargaz@gmail.com>
4 years ago[sgen] Disable managed allocator when using nursery-canaries (#32537)
monojenkins [Wed, 19 Feb 2020 22:10:57 +0000 (17:10 -0500)]
[sgen] Disable managed allocator when using nursery-canaries (#32537)

The managed allocator included in a full aot image does not support canaries, leading to inconsistent object layout.

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

Co-authored-by: Vlad Brezae <brezaevlad@gmail.com>
4 years ago[interp] Fix incorrect propagation of indirect local (#32511)
monojenkins [Wed, 19 Feb 2020 22:09:32 +0000 (17:09 -0500)]
[interp] Fix incorrect propagation of indirect local (#32511)

We never track the value of locals who have their address taken in a method, since their value can change without the pass detecting it, leading to propagation of incorrect values. We failed to check for this when doing a stloc.np optimization.

Fixes System.Reflection.Metadata.Tests.ImmutableByteArrayInteropTest.DangerousCreateFromUnderlyingArray

Enable more interp tests, which don't seem to fail on my machine.

Co-authored-by: Vlad Brezae <brezaevlad@gmail.com>
4 years ago[loader] Add check to mono_domain_ensure_entry_assembly for AOT (#32556)
Ryan Lucia [Wed, 19 Feb 2020 21:48:40 +0000 (16:48 -0500)]
[loader] Add check to mono_domain_ensure_entry_assembly for AOT (#32556)

Fixes a crash with AOT because domain->setup is NULL here

4 years agoUpdate branding to preview2 (#32542)
Matt Mitchell [Wed, 19 Feb 2020 21:20:55 +0000 (13:20 -0800)]
Update branding to preview2 (#32542)

4 years agoFix armel cross build of native part of libraries (#32127)
Gleb Balykov [Wed, 19 Feb 2020 21:19:50 +0000 (00:19 +0300)]
Fix armel cross build of native part of libraries (#32127)

4 years agoUpdate docs for steps to take if CI fails (#32548)
Dan Moseley [Wed, 19 Feb 2020 20:29:38 +0000 (12:29 -0800)]
Update docs for steps to take if CI fails (#32548)

* Update docs for steps to take if CI fails

* update

* more

* more

* more

* include dumps

* more

* more

* typo

4 years ago[loader] Parse in more netcore hosting properties (#32263)
Ryan Lucia [Wed, 19 Feb 2020 19:10:27 +0000 (14:10 -0500)]
[loader] Parse in more netcore hosting properties (#32263)

This includes some other minor cleanup to the netcore hosting functions.

Setting `assemblies_path` with `APP_PATHS` despite it also being set by `MONO_PATH` doesn't scare me too much because:
1) Anyone using `MONO_PATH` is probably not going through the hosting API and is using `mono-sgen` directly
2) The default host doesn't set `APP_PATHS` unless `Microsoft.NETCore.DotNetHostPolicy.SetAppPaths` is set to 1 in the `.runtimeconfig.json` (which is rare, and we've worked fine without `APP_PATHS` being set at all up until now)
3) This is a temporary measure; we will have to refactor our preload hook when we want to properly support the other loader properties anyway

4 years ago[llvm] Remove the disable-self-init debug option, it doesn't work any more. (#32532)
monojenkins [Wed, 19 Feb 2020 18:10:58 +0000 (13:10 -0500)]
[llvm] Remove the disable-self-init debug option, it doesn't work any more. (#32532)

Co-authored-by: Zoltan Varga <vargaz@gmail.com>
4 years agoEnsure ActiveIssue attribute is only used with issue links (#32535)
Alexander Köplinger [Wed, 19 Feb 2020 13:58:17 +0000 (14:58 +0100)]
Ensure ActiveIssue attribute is only used with issue links (#32535)

* Ensure ActiveIssue attribute is only used with issue links

The constructor that takes an `int` was removed in https://github.com/dotnet/arcade/pull/4831.

Update docs to recommend using issue links instead of numbers.

Fix two tests that were using ActiveIssue incorrectly.

* PR feedback

4 years agoHttpClient throws TimeoutException wrapped by TaskCancellationException when request...
Alexander Nikolaev [Wed, 19 Feb 2020 11:31:05 +0000 (12:31 +0100)]
HttpClient throws TimeoutException wrapped by TaskCancellationException when request times out (#2281)

Currently, HttpClient throws the same TaskCancellationException regardless of the request cancellation reason that can be caller's cancellation, all pending request cancellation or timeout. This makes it impossible to handle a request timeout in a way different from all other cases (e.g. special retry logic).

This PR adds a timeout detection logic into HttpClient. It watches for all TaskCancelledExceptions and catches the one caused by timeout. Then, it creates two new exceptions and build a hierarchy. The first is a TimeoutException having its InnerException set to the original TaskCancelledException. The second is a new TaskCancelledException having its InnerException set to that new TimeoutException, but preserving the original stack trace, message and cancellation token. Finally, this top-level TaskCancelledException gets thrown.

Fixes #21965

4 years ago[mono] Fix several nits (#32529)
Maxim Lipnin [Wed, 19 Feb 2020 10:53:43 +0000 (13:53 +0300)]
[mono] Fix several nits (#32529)

* Remove the commented code

* Remove unused nint/nuint aliases from PNSE version of Utf8String

4 years agoInitial Crossgen2 changes for composite R2R support (#31663)
Tomáš Rylek [Wed, 19 Feb 2020 10:21:09 +0000 (11:21 +0100)]
Initial Crossgen2 changes for composite R2R support (#31663)

This change adds the new command-line option "--composite",
a new type of input files "--unrooted-input-file" for files that should
be made part of the composite image but only rooted as hit by the
dependency analysis, not automatically as the normal input files
(to reduce the size of framework built along with the app) and new
Crossgen2 logic for producing the additional R2R metadata needed
by composite images including rewriting of input MSIL by injecting
a "component R2R header" on them that forwards the native code
to the composite image. With a set of runtime changes out for
a separate PR I'm able to make first steps in running composite R2R
in the CoreCLR runtime.

Thanks

Tomas

4 years agoUpdate SDK used in global.json. (#32189)
Jeremy Koritzinsky [Wed, 19 Feb 2020 08:23:50 +0000 (00:23 -0800)]
Update SDK used in global.json. (#32189)

4 years agoOptimize integral ToString (without generics) (#32528)
ts2do [Wed, 19 Feb 2020 07:18:47 +0000 (01:18 -0600)]
Optimize integral ToString (without generics) (#32528)

- Make the fast path for Number.FormatXX & Number.TryFormatXX inlineable
- Make parameterless ToString in SByte, Int16, Int32, and Int64 directly invoke the default formatting method

4 years agoChange StreamEvent.Abort to use byte instead of bool (#32517)
Justin Kotalik [Wed, 19 Feb 2020 05:43:13 +0000 (21:43 -0800)]
Change StreamEvent.Abort to use byte instead of bool (#32517)