Stephen Toub [Wed, 21 Oct 2020 17:33:59 +0000 (13:33 -0400)]
Delete NetEventSource.Fail (#43579)
At some point some Debug.Asserts/Fails were replaced by this NetEventSource.Fail helper, which both Debug.Fails and fires an EventSource event. But asserts in our code base are intended for things that should never happen, and we needn't be emitting events for them (if we did want to emit events for them, we'd need to tackle the other ~20,000 Debug.Assert/Fails in the codebase.
I've deleted NetEventSource.Fail, and fixed up the call sites. Some were simply replaced by Debug.Assert/Fail. Some were deleted entirely, when from code inspection it looked like they could actually be hit, but were guarded by a check for the event source being enabled and thus were unlikely to have been triggered in our previous testing. Etc.
Koundinya Veluri [Wed, 21 Oct 2020 17:18:24 +0000 (13:18 -0400)]
Migrate coreclr's worker thread pool to be able to use the portable thread pool in opt-in fashion (#38225)
- Enables using the portable thread pool with coreclr as opt-in. Change is off by default for now, and can be enabled with COMPlus_ThreadPool_UsePortableThreadPool=1. Once it's had bake time and seen to be stable, at a reasonable time in the future the config flag would ideally be removed and the relevant parts of native implementation deleted.
- The IO thread pool is not being migrated in this change, and remains on the native side
- My goal was to get compatible behavior, compatible with diagnostics tools, and similar perf to the native implementation in coreclr. Tried to avoid changing scheduling behavior, behavior of heuristics, etc., compared with that implementation.
- The eventual goal is to have one mostly managed thread pool implementation that can be shared between runtimes, to ease maintenance going forward
Commit descriptions:
- "Add dependencies"
- Ported LowLevelLock from CoreRT, and moved LowLevelSpinWaiter to shared. Since we support Thread.Interrupt(), they were necessary in the wait subsystem in CoreRT partly to support that, and were also used in the portable thread pool implementation where a pending thread interrupt on a thread pool thread would otherwise crash the process. Interruptible waits are already used in the managed side of the thread pool in the queue implementations. It may be reasonable to ignore the thread interrupt problem and suggest that it not be used on thread pool threads, but for now I just brought in the dependencies to keep behavior consistent with the native implementation.
- "Add config var"
- Added config var COMPlus_ThreadPool_UsePortableThreadPool (disabled by default for now)
- Flowed the new config var to the managed side and set up a mechanism to flow all of the thread pool config vars
- Removed debug-only config var COMPlus_ThreadpoolTickCountAdjustment, which didn't seem to be too useful
- Specialized native and managed thread pool paths based on the config var. Added assertions to paths that should not be reached depending on the config var.
- "Move portable RegisteredWaitHandle implementation to shared ThreadPool.cs"
- Just moved the portable implementation, no functional changes. In preparation for merging the two implementations.
- "Merge RegisteredWaitHandle implementations"
- Merged implementations of RegisteredWaitHandle using the portable version as the primary and specializing small parts of it for coreclr
- Fixed PortableThreadPool's registered waits to track SafeWaitHandles instead of WaitHandles similarly to the native implementation. The SafeWaitHandle in a WaitHandle can be modified, so it is retrieved once and reused thereafter. Also added/removed refs for the SafeWaitHandles that are registered.
- "Separate portable-only portion of RegisteredWaitHandle"
- Separated RegisteredWaitHandle.UnregisterPortable into a different file, no functional changes. Those paths reference PortableThreadPool, which is conditionally included unlike ThreadPool.cs. Just for consistency such that the new file can be conditionally included similarly to PortableThreadPool.
- "Fix timers, tiered compilation, introduced time-sensitive work item queue to simulate coreclr behavior"
- Wired work items queued from the native side (appdomain timer callback, tiered compilation background work callback) to queue them into the managed side
- The timer thread calls into managed code to queue the callback
- Some tiered compilation work item queuing paths cannot call managed code, so used a timer with zero due time instead
- Added a queue of "time-sensitive" work items to the managed side to mimic how work items queued from the native side ran previously. In particular, if the global queue is backed up, when using the native thread pool the native work items still run ahead of them periodically (based on the Dispatch quantum). Potentially they could be queued into the global queue but if it's backed up it can potentially significantly and perhaps artificially delay the appdomain timer callback and the tiering background jitting. I didn't want to change the behavior in an observable (and potentially bad) way here for now, a good time to revisit this would be when IO completion handling is added to the portable thread pool, then the native work items could be handled somewhat similarly.
- "Implement ResetThreadPoolThread, set thread names for diagnostics"
- Aside from that, setting the thread names (at OS level) allows debuggers to identify the threads better as before. For threads that may run user code, the thread Name property is kept as null as before, such that it may be set without exception.
- "Cache-line-separate PortableThreadPool._numRequestedWorkers similarly to coreclr"
- Was missed before, separated it for consistency
- "Post wait completions to the IO completion port on Windows for coreclr, similarly to before"
- On Windows, wait completions are queued to the IO thread pool, which is still implemented on the native side. On Unixes, they are queued to the global queue.
- "Reroute managed gate thread into unmanaged side to perform gate activites, don't use unmanaged gate thread"
- When the config var is enabled, removed the gate thread from the native side. Instead, the gate thread on the managed side calls into the native side to perform gate activities for the IO completion thread pool, and returns a value to indicate whether the gate thread is still necessary.
- Also added a native-to-managed entry point to request the gate thread to run for the IO completion thread pool
- "Flow config values from CoreCLR to the portable thread pool for compat"
- Flowed the rest of the thread pool config vars to the managed side, such that COMPlus variables continue to work with the portable thread pool
- Config var values are stored in AppContext, made the names consistent for supported and unsupported values
- "Port - ..." * 3
- Ported a few fixes that did not make it into the portable thread pool implementation
- "Fix ETW events"
- Fixed the EventSource used by the portable thread pool, added missing events
- For now, the event source uses the same name and GUID as the native side. It seems to work for now for ETW, we may switch to a separate provider (along with updating tools) before enabling the portable thread pool by default.
- For enqueue/dequeue events, changed to use the object's hash code as the work item identifier instead of the pointer since the pointer may change between enqueue and dequeue
- "Fix perf of counts structs"
- Structs used for multiple counts with interlocked operations were implemented with explicit struct layout and field offsets. The JIT seems to generate stack-based code for such structs and it was showing up as higher overhead in perf profiles compared to the equivalent native implementation. Slower code in compare-exchange loops can cause a larger gap of time between the read and the compare-exchange, which can also cause higher contention.
- Changed the structs to use manual bit manipulation instead, and microoptimized some paths. The code is still not as good as that generated by C++, but it seems to perform similarly based on perf profiles.
- Code size also improved in many cases, for example one of the larger differences was in MaybeAddWorkingWorker(), which decreased from 585 bytes to 382 bytes and with far fewer stack memory operations
- "Fix perf of dispatch loop"
- Just some minor tweaks as I was looking at perf profiles and code of Dispatch()
- "Fix perf of ThreadInt64PersistentCounter"
- The implementation used to count completed work items was using `ThreadLocal<T>`, which turned out to be too slow for that purpose according to perf profiles
- Changed it to rely on the user of the component to provide an object that tracks the count, which the user of the component would obtain from a ThreadStatic field
- Also removed the thread-local lookup per iteration in one of the hot paths in Dispatch() and improved inlining
- "Miscellaneous perf fixes"
- A few more small tweaks as I was looking at perf profiles and code
- In ConcurrentQueue, added check for empty into the fast path
- For the portable thread pool, updated to trigger the worker thread Wait event after the short spin-wait completes and before actually waiting, the event is otherwise too verbose when profiling and changes performance characteristics
- Cache-line-separated the gate thread running state as is done in the native implementation
- Accessing PortableThreadPool.ThreadPoolInstance multiple times was generating less than ideal code that was noticeable in perf profiles. Tried to avoid it especially in hot paths, and in some cases where unnecessary for consistency if nothing else.
- Removed an extra call to Environment.TickCount in Dispatch() per iteration
- Noticed that a field that was intended to be cache-line-separated was not actually being separated, see https://github.com/dotnet/runtime/issues/38215, fixed
- "Fix starvation heuristic"
- Described in comment
- "Implement worker tracking"
- Implemented the equivalent in the portable thread pool along with raising the relevant event
- "Use smaller stack size for threads that don't run user code"
- Using the same stack size as in the native side for those threads
- "Note some SOS dependencies, small fixes in hill climbing to make equivalent to coreclr"
- Corresponds with PR that updates SOS: https://github.com/dotnet/diagnostics/pull/1274
- Also fixed a couple of things to work similarly to the native implementation
- "Port some tests from CoreRT"
- Also improved some of the tests
- "Fail-fast in thread pool native entry points specific to thread pool implementations based on config"
- Scanned all of the managed-to-native entry points from the thread pool and thread-entry functions, and promoted some assertions to be verified in all builds with fail-fast. May help to know in release builds when a path that should not be taken is taken and to avoid running further along that path.
- "Fix SetMinThreads() and SetMaxThreads() to return true only when both changes are successful with synchronization"
- These are a bit awkward when the portable thread pool is enabled, because they should return true only when both changes are valid and return false without making any changes otherwise, and since the worker thread pool is on the managed side and IO thread pool is on the native side
- Added some managed-to-native entry points to allow checking validity before making the changes, all under a lock taken by the managed side
- "Fix registered wait removals for fairness since there can be duplicate system wait objects in the wait array"
- Described in comment
- "Allow multiple DotNETRuntime event providers/sources in EventPipe"
- Temporary change to EventPipe to be able to get events from dotnet-trace
- For now, the event source uses the same name and GUID as the native side. It seems to work for now for ETW, and with this change it seems to work with EventPipe for getting events. Subscribing to the NativeRuntimeEventSource does not get thread pool events yet, that is left for later. We may switch to a separate provider (along with updating tools) before enabling the portable thread pool by default, as a long-term solution.
- "Fix registered wait handle timeout logic in the wait thread"
- The timeout logic was comparing against how long the last wait took and was not timing out waits sometimes, fixed to consider the total time since the last reset of timeout instead
- "Fix Browser build"
- Updated the Browser-specific thread pool variant based on the other changes
Corresponding PR to update SOS: https://github.com/dotnet/diagnostics/pull/1274
Fixes https://github.com/dotnet/runtime/issues/32020
Jo Shields [Wed, 21 Oct 2020 16:47:27 +0000 (12:47 -0400)]
Add test leg to the PR build to run libraries tests on Android devices (#42209)
The on-device version of https://github.com/dotnet/runtime/pull/37585
Co-authored-by: Premek Vysoky <premek.vysoky@microsoft.com>
Co-authored-by: Santiago Fernandez Madero <safern@microsoft.com>
Mitchell Hwang [Wed, 21 Oct 2020 16:45:57 +0000 (12:45 -0400)]
[Android] Add AndroidAppBuilder pkgproj for Android sample (#43216)
In preparation to bring mono samples to `dotnet/samples`, files that are most likely to change will be packaged into a nuget package to be downloaded and consumed on the `dotnet/samples` end rather than mirroring changes.
This PR expands the process that created the NuGet package for `Microsoft.NETCore.BrowserDebugHost.Transport` to build a NuGet package for the Android sample.
Co-authored-by: Mitchell Hwang <mitchell.hwang@microsoft.com>
Zoltan Varga [Wed, 21 Oct 2020 16:37:00 +0000 (12:37 -0400)]
Remove non-cmake build support from mono.proj. (#43678)
Huo Yaoyuan [Wed, 21 Oct 2020 16:08:53 +0000 (00:08 +0800)]
Update steps in debugging instruction of CLR (#43557)
* Update CLR debugging instruction steps.
* Use suggested BCL path
Co-authored-by: Jan Vorlicek <janvorli@microsoft.com>
* Mention the usage cases of CORE_LIBRARIES.
Co-authored-by: Jan Vorlicek <janvorli@microsoft.com>
Egor Bogatov [Wed, 21 Oct 2020 15:51:54 +0000 (18:51 +0300)]
RyuJIT: Don't emit null checks for constant strings (#37245)
* Fold "ldstr ==/!== null" (mikedn's PR)
* Formatting
* check IsUnsigned for GT_GT
* Address feedback
dotnet-maestro[bot] [Wed, 21 Oct 2020 15:43:28 +0000 (17:43 +0200)]
[master] Update dependencies from mono/linker dotnet/arcade dotnet/xharness dotnet/llvm-project (#43583)
* Update dependencies from https://github.com/dotnet/arcade build
20201015.7
Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk , Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.XUnitExtensions , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.ApiCompat
From Version 6.0.0-beta.20514.1 -> To Version 6.0.0-beta.20515.7
* Update dependencies from https://github.com/dotnet/xharness build
20201019.2
Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Xunit
From Version 1.0.0-prerelease.20516.1 -> To Version 1.0.0-prerelease.20519.2
* Update dependencies from https://github.com/mono/linker build
20201020.1
Microsoft.NET.ILLink.Tasks
From Version 6.0.0-alpha.1.20516.1 -> To Version 6.0.0-alpha.1.20520.1
* Update dependencies from https://github.com/mono/linker build
20201020.2
Microsoft.NET.ILLink.Tasks
From Version 6.0.0-alpha.1.20516.1 -> To Version 6.0.0-alpha.1.20520.2
* Update dependencies from https://github.com/dotnet/arcade build
20201016.5
Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk , Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.XUnitExtensions , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.ApiCompat
From Version 6.0.0-beta.20514.1 -> To Version 6.0.0-beta.20516.5
* Update dependencies from https://github.com/dotnet/llvm-project build
20201019.1
runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk
From Version 9.0.1-alpha.1.20512.1 -> To Version 9.0.1-alpha.1.20519.1
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Alexander Köplinger [Wed, 21 Oct 2020 15:40:26 +0000 (17:40 +0200)]
Fix incremental build of tasks.proj for mobile (#43674)
* Fix incremental build of tasks.proj for mobile
The semaphore file that is used as the input for deciding whether to rebuild tasks.proj wasn't properly taking the mobile task projects into account.
This resulted in e.g. WasmAppBuilder not being built if you built for desktop before, resulting in a build error.
We now use the conditioned project references as an input instead of globbing through all nested projects.
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Ryan Lucia [Wed, 21 Oct 2020 15:32:53 +0000 (11:32 -0400)]
[mono] Copy image data with AssemblyLoadContext.LoadFromStream (#43592)
We don't actually pin the byte array, so it must be copied or it can be overwritten once we run a GC on the LOH.
Fixes https://github.com/dotnet/runtime/issues/43402
Tested manually that it fixes the issue using the associated repro. This isn't really something that lends itself to a test, so that's the best I can do.
Steve Harter [Wed, 21 Oct 2020 14:50:02 +0000 (09:50 -0500)]
Add public JsonElement.ParseValue() and TryParseValue() (#43601)
Přemek Vysoký [Wed, 21 Oct 2020 14:29:45 +0000 (16:29 +0200)]
Add test leg to the PR build to run libraries tests on Android emulators (#37585)
Jan Vorlicek [Wed, 21 Oct 2020 13:53:43 +0000 (15:53 +0200)]
Disable / fix failing test in runincontext testing (#43663)
* Disable all profiler tests since they launch a secondary process
and process launch creates an infinite event loop in the
SocketAsyncEngine on Linux. Since runincontext loads even
framework assemblies into the unloadable context, locals in this
loop prevent unloading.
The tests were working before Process.Start moved to using sockets.
* Fix the multifoldertest to work under runincontext - the shell
script generated from the .csproj was passing an absolute path
for the multifolder.dll to the runincontext.sh/cmd instead of
a relative path that is used in all other tests and that the
runincontext expects.
Jan Vorlicek [Wed, 21 Oct 2020 10:48:21 +0000 (12:48 +0200)]
Enable implicit fallthrough warning (#43397)
* Enable implicit fallthrough warning
This change enables warnings for implicit fallthrough in
switch cases and fixes all the cases where the warning
was reported.
It also fixes some places where the fall through was incorrect.
Fortunately, these places were not causing functional issues.
Egor Bogatov [Wed, 21 Oct 2020 09:26:42 +0000 (12:26 +0300)]
[Browser] don't pass redundant args to wasm (#41608)
Zoltan Varga [Wed, 21 Oct 2020 08:58:48 +0000 (04:58 -0400)]
Mono: Fix the windows cmake build. (#43658)
This will not use cmake on windows, it just fixes the conditionals so the windows build doesn't fail if cmake is enabled by default.
Bruce Forstall [Wed, 21 Oct 2020 00:51:09 +0000 (17:51 -0700)]
Automatically trigger the ilasm round-trip test on PRs (#43666)
For changes to the ilasm or ildasm source code, trigger
the ilasm round-trip pipeline.
There could, of course, be other changes that could affect
ilasm/ildasm, but this at least catches the primary ones.
Juan Hoyos [Tue, 20 Oct 2020 23:34:38 +0000 (16:34 -0700)]
Fix missing signatures for Cross bitness DAC symbols (#43500)
* Unify paths used for cross-bit components
* Pass down buildArchitecture for signing
* Pass target properties to signing
Dong-Heon Jung [Tue, 20 Oct 2020 23:17:09 +0000 (08:17 +0900)]
Update MulticoreJit (#39996)
- Enable Generic Methods in MulticoreJit
- Enable NDirect Stub in MulticoreJit
Koundinya Veluri [Tue, 20 Oct 2020 22:29:02 +0000 (18:29 -0400)]
Clarify pre-merge commit squash guidance (#43664)
Kunal Pathak [Tue, 20 Oct 2020 22:27:41 +0000 (15:27 -0700)]
Display the real offset after branch tightening (#43469)
* display the real offset after branch tightening
* emit offset for cold codeblock
* move isColdBlock inside #DEBUG
* fix formatting
* Revert "fix formatting"
This reverts commit
0744e1e432e12c5bddd4ce8c208660e31d96f12a.
* Revert "move isColdBlock inside #DEBUG"
This reverts commit
60e511b0bfb1836476a5fcf05ff3450d32c3d907.
* Revert "emit offset for cold codeblock"
This reverts commit
e760beb2fcd1a5fcfd22ddf47eb6939a7094562d.
* Use emitCurCodeOffs() to display correct offset
Marek Safar [Tue, 20 Oct 2020 21:13:47 +0000 (23:13 +0200)]
Use ThrowHelper inside ValueType types (#43634)
Chris Ross [Tue, 20 Oct 2020 20:54:53 +0000 (13:54 -0700)]
Sync shared code from aspnetcore (#43624)
Zoltan Varga [Tue, 20 Oct 2020 19:49:01 +0000 (15:49 -0400)]
Mono: Turn on cmake build by default (#42119)
Turns it on everywhere except Windows.
Tomas Weinfurt [Tue, 20 Oct 2020 18:50:36 +0000 (11:50 -0700)]
improve reliability of SslStream tests with failing certificate validation (#43570)
* improve reliability of SslStream tests with failing certificate validation
* Update src/libraries/System.Net.Security/src/System/Net/Security/SslStream.Implementation.cs
Co-authored-by: Stephen Toub <stoub@microsoft.com>
* fix failing ALPN test on old OpenSSL
Co-authored-by: Stephen Toub <stoub@microsoft.com>
afroze9 [Tue, 20 Oct 2020 18:45:40 +0000 (23:45 +0500)]
Fixing stale version badges in docs (#43558)
Fixing stale version badges in docs
From the issue description:
Improper cache-control in generated badges caused browsers caching svg
badges for a year. It is, therefore, recommend to modify related
README.md content by simple find & replace from: _version_badge.svg
to _version_badge.svg?no-cache
This will trigger github to compute and use different/new Camo proxy URL.
Fix #3822
Larry Ewing [Tue, 20 Oct 2020 18:31:33 +0000 (13:31 -0500)]
[browser][debugger] Clean up MessageId logic to prepare for sessions in the test harness (#43188)
* Clean up MessageId logic
* Update src/mono/wasm/debugger/DebuggerTestSuite/InspectorClient.cs
Co-authored-by: Ankit Jain <radical@gmail.com>
* Update src/mono/wasm/debugger/DebuggerTestSuite/InspectorClient.cs
Co-authored-by: Ankit Jain <radical@gmail.com>
* Update src/mono/wasm/debugger/DebuggerTestSuite/InspectorClient.cs
Co-authored-by: Ankit Jain <radical@gmail.com>
Co-authored-by: Ankit Jain <radical@gmail.com>
Tomas Weinfurt [Tue, 20 Oct 2020 18:04:43 +0000 (11:04 -0700)]
improve usability of NegotiateStreamInvalidOperationTest (#43622)
Sergey Mikolaytis [Tue, 20 Oct 2020 17:37:13 +0000 (20:37 +0300)]
[System.IO.Compression] ZipHelper.DosTimeToDateTime handle empty LastModified fields in zip archive entry header without internal exception (#43008)
* [System.IO.Compression] ZipHelper.DosTimeToDateTime handle empty LastModified field without internal exception to improve debugging performance on several zip files opening asynchronously
* [Test][Compression][ZipArhiveEntry] Add unit test to test empty lastModified field in zip entry
* refactor unit test code
* do not use arraypool in tests
* fix test after azure pipeline checks with errors
* fix invalid assert in new test
Mitchell Hwang [Tue, 20 Oct 2020 15:09:35 +0000 (11:09 -0400)]
[iOS] Add mono runtime and AppleAppBuilder pkgproj for iOS sample (#43048)
* Add iOS sample pkgproj
* Add iOS Sample pkgproj to descriptions
* Add iOS sample pkgproj ProjectReference
* Add project reference to build AppleAppBuiler.csproj
* Fixup AppleAppBuilder assembly path
* Add AppleAppBuilder Packaging target
* Remove UI file to allow and encourage sample users to modify the UI
* Move package from dotnet6-transport to dotnet6 feed
Co-authored-by: Mitchell Hwang <mitchell.hwang@microsoft.com>
Tomas Weinfurt [Tue, 20 Oct 2020 14:56:31 +0000 (07:56 -0700)]
disable DefaultConnect_EndToEnd_Ok on Windows7 (#43628)
* disable DefaultConnect_EndToEnd_Ok on Windows7
* update platform check
* update platform check
monojenkins [Tue, 20 Oct 2020 14:45:31 +0000 (10:45 -0400)]
[debugger] Switch to GC Unsafe in signal handler callbacks (#43600)
If the runtime gets a single step or breakpoint signal while it is already
running native code for a P/Invoke, it will be in GC Safe mode. Switch back to
GC Unsafe to run the debugger engine steps.
Addresses https://github.com/mono/mono/issues/20490
Co-authored-by: lambdageek <lambdageek@users.noreply.github.com>
Egor Bogatov [Tue, 20 Oct 2020 06:46:15 +0000 (09:46 +0300)]
add activity support for android sample (#43504)
Simon Nattress [Tue, 20 Oct 2020 03:13:49 +0000 (20:13 -0700)]
Add CSV map file generation for compiler diagnostics (#43612)
Add `--csvmap` switch to Crossgen2 which causes it to generate node summary CSV files that are parsable by tests. The intent is to use this for size on disk perf tests so just the node type statistics and individual node map are implemented in CSV files. We can add section and relocs easily if we think they'll be useful in future.
Larry Ewing [Tue, 20 Oct 2020 00:26:26 +0000 (19:26 -0500)]
Remove UnsupportedOsPlatform from CryptoConfig as a utility class (#43611)
* Remove UnsupportedOsPlatform from CryptoConfig as it is a safe utility class
* Clean up the other references
Andy Ayers [Mon, 19 Oct 2020 23:04:54 +0000 (16:04 -0700)]
First draft of Dynamic Pgo proposal (#43371)
First draft of Dynamic Pgo proposal.
Simon Nattress [Mon, 19 Oct 2020 20:49:43 +0000 (13:49 -0700)]
Fix CG2 outerloop comparison runs and OSX leg warning (#43547)
The outerloop run has OSX checked test runs for CG2 and CG2 composite modes. Currently both would use a log upload artifact with the same name (coreclr__TestRunLogs_R2R_CG2_OSX_x64_checked_outerloop). Disambiguate the two with a different `LogNamePrefix` for composite runs.
The crossgen2 comparison runs are failing to create the baseline crossgen'd framework because the live libraries zip's internal path has changed. .net5 has been replaced with .net6. The build should have failed when we tried to copy from the wrong folder but the error got eaten and we ended up with a malformed framework folder. Adjust the inline yml scripts so if they fail, it will fail that containing build task.
Andy Ayers [Mon, 19 Oct 2020 19:48:16 +0000 (12:48 -0700)]
JIT: don't inline methods with small stackallocs if the call site is … (#43516)
The logic in `fgInlinePrependStatements` that zero-initializes locals doesn't
kick in for jit temps introduced when small stackallocs are optimized. So if we
inline a method with a small stackalloc into a loop, the memory for the
stackalloc doesn't get properly re-zeroed on each iteration.
Fix by disallowing such inlines by adding an extra check: the call site must
not be in a loop.
Closes #43391.
Timo [Mon, 19 Oct 2020 19:30:56 +0000 (21:30 +0200)]
Equals and GetHashCode for Reflection.Pointer (#42547)
Alexander Köplinger [Mon, 19 Oct 2020 18:24:05 +0000 (20:24 +0200)]
Use NetCorePublic-Pool pool instead of AzDO hosted pool for Browser jobs (#43589)
The hosted pool runs into no disk space issues.
Steve MacLean [Mon, 19 Oct 2020 17:52:29 +0000 (13:52 -0400)]
Add crossBuild parameter to yaml (#43319)
* Add crossBuild parameter to yaml
Kevin Jones [Mon, 19 Oct 2020 17:40:08 +0000 (13:40 -0400)]
Use Span-based CreateHMAC where possible
Steve Harter [Mon, 19 Oct 2020 17:19:50 +0000 (12:19 -0500)]
Improve performance of polymorphism (#42538)
Eric Erhardt [Mon, 19 Oct 2020 16:38:53 +0000 (11:38 -0500)]
Refactor NonAscii bit mask usage (#43537)
* Refactor NonAscii bit mask usage
The Vector128 type is being left in a Blazor WASM application because Utf8Utility.GetPointerToFirstInvalidByte is always creating one, even though it isn't used.
I refactored the code such that the bit mask is no longer created on platforms it is not used, since it is only being used by Arm64.
Vitek Karas [Mon, 19 Oct 2020 15:57:38 +0000 (08:57 -0700)]
Add test to validate precedence of roll-forward and roll-forward-on-no-candidate-fx settings (#43510)
The comment on the test documents the desired precedence order.
Moved some of the existing tests which validate the behavior of the two settings together into a new separate test class.
Stephen Toub [Sun, 18 Oct 2020 23:10:32 +0000 (19:10 -0400)]
Fix async iterators to clear out state upon completion (#43522)
AsyncIteratorMethodBuilder was only doing its clean-up for completion (e.g. zeroing out the state machine and context, removing the object from a debugger-incited tracking table) if the last call to the iterator was part of asynchronous completion; if the last MoveNextAsync completed synchronously, the used code path could miss that cleanup work.
Tarek Mahmoud Sayed [Sun, 18 Oct 2020 18:48:57 +0000 (11:48 -0700)]
Fix TimeZoneInfo to handle Yukon zone (#43550)
Jan Kotas [Sat, 17 Oct 2020 17:02:31 +0000 (10:02 -0700)]
Convert more interop to use function pointers (#43514)
Tomas Weinfurt [Sat, 17 Oct 2020 17:00:31 +0000 (10:00 -0700)]
add better handling of SECBUFFER_EXTRA during TLS handshake on Windows (#43475)
* add better handling of SECBUFFER_EXTRA during TLS handshake on Windows (#42427)
* add better handling of SECBUFFER_EXTRA during TLS handshake on Windows
* fix boundery check
* fix spelling
* update Authentication_IncorrectServerName_Fail test
* feedback from review
* Update src/libraries/System.Net.Security/tests/FunctionalTests/CertificateValidationRemoteServer.cs
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
monojenkins [Sat, 17 Oct 2020 12:04:40 +0000 (08:04 -0400)]
[threads] At shutdown, don't wait for native threads that aren't calling Mono (#43174)
* [test] Call P/Invoke callback delegates from foreign threads
Change post-detach-1.cs to also have versions that call reverse pinvokes from
foreign threads that were not attached to mono.
The foreign threads should not prevent GC and should not prevent Mono from
shutting down using mono_manage_internal.
* [threads] Don't wait for native threads that aren't calling Mono
If a thread is started from native code, and it interacts with the runtime (by
calling a thunk that invokes a managed method), the runtime will attach the
thread - it will create a `MonoInternalThread` and add it to the list of
threads hash (in threads.c).
If the thread returns from the managed call, it will still be recorded by the
runtime, but as long as it is not running managed code anymore, it will prevent
shutdown. The problem is when we try to suspend the thread in order to abort
it, `mono_thread_state_init_from_handle` will see a NULL domain (because
`mono_threads_detach_coop_internal` will restore it to NULL when a managed
method returns back to native code). (On systems using POSIX signals to
suspend, the same check is in `mono_thread_state_init_from_sigctx`). As a
result, `mono_threads_suspend_begin_async_suspend` (or `suspend_signal_handler`
on POSIX) will set `suspend_can_continue` to FALSE, and
`mono_thread_info_safe_suspend_and_run` will not run the suspend callback.
As a result, when `mono_manage_internal` calls `abort_threads`, it will add the
thread handle to the wait list, but it will not actually request the thread to
abort. As a result, after `abort_threads` returns, the subsequent call to
`wait_for_tids` will block until the native thread terminates (at which point
the TLS destructor will notify the thread handle and wait_for_tids will
unblock).
This commit changes the behavior of `abort_threads` to ignore threads that do
not run `async_suspend_critical` and not to add them to the wait list. As a
result, if a native thread calls into managed and then returns to native code,
the runtime will not wait for it.
* [threads] Warn if mono_thread_manage_internal can't abort a thread
Give a hint to embedders to aid debugging
* rename AbortThreadData:thread_will_abort field
It's used to keep track of whether the thread will eventually throw a TAE (and
thus that we need to wait for it).
The issue is that under full coop suspend, we treat threads in GC
Safe (BLOCKING) state as if they're suspended and always execute
async_abort_critical. So the field has nothing to do with whether the thread
was suscessfully suspended, but rather whether it will (eventually) be aborted.
* [threads] Fix async_abort_critical for full coop
If the foreign external thread doesn't have any managed methods on its
callstack, but it once called a native-to-managed wrapper, it will be left by
mono_threads_detach_coop in GC Safe (BLOCKING) state. But under full coop, GC
Safe state is considered suspended, so mono_thread_info_safe_suspend_and_run
will run async_abort_critical for the thread.
But the thread may never call into Mono again, in which case it will never
safepoint and aknowledge the abort interruption. So set thread_will_abort to
FALSE in this case, so that mono_thread_manage_internal won't try to wait for it.
---
Related to an issue first identified in https://github.com/mono/mono/pull/18517
---
This supersedes mono/mono#18656
Co-authored-by: lambdageek <lambdageek@users.noreply.github.com>
dotnet-maestro[bot] [Sat, 17 Oct 2020 11:30:14 +0000 (13:30 +0200)]
[master] Update dependencies from dotnet/arcade dotnet/xharness dotnet/llvm-project dotnet/icu mono/linker (#43355)
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Co-authored-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
Co-authored-by: Marek Safar <marek.safar@gmail.com>
Zoltan Varga [Sat, 17 Oct 2020 06:53:14 +0000 (02:53 -0400)]
Ongoing cmake build work. (#43519)
* Ongoing cmake build work.
* Fix llvm support when cross compiling
* Fix/enable ios support.
* Add support for amd64->arm/arm64 cross builds on CI.
Sergey Prytkov [Sat, 17 Oct 2020 06:31:03 +0000 (09:31 +0300)]
test for 2164 and corert 8246 (#43511)
Jan Kotas [Sat, 17 Oct 2020 06:30:28 +0000 (23:30 -0700)]
Port changes from dotnet/runtimelab (#43496)
- Fix build errors in System.Globalization.Native with libraries/Native warning level, add System.Globalization.Native back to the libraries/Native build to protect it,
- Misc other changes
Ryan Lucia [Sat, 17 Oct 2020 06:29:37 +0000 (02:29 -0400)]
[mono] Ensure MonoAssemblyName is in sync between managed and native (#43536)
We also no longer appear to need the NETCORE or DISABLE_REMOTING defines in msbuild, so remove them
Marek Safar [Sat, 17 Oct 2020 06:26:07 +0000 (08:26 +0200)]
Enable Mono substitutions and attributes exclusion for mobile (#43507)
Marek Safar [Sat, 17 Oct 2020 06:23:23 +0000 (08:23 +0200)]
Make more suitable SPC instance methods static (#43280)
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Eric Erhardt [Sat, 17 Oct 2020 03:26:03 +0000 (22:26 -0500)]
Remove unused Common Extensions code (#43452)
Patrick Westerhoff [Sat, 17 Oct 2020 02:55:54 +0000 (04:55 +0200)]
Add additional URI schemes (WIP) (#43375)
Rikki Gibson [Sat, 17 Oct 2020 02:49:41 +0000 (19:49 -0700)]
Fix nullable warnings in struct constructors (#43472)
Stephen Toub [Sat, 17 Oct 2020 02:24:20 +0000 (22:24 -0400)]
Remove some unnecessary unsafe usage (#43430)
Stephen Toub [Sat, 17 Oct 2020 02:21:45 +0000 (22:21 -0400)]
Fix xunit analyzers to run on library test projects (#43459)
We don't want most analyzers running over our test code currently (some rules could be enabled with varying degrees of effort), but we do want the xunit analyzers running, and they haven't been. Fix that by creating a new ruleset specific to library tests, and switching over to use it when building library test projects.
Carlos Sanchez [Sat, 17 Oct 2020 00:12:30 +0000 (17:12 -0700)]
Port ACL OpenExisting overloads for EventWaitHandle/Mutex/Semaphore (#43134)
* Add methods to ref file.
* Add empty methods to src files.
* Add the .NET Framework version of these methods for .NET Standard.
* Move OpenExistingResult enum to Common and consume it where needed.
* Remove Unix comment in Windows-only file.
* Document OpenExistingResult enum.
* Make out result parameters nullable.
* Add exception resource string.
* Imlement EventWaitHandleAcl methods.
* Implement MutexAcl methods.
* Implement SemaphoreAcl methods.
* Remove unnecessary check for null or empty name.
* Document the EventWaitHandleAcl methods.
* Document the MutexAcl methods.
* Document the SemaphoreAcl methods.
* Add negative enum check. Fix incorrect cast.
* Add NotNullWhen attribute to TryOpenExisting out parameter. Adjust docs.
* Add EventWaitHandle basic unit tests.
* Add Semaphore basic unit tests
* Add Mutex basic unit tests.
* Add Mutex exception handling unit tests.
* Add EventWaitHandle exception handling unit tests.
* Add Semaphore exception handling unit tests.
* EventWaitHandle and Mutex throw DirectoryNotFoundException when PathNotFound. Adjust documentation.
* Nullability in ref file.
* Do not check for rights out of range value, let Windows handle it. Adjust unit tests accordingly.
* Spacing.
* Remove enum range test. Add PathNotFound tests.
Co-authored-by: Carlos Sanchez Lopez <carlossanlop@users.noreply.github.com>
Buyaa [Fri, 16 Oct 2020 23:39:19 +0000 (16:39 -0700)]
Fix new warnings (#43097)
* Fix CA1416 warnings in runtime repo
Simon Nattress [Fri, 16 Oct 2020 23:18:03 +0000 (16:18 -0700)]
Add issues.targets exclusions for Crossgen2 Pri 1 Tests (#43473)
This baselines the remaining test failures with GH issues to track for further investigation.
Tomas Weinfurt [Fri, 16 Oct 2020 21:45:24 +0000 (14:45 -0700)]
adjust renegotiation tests to match product change (#43123)
* adjust renegotiation tests to match product change
* add assert for validationCount
Andy Ayers [Fri, 16 Oct 2020 18:33:33 +0000 (11:33 -0700)]
JIT: some small profile related fixes (#43408)
1. If we're inheriting a fraction of the profile weight of a profiled block,
mark the inheriting block as profiled. This prevents methods like
`optSetBlockWeights` or `optMarkLoopBlocks` from coming along later and setting
the weights to something else. Since the full inheritance method has similar
logic, make it delegate to the fractional one, with a scale of 100 (no scaling).
2. If we switch from Tier0 to FullOpt, make sure to clear the BBINSTR flag,
else we'll put probes into optimized code.
3. Dump edge weights in the dot graph, if we have them.
4. Only dump the flow graph twice per phase.
Maxim Lipnin [Fri, 16 Oct 2020 17:56:47 +0000 (20:56 +0300)]
Modify System.Net.HttpListener to throw PNSE at assembly level on browser (#43401)
Kevin Jones [Fri, 16 Oct 2020 16:49:03 +0000 (12:49 -0400)]
Remove unused Unix PKCS12 shims
Because the PKCS#12/PFX import is now done with managed code, the PKCS12 shim was dead code.
Jan Vorlicek [Fri, 16 Oct 2020 15:52:02 +0000 (17:52 +0200)]
Fix two tests for runincontext testing (#43457)
* Disable two tests for runincontext testing
These tests are not compatible with running using the runincontext tool.
* Reflect PR feedback - make the test work instead
Andy Ayers [Fri, 16 Oct 2020 02:37:45 +0000 (19:37 -0700)]
JIT: ensure bbflags get treated as 64 bit literals (#43451)
Expressions like `~(BBF_KEEP_BBJ_ALWAYS)` were being evaluated as 32 bit signed
quantities, leading to mask value `00000000_7FFFFFFFF` instead of the desired
`FFFFFFFF_7FFFFFFFF`, causing inadvertent clearing of flags with higher value.
SPMI diffs showed the only flag loss that impacted codegen was `BBF_HAS_CALL`,
which feeds into the CSE heuristics. So no known correctness issue, but it is
certainly possible to also lose `BBF_DOMINATED_BY_EXCEPTIONAL_ENTRY` or
`BBF_HAS_SUPPRESSGC_CALL` and that may be more serious.
Jan Kotas [Fri, 16 Oct 2020 01:35:29 +0000 (18:35 -0700)]
Delete superfluous suffix
Juan Hoyos [Fri, 16 Oct 2020 01:06:40 +0000 (18:06 -0700)]
Add back nightly build table (#43392)
* Update README table generator.
* Link README to new table location.
* Add 6.0 coreclr runtime links for table generation.
* Add generated table to the dogfooding page.
* Update some stale references to sleet feeds, older versions of the runtime, and deprecated packages.
* Add subset for table generation and reorder table to frontload OS groups.
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Larry Ewing [Thu, 15 Oct 2020 19:54:41 +0000 (14:54 -0500)]
Add a makefile sample to run test-browser (#43382)
Thays Grazia [Thu, 15 Oct 2020 19:28:58 +0000 (16:28 -0300)]
[debugger][wasm] Implement Debugger.IsAttached on wasm (#42532)
* Debugger.IsAttached is now working on wasm. And can be used to detect if debugger is attached.
Fix #42411
* Update src/mono/wasm/runtime/library_mono.js
Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
* Using the infrastructure to not send dynamically loaded assemblies if debugger is not attached.
Changing where to check if the assembly is already added to avoid unnecessary checks.
* Checking the assembly name size.
Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
Vladimir Sadov [Thu, 15 Oct 2020 18:42:51 +0000 (11:42 -0700)]
Delete CoreDllMain, remove DLL_THREAD_DETACH from EEDllMain, just rely on thread local destructor (#43423)
Jan Vorlicek [Thu, 15 Oct 2020 18:31:35 +0000 (20:31 +0200)]
Fix runincontext testing (#43446)
After some recent shuffles of tests location, running the coreclr tests
with runincontext option stopped working. This change fixes it by fixing
the script path in the run.py.
Stephen Toub [Thu, 15 Oct 2020 15:50:13 +0000 (11:50 -0400)]
Revert "add better handling of SECBUFFER_EXTRA during TLS handshake on Windows (#42427)" (#43442)
This reverts commit
51f6b8bd3a2a38c432b1cd1f7c465c256f5f699c.
monojenkins [Thu, 15 Oct 2020 15:25:38 +0000 (11:25 -0400)]
[runtime] Add an options API. (#32595)
* [runtime] Add an options API.
Add a general options API to the runtime, based on the flags API in Google V8:
```https://chromium.googlesource.com/v8/v8.git/+/refs/heads/master/src/flags/```
Supported features:
* Definition of runtime options in a declarative way.
* Options are mapped to C globals.
* BOOL/INT/STRING data types.
* Generic option parsing code.
* Generic usage code.
* Read-only flags for build-time optimization.
This is designed to replace the many option parsing functions in
the runtime, MONO_DEBUG, the many mono_set_... functions etc.
* Fix the build.
Co-authored-by: vargaz <vargaz@users.noreply.github.com>
Co-authored-by: Zoltan Varga <vargaz@gmail.com>
monojenkins [Thu, 15 Oct 2020 15:11:27 +0000 (11:11 -0400)]
Add w32subset.h into monoutils_sources. (#43435)
Co-authored-by: lateralusX <lateralusX@users.noreply.github.com>
Thomas Levesque [Thu, 15 Oct 2020 14:33:14 +0000 (16:33 +0200)]
Bind byte array from base64 config value (#43150)
* Bind byte array from base64 config value
* Add test case for failure
* Add test for null case
* Remove unnecessary null check
Co-authored-by: Thomas Levesque <thomaslevesque@users.noreply.github.com>
Eirik Tsarpalis [Thu, 15 Oct 2020 14:04:16 +0000 (15:04 +0100)]
Remove some unsafe code from Console (#43368)
* Remove some unsafe code from Console
* preserve original byte-by-byte decoding
* remove unsafe declaration where not needed
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Egor Bogatov [Thu, 15 Oct 2020 13:51:21 +0000 (16:51 +0300)]
[mono] Include hostpolicy/hostfxr in mono desktop runtime packs (#42729)
Currently mono desktop runtime packs don't include `libhostfxr.*` and `libhostpolicy*` libs needed for corehost in self contained mode.
Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
Steve Harter [Thu, 15 Oct 2020 13:35:52 +0000 (08:35 -0500)]
Add MetadataToken getter override to builder classes (#43330)
Eric Erhardt [Thu, 15 Oct 2020 13:07:39 +0000 (08:07 -0500)]
Clean up DependencyModel Json read/write (#43376)
* Clean up DependencyContextWriter
- Remove UnifiedJsonWriter
- Remove ArrayBufferWriter and write to the Stream directly
* Clean up DependencyContextJsonReader
- Remove UnifiedJsonReader
- Move any reader logic to extension methods
Stephen Toub [Thu, 15 Oct 2020 12:42:27 +0000 (08:42 -0400)]
Fix StaticTestGenerator (#43432)
It's rotted a bit.
Kenneth Pouncey [Thu, 15 Oct 2020 11:55:01 +0000 (13:55 +0200)]
[browser][crypto] Remove restraining not supported attribute Primitives (#43387)
* [browser][crypto] Remove restraining not supported attribute
- The modules included within the System.Security.Cryptography.Primitives module should still be available for use outside of browser os.
* Address review comments. Remove `<IncludePlatformAttributes>` attribute as well
Zoltan Varga [Thu, 15 Oct 2020 02:59:15 +0000 (22:59 -0400)]
Fix the android cmake build. (#43421)
Levi Broderick [Thu, 15 Oct 2020 01:30:04 +0000 (18:30 -0700)]
Remove unsafe code from System.Web.HttpUtility (#43422)
David Wrighton [Thu, 15 Oct 2020 00:13:50 +0000 (17:13 -0700)]
Arm32 Crossgen2 initial support (#43243)
- Fix type layout bugs
- Sequential or Explicit layout classes without explicit field offsets on arm32 should align their fields based on the start of the field list of the object
- The field base offset used for R2R calculation on Arm32 should respect the RequiresAlign8 flag
- Computing true for requiresAlign8 in auto field layout should set the alignment of a class to 8 during auto layout
- if a class derives from an type which requires 8 byte alignment, set the derived to require higher alignment
- Align the EH info table on 4 byte boundaries
- Set the thumb bit on the arm32 personality routine RVA in XData
- Enable Crossgen2 smoke test for arm
- Adjust architecture specific type layout tests to match CoreCLR behavior
- Fix alignment of Export functions within PE file
Nikola Milosavljevic [Wed, 14 Oct 2020 23:40:36 +0000 (16:40 -0700)]
[.NET 5.0] Add support for libicu67 and several more higher versions (#43420)
* Add support for libicu67
* Add libicu68
* Adding libicu versions 69 to 72
Steve Pfister [Wed, 14 Oct 2020 21:38:08 +0000 (17:38 -0400)]
Add TargetOS=Android back into the sample run. This caused TargetsMobile not to be set (#43394)
Co-authored-by: Steve Pfister <steve.pfister@microsoft.com>
Jeremy Sinclair [Wed, 14 Oct 2020 21:22:37 +0000 (17:22 -0400)]
Implemented clock_gettime_nsec_np in libraries for Apple Silicon support (#43343)
* Replaced mach_absolute_time instances with clock_gettime_nsec_np
* Removed GetTimestampResolution method and replaced with 10^9
Steve Harter [Wed, 14 Oct 2020 19:55:42 +0000 (14:55 -0500)]
Improve ArrayBufferWriter re-alloc perf when size is > int.MaxSize / 2 (#42950)
Santiago Fernandez Madero [Wed, 14 Oct 2020 19:43:15 +0000 (12:43 -0700)]
Disable NamedPipeTests CurrentUserOnly on server core (#43381)
Tomáš Rylek [Wed, 14 Oct 2020 19:32:29 +0000 (21:32 +0200)]
Clean up CG2 section in issues.targets by removing closed issues (#43055)
Tomas Weinfurt [Wed, 14 Oct 2020 18:17:12 +0000 (11:17 -0700)]
add better handling of SECBUFFER_EXTRA during TLS handshake on Windows (#42427)
* add better handling of SECBUFFER_EXTRA during TLS handshake on Windows
* fix boundery check
* fix spelling
Eric Erhardt [Wed, 14 Oct 2020 15:51:08 +0000 (10:51 -0500)]
Address PR feedback from #42578 (#43362)
Eugene Shcherbo [Wed, 14 Oct 2020 15:26:04 +0000 (18:26 +0300)]
Validate input string passed to LogValuesFormatter (#43238)
Add validation of a format string passed to LogValuesFormatter
to throw `ArgumentNullException` if the string is `null`
so that all the methods of the `LogMessage.Define` group
depending on that class doesn't throw `NullReferenceException`
when configuring a logger.
Fix #36565
Huo Yaoyuan [Wed, 14 Oct 2020 15:19:24 +0000 (23:19 +0800)]
Add ReadOnlySpan<char> overloads to JsonSerializer.Deserialize (#41957)
* Add char span overloads to JsonSerializer.Deserialize.
* Add new methods to ref source.
* Fix ambiguous call in test.
* Fix documentation issue.
* Guard and test for empty span.
* Add span in deserialization test wrapper.
* Apply doc suggestions
Co-authored-by: Layomi Akinrinade <layomia@gmail.com>
* Treat default span as empty, and cover returnType in test.
* Apply doc suggestions
Co-authored-by: Ahson Khan <ahkha@microsoft.com>
* Add exception doc for null returnType.
Co-authored-by: Layomi Akinrinade <layomia@gmail.com>
Co-authored-by: Ahson Khan <ahkha@microsoft.com>