Will Smith [Thu, 16 Mar 2023 23:59:39 +0000 (16:59 -0700)]
[JIT] ARM64 - Optimize `x < 0` and `x >= 0` (#83176)
* Initial work that allows optimizing x < 0
* Few tweaks
* Optimized x < 0 and x >= 0 for conditionals
* Removed old commented code. Switched tbz and tbnz
* Simplified
* Fix build
* Check for possible interference
* Reverse
* Check invariant-range
* Cleanup
* Cleanup
* Handle new JCMP flags in gtReverseCond
* Comment update
* Remove extra flags
* Simplify further
* Fix warning
* Update src/coreclr/jit/lower.cpp
Co-authored-by: Jakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>
* Fix warning
* Fixing assert
---------
Co-authored-by: Jakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>
Badre BSAILA [Thu, 16 Mar 2023 23:35:23 +0000 (00:35 +0100)]
Convert to GeneratedRegexAttribute fixer should preserve references to const string fields (#81997)
* Convert to GeneratedRegexAttribute fixer should preserve references to const string fields
* add test to cover external const case
* fix double slashes
* simplify verbatime string generation
* delete unused quote
Katelyn Gadd [Thu, 16 Mar 2023 23:24:53 +0000 (16:24 -0700)]
Raise inlining length limit in the interpreter from 20 to 30. (#83490)
This is enough to allow List<T>.get_Item to be inlined (as long as we also allow calls), among other critical methods, and enables big speedups for some benchmarks.
Manish Godse [Thu, 16 Mar 2023 21:46:36 +0000 (14:46 -0700)]
fix a bug where totalCPU count was being used for cachesize computation (#83528)
Vladimir Sadov [Thu, 16 Mar 2023 21:45:39 +0000 (14:45 -0700)]
CoreCLR support for InlineArrayAttribute. (struct layout part) (#82744)
* initial port from the prototype
* parse the attribute in MT builder
* validate replicated size
* aot changes
* refmap
* validate total size in ilc
* add the actual attribute
* Apply suggestions from code review
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
* add a small use of InlineArray in CoreLib - to get some crossgen coverage.
* a few more uses in CorLib
* fix for sequential layout
* Standardize on use of "InlineArray" in the implementation
* simpler layout replication
* some initial tests (will add more)
* more tests
* limit the max size of array instance to 1MiB
* fix an assert in importercalls.cpp
* "result" in GC layout should track the pointer count, not the size
* error messages
* fixed uses of "value array" in comments.
* PR feedback on StackAllocedArguments
* use the same size limit for inline arrays in the typeloader
* more PR feedback
* remove SetCannotBeBlittedByObjectCloner
* moving GetInlineArrayLength to MetadataType and related changes
* use type.Context.Target.PointerSize
* lost resources change
* fix for x86
* Do not make InlineArrayType an inline array just yet.
* CORINFO_FLG_INDEXABLE_FIELDS
---------
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Layomi Akinrinade [Thu, 16 Mar 2023 21:42:38 +0000 (14:42 -0700)]
Create source generator for configuration binding (#82179)
* Create source generator for configuration binding
* Add baseline tests
* Rename test project folders
* Avoid passing entire compilation to generator execute method
* Enable nullable
* Add logic to include generator in nuget package and enable it conditionally
* Address feedback
Steve Harter [Thu, 16 Mar 2023 21:26:58 +0000 (16:26 -0500)]
Remove S.S.Permissions reference from S.DirectoryServices (#82453)
Pavel Savara [Thu, 16 Mar 2023 20:37:56 +0000 (21:37 +0100)]
disable startupMemoryCache by default (#83536)
Tanner Gooding [Thu, 16 Mar 2023 20:36:24 +0000 (13:36 -0700)]
Adding support for Vector512 bitwise operations: And, AndNot, Or, OnesComplement, and Xor (#83354)
* Adding support for Vector512 bitwise operations: And, AndNot, Or, OnesComplement, and Xor
* Adding AVX512F APIs for And, AndNot, Load, Or, Store, and Xor
* Fix the "throw new PlatformNotSupported" expressions for Avx512F
* Fixing some test build failures
* Ensure the Avx512F and related classes can lightup in import
* Ensure that JitStressEvexEncoding is only checked in debug
* Allow 64-bit alignment in the test data table types and fix the AVX512 enablement check
Pavel Savara [Thu, 16 Mar 2023 20:34:31 +0000 (21:34 +0100)]
[node] unblock WS tests (#83518)
* active issue https://github.com/dotnet/runtime/issues/83517
Co-authored-by: Marek Fišera <mara@neptuo.com>
Viktor Hofer [Thu, 16 Mar 2023 20:27:16 +0000 (21:27 +0100)]
Fix System.Management wminet_utils.dll lookup code for arm64 (#83522)
* Fix System.Management wminet_utils.dll lookup code for arm64
* Update ManagementScope.cs
Jeremy Koritzinsky [Thu, 16 Mar 2023 20:14:39 +0000 (13:14 -0700)]
Use SOS to dump managed stack traces from a dump on Windows (#82867)
Vitek Karas [Thu, 16 Mar 2023 13:49:47 +0000 (06:49 -0700)]
Implements Requires*Attribute on class behavior for NativeAOT (#83417)
Implements most of the missing pieces to get Requires on class working correctly in NativeAOT.
Major changes:
* Detect Requires mismatch between derived and base class
* Warn on field access if the owning class has Requires
* Changes to reflection marking to warn on more cases (instance methods on Requires classes for example)
Supportive changes:
* The helpers to detect Requires attributes now return the found attribute view out parameter
Fixes #81158
Still two missing pieces - tracked by https://github.com/dotnet/runtime/issues/82447:
* Requires on attributes - NativeAOT doesn't handle this at all yet, part of it is Requires on the attribute class
* Avoid warning when DAM marking an override method which has Requires (or its class has) - this avoids lot of noise, NativeAOT currently generates these warnings in full
Vlad Brezae [Thu, 16 Mar 2023 13:05:44 +0000 (15:05 +0200)]
[mono][interp] Lower div.un to shr.un.imm (#83498)
* [mono][interp] Remove redundant opcode
Generate sub opcode instead which is detected by other optimizations.
* [mono][interp] Lower div.un to shr.un
Tanner Gooding [Thu, 16 Mar 2023 12:59:31 +0000 (05:59 -0700)]
Change LSRA to more efficiently initialize the availableRegs array (#83479)
* Change LSRA to more efficiently initialize the availableRegs array
* Apply formatting patch
Marie Píchová [Thu, 16 Mar 2023 10:20:48 +0000 (11:20 +0100)]
Updated generated interop files from msquic (#83092)
Ilona Tomkowicz [Thu, 16 Mar 2023 07:54:34 +0000 (08:54 +0100)]
[browser] Fix encoding problem when publishing (#82833)
* Fixed https://github.com/dotnet/runtime/issues/78953.
* New wbt publish test case: Unicode sign in project name.
* Removed duplicated, unused function + addressed @akoeplinger review.
* Fix.
* Revert AOT tests to fix them in a follow-up.
* Test Blazor as well.
* @radical's review: test reduction + relinking
* Block relinking tests with Unicode signs.
* Added active issue link.
Carlos Sánchez López [Thu, 16 Mar 2023 07:45:27 +0000 (00:45 -0700)]
Change execution order conditions for intellisense swapping and copying msbuild targets. (#83117)
* Change execution order conditions for intellisense swapping and copying msbuild targets.
* Don't change doc file when there isn't a intellisense one
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Viktor Hofer [Thu, 16 Mar 2023 02:58:09 +0000 (03:58 +0100)]
Remove System.Drawing.Common from runtime (#83356)
* Remove System.Drawing.Common from runtime
System.Drawing.Common was merged into winforms with
https://github.com/dotnet/winforms/pull/8633.
Removing its sources and using PackageReferences to reference it.
* Remove dependency and fix tests
* Fix shim S.D.C reference
* Remove runtime test which causes failures
dotnet-maestro[bot] [Thu, 16 Mar 2023 02:30:29 +0000 (22:30 -0400)]
[main] Update dependencies from dotnet/arcade (#83386)
* Update dependencies from https://github.com/dotnet/arcade build
20230313.1
Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 8.0.0-beta.23159.1 -> To Version 8.0.0-beta.23163.1
* Update dependencies from https://github.com/dotnet/arcade build
20230314.2
Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 8.0.0-beta.23159.1 -> To Version 8.0.0-beta.23164.2
---------
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Thays Grazia [Thu, 16 Mar 2023 01:27:09 +0000 (22:27 -0300)]
[wasm][debugger] Debug CI (#83266)
Increase timeout
wait until the runtime is ready when receive dotnet.runtests command.
Elinor Fung [Thu, 16 Mar 2023 00:15:41 +0000 (17:15 -0700)]
Add host tests for asset resolution behaviour without fallback graph (#83434)
Eduardo Velarde [Wed, 15 Mar 2023 22:12:18 +0000 (15:12 -0700)]
Add property to get owner composite executable (#83339)
DeepakRajendrakumaran [Wed, 15 Mar 2023 21:07:40 +0000 (14:07 -0700)]
Add lowering for get_One, get_AllBitSet, createScalar(), createScalarUnsafe(). (#83402)
* Add lowering for get_One, and get_AllBitSet.
* CreateScalar() CreateScalarUnsafe()
* Fix incorrect switch + disasm
Alexander Köplinger [Wed, 15 Mar 2023 21:00:25 +0000 (22:00 +0100)]
[Codespaces] Fix prebuild by using newer dotnet sdk (#83331)
fix to resolve a build error during Codespaces prebuild: https://github.com/dotnet/msbuild/issues/8531
Katelyn Gadd [Wed, 15 Mar 2023 20:36:38 +0000 (13:36 -0700)]
Revert "[wasm] Add a monitoring phase to jiterpreter traces and discard unproductive ones (#83432)" (#83446)
This reverts commit
1cfda5e9a887d39004644c2f96a87b31fcca0ac7.
Tomas Weinfurt [Wed, 15 Mar 2023 19:31:38 +0000 (12:31 -0700)]
throw specific Authentication exception for ephemeral keys on Windows (#83436)
* throw specific Authentication exception for ephemenral keys on Windows
* cleanup
* android
* Update src/libraries/System.Net.Security/src/Resources/Strings.resx
Co-authored-by: Kevin Jones <vcsjones@github.com>
---------
Co-authored-by: Kevin Jones <vcsjones@github.com>
Elinor Fung [Wed, 15 Mar 2023 18:21:09 +0000 (11:21 -0700)]
Switch tests for --depsfile to mocked components (#83435)
Julie Lee [Wed, 15 Mar 2023 16:14:49 +0000 (09:14 -0700)]
JIT: Fold unreachable cases for switch in importer. (#82793)
* Fold unreachable cases for switch in importer.
* Enable Switch Folding only when opts.OptimizationEnabled() is true to resolve regression in minopts.
* Code cleanup.
Aleksey Kliger (λgeek) [Wed, 15 Mar 2023 15:45:05 +0000 (11:45 -0400)]
[wasm] Fix threading startup after emscripten bump; add smoke test (#83352)
* Fix threading startup after Emscripten 3.1.30 bump
* Add threading smoke test
* Run threading smoke test on rolling builds and on every PR
* force run the threading smoke tests for runtime-wasm
* Apply suggestions from code review
* threading smoke tests only on browser
* remove all default smoke tests before adding minimal threading test
Co-authored-by: Ankit Jain <radical@gmail.com>
Andy Ayers [Wed, 15 Mar 2023 14:53:22 +0000 (07:53 -0700)]
JIT: fix bug in cloning conditions for jagged array (#83414)
When checking that an inner array access is in bounds, we must ensure any outer
access is fully in bounds too. We were checking that `idx < array.Len` but not
that `idx >= 0`.
Use an unsigned compare for this check so we can do both sides with a single
instruction.
Fixes #83242.
Michal Strehovský [Wed, 15 Mar 2023 14:43:42 +0000 (23:43 +0900)]
Specify compacting GC in ObjWriter (#83447)
Badre BSAILA [Wed, 15 Mar 2023 13:34:01 +0000 (14:34 +0100)]
ObjectFactory should verify against a null serviceProvider (#82739)
Ivan Diaz Sanchez [Wed, 15 Mar 2023 12:54:37 +0000 (05:54 -0700)]
Fix Test Watcher Timeouts and Log Checker File Reading Issues (#83427)
* Added safeguards for reading files with the log checker and fixed the low timeouts.
* Changed seconds to elapsedmilliseconds
Fan Yang [Wed, 15 Mar 2023 12:15:41 +0000 (08:15 -0400)]
[Mono] Add more binary op intrinsics for ARM64 mini JIT (#83337)
* Add more arm64 intrinsics for binary op
* Enable two operator operations
* Enable UnaryPlus
* Address review feedback
* Remove name
Jakob Botsch Nielsen [Wed, 15 Mar 2023 10:57:55 +0000 (11:57 +0100)]
JIT: Remove "add copies" phase (#83310)
This phase seems to try to do some ad-hoc live range splitting to improve things in assertion prop, but it almost barely kicks in.
When it does kick in it seems to overall be a regression, both in ASM diffs and in TP diffs.
Furthermore, we pay 16 bytes in every LclVarDsc (out of 88) for bookkeeping purposes for this pass, even in MinOpts.
Pavel Savara [Wed, 15 Mar 2023 10:03:20 +0000 (11:03 +0100)]
fix noisy tests (#83448)
Pavel Savara [Wed, 15 Mar 2023 10:02:51 +0000 (11:02 +0100)]
[browser] new EmccEnableAssertions and EmccEnvironment MSBuild props (#82954)
* EmccEnableAssertions and EmccEnvironment MSBuild props
* symbols as separate asset type
Co-authored-by: Ankit Jain <radical@gmail.com>
Co-authored-by: Marek Fišera <mara@neptuo.com>
Vitek Karas [Wed, 15 Mar 2023 09:38:29 +0000 (02:38 -0700)]
Produce IL3000 and IL3001 from NativeAOT compiler (#83253)
This also implements the suppression of the IL3002 on the affected methods both in the NativeAOT compiler and the analyzer.
Adds single-file specific tests which are skipped for the trimmer.
Fixes: https://github.com/dotnet/runtime/issues/83088
Fixes: https://github.com/dotnet/runtime/issues/82475
Johan Lorensson [Wed, 15 Mar 2023 08:07:42 +0000 (09:07 +0100)]
EventPipe container types optimizations. (#83251)
During work collecting regressions statistics for #78852 I did some profiling on performance tests included in native EventPipe tests, https://github.com/dotnet/runtime/blob/main/src/mono/mono/eventpipe/test. This commit implements a couple of optimizations in the EventPipe native container classes as well as Mono's EventPipe implementation improving performance in low level native EventPipe performance tests.
Commit also includes a number of new native EventPipe tests covering optimizations done in dn_vector_ptr_t.
dependabot[bot] [Wed, 15 Mar 2023 08:01:27 +0000 (09:01 +0100)]
Bump webpack from 5.68.0 to 5.76.0 in /src/mono/sample/wasm/node-webpack (#83418)
Bumps [webpack](https://github.com/webpack/webpack) from 5.68.0 to 5.76.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.68.0...v5.76.0)
---
updated-dependencies:
- dependency-name: webpack
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Katelyn Gadd [Wed, 15 Mar 2023 07:52:47 +0000 (00:52 -0700)]
Add an INTERP_OPT for the jiterpreter (#83363)
This ensures that it will be disabled when debugging
Eirik Tsarpalis [Wed, 15 Mar 2023 07:16:26 +0000 (07:16 +0000)]
Implement JsonSerializerOptions.TypeInfoResolverChain. (#83358)
* Implement JsonSerializerOptions.TypeInfoResolverChain.
* Move DebuggerDisplay from ConfigurationList to JsonTypeInfoResolverChain -- address feedback.
* Ensure JsonSerializerOptions hash equates null with empty converter list.
* Use correct error message when modifying readonly resolver chains.
* Update src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.Caching.cs
* Update src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.Caching.cs
Michal Strehovský [Wed, 15 Mar 2023 06:20:21 +0000 (15:20 +0900)]
Enable EventSource in ILC (#83433)
Katelyn Gadd [Wed, 15 Mar 2023 05:33:41 +0000 (22:33 -0700)]
[wasm] Add a monitoring phase to jiterpreter traces and discard unproductive ones (#83432)
* Add a monitoring phase to jiterpreter traces, where we determine the average distance (in bytes) they travel. Then reject traces that have a low average distance after the monitoring period
Jeremy Koritzinsky [Wed, 15 Mar 2023 02:24:48 +0000 (19:24 -0700)]
Implement HResult swapping for generated COM methods. (#83348)
Michal Strehovský [Wed, 15 Mar 2023 01:28:51 +0000 (10:28 +0900)]
Fix spurious exception while compiling optimized code (#83324)
When RyuJIT tried to inline an unboxing stub, it would trigger an exception that would abort the inline. Make it so that we don't trigger an exception.
Zoltan Varga [Wed, 15 Mar 2023 00:33:35 +0000 (20:33 -0400)]
[wasm] Disable a failing System.Drawing.Primitives test. (#83397)
* [wasm] Disable a failing System.Drawing.Primitives test.
* Update src/libraries/System.Drawing.Primitives/tests/RectangleTests.cs
Co-authored-by: Ankit Jain <radical@gmail.com>
---------
Co-authored-by: Ankit Jain <radical@gmail.com>
Badre BSAILA [Wed, 15 Mar 2023 00:03:45 +0000 (01:03 +0100)]
Misleading error "Cannot delete an already deleted object" (#83410)
Tomáš Rylek [Tue, 14 Mar 2023 22:59:42 +0000 (23:59 +0100)]
Add references to xunit.*.dll to CLRTest.Crossgen.targets (#83413)
This change fixes the exceptions thrown from Crossgen2 JIT
interface when JIT tries to resolve tokens from xunit.assert.
As a secondary effect the frequent exception throws triggered
the race condition
https://github.com/dotnet/runtime/issues/81884
triggering non-deterministic native CoreCLR runtime failures on
arm64. I was originally reluctant to fix this primary issue until
the native runtime bug is understood as otherwise this fix would
just cause the issue to stop manifesting without being actually
fixed. As the runtime bug has been fixed by now, I am fixing
Crossgen2 executions to stop hitting these resolution exceptions.
Thanks
Tomas
Jeremy Koritzinsky [Tue, 14 Mar 2023 22:53:17 +0000 (15:53 -0700)]
Use IAttributeOperation for our attribute-based analyzers (#83239)
Egor Bogatov [Tue, 14 Mar 2023 22:33:05 +0000 (23:33 +0100)]
JIT: Expand runtime lookups in a late phase (#81635)
Co-authored-by: Jakob Botsch Nielsen <jakob.botsch.nielsen@gmail.com>
Simon Lovely [Tue, 14 Mar 2023 22:07:21 +0000 (22:07 +0000)]
Ensure that default media type is used when 'null' is passed-in to StringContent #81506 (#81722)
Vlad Brezae [Tue, 14 Mar 2023 20:42:09 +0000 (22:42 +0200)]
[mono][interp] Add intrinsics for BitOperations (#82827)
* [mono][interp] Add intrinsics for BitOperations.RotateLeft/Right
* [mono][interp] Remove no longer used method
* [mono][interp] Add intrinsics for bit count operations
* [mono][interp] Intrinsify also S.R.I.X86.Lzcnt and WasmBase
* [mono][interp] Add intrinsic also for BitOperations.Log2
* [mono][interp] Remove intrinsics for X86Base
Vladimir Sadov [Tue, 14 Mar 2023 19:47:48 +0000 (12:47 -0700)]
[NativeAOT] simpler ObjectHasComponentSize (#83374)
* simplified ObjectHasComponentSize
* removes EETypePtr.ComponentSize and EETypePtr.IsAbstract
* call entire GetUninitializedObject on nullable underlying type (for static ctors)
Stephen Toub [Tue, 14 Mar 2023 19:41:48 +0000 (15:41 -0400)]
Remove the defunct DiagnosticUtility/Fx classes from DataContractSerialization (#82324)
- Fx.Assert just delegated to Debug.Assert: replace all the call sites with Debug.Assert/Fail.
- DiagnosticUtility.DebugAssert just delegated to Debug.Assert: replace all the call sites with Debug.Assert/Fail.
- DiagnosticUtility.ExceptionUtility.ThrowHelperError didn't throw anything and just returned its argument: removed all uses of it
- DiagnosticUtility.ExceptionUtility.ThrowHelperCallback didn't throw anything and just returned its argument: removed all uses of it.
- DiagnosticUtility.ExceptionUtility.ThrowHelperFatal didn't throw anything and just wrapped its arguments in a new Exception that was then returned: just changed the call sites to create that exception.
- DiagnosticUtility.ExceptionUtility.ThrowHelperArgument{Null} didn't throw anything and just returned new instances of Argument{Null}Exception: just changed the call sites to create that exception.
- Replaced some argument validation with helpers like ThrowIfNegative.
- Fx.IsFatal: moved to ExceptionUtility class
Brian Bohe [Tue, 14 Mar 2023 17:06:59 +0000 (14:06 -0300)]
Test merging baseservices/threading (#83143)
* Removing cs test entrypoint args
* Running ILTransform -n
* Running ILTransform -prociso
* Running ILTransform -public
* Running ILTransform -ilfact
* Adding JIT/Directed merge tests wrapper
* Patching merge wrapper generator code
* Fixing accesibility problems after wrapper generator updates
Anton Firszov [Tue, 14 Mar 2023 15:18:57 +0000 (16:18 +0100)]
Fix stress test failures on 1es-windows-2022-open (#83211)
Jakob Botsch Nielsen [Tue, 14 Mar 2023 15:01:07 +0000 (16:01 +0100)]
JIT: Stop relying on type handles in CSE (#83306)
Fix #83215
Kevin Jones [Tue, 14 Mar 2023 14:33:56 +0000 (10:33 -0400)]
Override Write(Span) for CryptoStream to clear arrays before returning to pool (#83338)
Jakob Botsch Nielsen [Tue, 14 Mar 2023 10:43:28 +0000 (11:43 +0100)]
JIT: Remove lvaPInvokeFrameRegSaveVar (#83309)
This does not seem to be used for anything meaningful.
Fix #83052
Pavel Savara [Tue, 14 Mar 2023 10:05:08 +0000 (11:05 +0100)]
[browser] wasm memory snapshot into browser cache (#82049)
Co-authored-by: Marek Fišera <mara@neptuo.com>
Co-authored-by: Katelyn Gadd <kg@luminance.org>
Jakob Botsch Nielsen [Tue, 14 Mar 2023 09:37:31 +0000 (10:37 +0100)]
JIT: Add missing 'MadeChanges = true' in gtSplitTree (#83360)
Fix #83332
Michal Strehovský [Tue, 14 Mar 2023 08:21:42 +0000 (17:21 +0900)]
Do not generate Equals/GetHashCode support for async state machines (#83369)
Saves 0.63% on BasicMinimalApi.
This logic controls whether we inject the `__GetFieldHelper` override for the type (see https://github.com/dotnet/corert/pull/5436).
Bruce Forstall [Tue, 14 Mar 2023 08:20:35 +0000 (02:20 -0600)]
Fix superpmi unit test on Alpine (#83372)
`perl` was removed from the Alpine images we use. The superpmi unit
test harness was using `perl` to convert the line endings in the
superpmicollect.sh wrapper script harness from Windows CR/LF format
to Linux/Mac LF format.
It appears this is no longer necessary, as the wrapper scripts appear
to be built in CI during the "Generate tests wrappers" step on Linux
when they will be run on Linux, so they already have the correct line
endings. Remove the call to invoke `perl`.
Fixes #83320
Qiao Pengcheng [Tue, 14 Mar 2023 08:18:49 +0000 (04:18 -0400)]
Fix the compiling errors for LoongArch64 and (#83370)
delete unused code for ARM64.
Michal Strehovský [Tue, 14 Mar 2023 05:57:45 +0000 (14:57 +0900)]
Do not generate relocs to empty type dictionaries (#83367)
If the generic dictionary is empty, there's no legitimate reason to access it. Saves 20 kB on BasicMinimalApi.
Also deleting a multimodule extensibility point that was getting in the way. We didn't use it and I don't see a future need for it either.
Michal Strehovský [Tue, 14 Mar 2023 05:32:15 +0000 (14:32 +0900)]
Reduce duplicity in GVM analysis (#83250)
There were two very similar pieces of logic in the generic virtual method analysis. First one was deciding whether we need to emit GVM bookkeeping about the type, the second one was deciding whether the type should participate in GVM analysis (the N*M algorithm, "for each type relevant to GVM analysis" * "GVM virtual method called").
Made this into one so that it's in one spot. The interface method resolution is not cheap so this also speeds up the compilation. We should also do this for non-generic virtuals at some point.
I did a test pass with an assert that the analysis came up with the same conclusions to ensure I didn't mess up.
Vladimir Sadov [Tue, 14 Mar 2023 02:39:18 +0000 (19:39 -0700)]
[NativeAOT] Unify common cases of Array.Copy with CoreCLR (#83351)
* Unify common cases of Array.Copy
* ContainsGCPointers
* removed EETypePtr.FastEquals
* AreSameType
* fix the build after rebase
Pavel Savara [Tue, 14 Mar 2023 01:07:29 +0000 (02:07 +0100)]
[browser][debugger] Cleanup runtime_ready tests
Jakob Botsch Nielsen [Mon, 13 Mar 2023 23:01:07 +0000 (00:01 +0100)]
JIT: Remove LclVarDsc::lvExactSize and LclVarDsc::lvSIMDType (#83307)
Turn these into functions.
Michal Strehovský [Mon, 13 Mar 2023 21:17:14 +0000 (06:17 +0900)]
Use `MethodTable.Of` in generated valuetype methods (#83325)
I thought it might improve codegen, but the improvements are marginal. Still, contributes to dotnet/runtimelab#232.
dotnet bot [Mon, 13 Mar 2023 18:26:59 +0000 (11:26 -0700)]
Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID
2133979 (#83240)
* Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID
2131973
* Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID
2132876
Egor Bogatov [Mon, 13 Mar 2023 18:11:08 +0000 (19:11 +0100)]
Constant folding for RuntimeInformation.IsOSPlatform(OSPlatform) (#83308)
Elinor Fung [Mon, 13 Mar 2023 17:49:27 +0000 (10:49 -0700)]
Shared helpers for creating framework-dependent/self-contained apps in host tests (#83291)
- Add centralized helpers for:
- Creating framework-dependent or self-contained apps
- Host binaries' names and paths
- Update native search directories test to validate behaviour with .deps.json (the test was using an app without .deps.json)
Egor Bogatov [Mon, 13 Mar 2023 17:14:22 +0000 (18:14 +0100)]
Unify unroll limits in a single entry point (#83274)
Omair Majid [Mon, 13 Mar 2023 16:33:40 +0000 (12:33 -0400)]
Remove the dotnet (1) man page (#78229)
All the man pages, including a different version of dotnet.1, are
currently maintained in the dotnet/sdk repo. See
https://github.com/dotnet/sdk/tree/main/documentation/manpages and in
particular, the documentation on how those are generated from
dotnet/docs repository:
https://github.com/dotnet/sdk/blob/main/documentation/manpages/tool/README.md
This leftover copy of dotnet.1 in this repository is extremely out of
date and unmaintained. Lets just delete it.
Co-authored-by: Andy Gocke <angocke@microsoft.com>
kasperk81 [Mon, 13 Mar 2023 16:28:39 +0000 (18:28 +0200)]
replace redhawk with nativeaot (#79217)
* replace redhawk with nativeaot
* apply suggestions
Co-authored-by: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
---------
Co-authored-by: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
Aleksey Kliger (λgeek) [Mon, 13 Mar 2023 14:14:21 +0000 (10:14 -0400)]
[mono] Use unsigned char when computing UTF8 string hashes (#83273)
* [mono] Use `unsigned char` when computing UTF8 string hashes
The C standard does not specify whether `char` is signed or unsigned, it is implementation defined.
Apparently Android aarch64 makes a different choice than other platforms (at least macOS arm64 and Windows x64 give different results).
Mono uses `mono_metadata_str_hash` in the AOT compiler and AOT runtime to optimize class name lookup. As a result, classes whose names include UTF-8 continuation bytes (with the high bit = 1) will hash differently in the AOT compiler and on the device.
Fixes https://github.com/dotnet/runtime/issues/82187
Fixes https://github.com/dotnet/runtime/issues/78638
* [aot] add DEBUG_AOT_NAME_TABLE code for debugging the class names
AOT compiler: Emits a second "class_name_table_debug" symbol that has all the class names and hashes as strings.
AOT runtime: warns if a class is not found in the name cache
* Add regression test
Zoltan Varga [Mon, 13 Mar 2023 13:43:33 +0000 (09:43 -0400)]
[mono] Clean up the delegate ctor code. (#83288)
* [mono] Clean up the delegate ctor code.
* Merge the virtual and non-virtual cases.
* Reorder the code in handle_delegate_ctor () to reduce the llvm_only conditionals.
* Name variables etc. delegate info instead of delegate trampoline.
* Avoid setting the del->is_virtual field if its FALSE.
* Remove some code which is already done by mono_resolve_patch_target_ext ().
* Remove some dead code.
* Unify the virtual/non-virtual case for llvmonly as well.
Jan Dupej [Mon, 13 Mar 2023 12:41:39 +0000 (13:41 +0100)]
[mono][jit] Adding more arm64 SIMD operations, SIMD codegen with instruction table. (#83094)
* [mono][jit] Handling vector operations on arm64, comparisions and a few others, tabular approach to instruciton specs.
* [mono][jit] Adding compare vector operations, not, neg. Mono IR to machine code transformation is now table-generated for select operations. Fixing issues.
* YAGNI on a macro.
* [mono][jit] Table-driven code SIMD generation on arm64 is now restricted to exclude certain operations that are easily implemented manually.
* [mono][jit] Code cleanup.
* Temporarily disable SIMD on arm64. Fix indentation. Comments.
Stephen Toub [Mon, 13 Mar 2023 12:04:12 +0000 (08:04 -0400)]
Override all write/flush methods on NullTextWriter (#83293)
The base implementations do non-trivial work, like calling ToString on the arguments, calling string.Format, queueing tasks, etc. None of that should be done if TextWriter.Null is used.
Filip Navara [Mon, 13 Mar 2023 10:19:02 +0000 (11:19 +0100)]
Fix address data emitted in the MonoProfilerGCRoots ETW event (#83284)
Adeel Mujahid [Mon, 13 Mar 2023 08:52:40 +0000 (10:52 +0200)]
Remove VersionSuffix from servicing builds (#83311)
Jan Kotas [Mon, 13 Mar 2023 03:41:35 +0000 (20:41 -0700)]
Fix culture-specific string comparisons in EventSource (#83319)
* Fix culture-specific string comparisons in EventSource
These string comparisons are clearly not meant to be culture-specific. They were one of the reasons for loading ICU in Console.WriteLine("Hello world"); app.
Context https://github.com/dotnet/aspnetcore/issues/47029#issuecomment-
1455553729
* Update src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs
Co-authored-by: Stephen Toub <stoub@microsoft.com>
anthonycanino [Sun, 12 Mar 2023 15:57:11 +0000 (08:57 -0700)]
Avx512 extract most significant bits (#82731)
* Add `TYP_MASK` and `Vector512.ExtractMostSignificantBits`.
* Rebase / rename error fix.
* Review edits.
* Formatting.
* Review edits.
* Review cleanup.
* Build fixes.
* Address throughput issues pertaining to `availableRegCount`.
* kmov RR refactor.
* Split kmov into kmov_msk and kmov_gpr.
* Fix thread.
* Review edits.
Jakob Botsch Nielsen [Sat, 11 Mar 2023 21:11:51 +0000 (22:11 +0100)]
JIT: Add a primitive to split statements at a specified tree (#83005)
Add a gtSplitTree that can split a statement at an arbitrary tree: this creates new statements before the statement such that the original statement now executes the input tree as the very first non-invariant node.
This can be used for example to introduce control flow at an arbitrary point within a tree.
Stephen Toub [Sat, 11 Mar 2023 16:36:40 +0000 (11:36 -0500)]
Avoid synchronizing access to TextWriter.Null in Console (#83296)
If SetOut/Error are used to silence Console by using TextWriter.Null, we don't need to wrap the writer in a synchronized one like we normally do, since all operations are nops and there's no need to serialize access.
Stephen Toub [Sat, 11 Mar 2023 16:36:02 +0000 (11:36 -0500)]
Reduce cost of async waiting on SemaphoreSlim with cancellation/timeout (#83294)
If a WaitAsync on a SemaphoreSlim is unable to synchronously acquire the semaphore, it calls an async method that handles the waiting. That method awaits with a custom awaiter that avoids throwing in the case of cancellation or timeout. However, in using a custom awaiter, we get knocked off the highest-perf path that can avoid allocating an Action. This change puts it back onto the golden path by having the awaiter implement our internal interface that lets it backchannel with the async method builders. Eventually we want this awaiter to be available publicly as well, and it'll end up benefiting more than just semaphores.
Vitek Karas [Sat, 11 Mar 2023 08:53:40 +0000 (00:53 -0800)]
Remove the second copy of ILLink.Shared project and source code (#83263)
I compared the two, the one in illink had a couple of small fixes on top of NativeAOT. The only change exclusive to NativeAOT was making the FlowAnnotations public, so I ported that over.
I chose to keep the one in illink. We can discuss moving it around in additional PR.
The rest of this change is solution and project file cleanup.
Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
Egor Bogatov [Sat, 11 Mar 2023 01:35:17 +0000 (02:35 +0100)]
JIT: Fold string fields in structs stored in static readonly fields (#80431)
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Radek Doulik [Sat, 11 Mar 2023 00:41:26 +0000 (01:41 +0100)]
[wasm] Initial emscripten 3.1.30 support (#81215)
* [wasm] Initial emscripten 3.1.30 support
* Update icu dependency
* Update emsdk dependency
* Use new docker images
* Add "icudt68_dat" as JS imported function.
It's an undefined symbol in ICU, because we are not linking in a lib, that should in the end be linked out.
Updated version of emscripten has by default turned on the LLD_REPORT_UNDEFINED .
* Drop build-time support for undefined icudt68_dat.
* Fix linker options
Should be `--lto-O0`
* Fix remaining conflict
* Limit new warnings option to browser
* Try to force reinstall of certifi
* Unset `FROZEN_CACHE` for `embuilder build MINIMAL`
* Update emsdk deps
* Remove assert for stack address
The linker puts stack at 0 sometime, so just check that the stack size
is not zero.
* Get back the stack base assert
For non-wasm targets. Add comment.
* Set stack size to 5MB
Which was the default size in older emscripten versions. Let see if it
is related to some of the issues.
* Disable WBT tests with SkiSharp
context: https://github.com/dotnet/runtime/issues/82725
* Disable more WBT tests with SkiSharp
* Set the stack size also in native targets
* Update icu deps
* Update emsdk deps
* Enable BigInt support
Co-authored-by: pavelsavara <pavel.savara@gmail.com>
* Enable BigInt here as well
* Temporarily allow undefined symbols
To unblock other work. After merge of main we are now again getting
linker errors with:
.nuget/packages/microsoft.netcore.runtime.icu.transport/8.0.0-preview.3.23128.1/runtimes/browser-wasm/native/lib/libicuuc.a(udata.ao): undefined symbol: icudt68_dat
* Try to use pip-system-certs package
Co-authored-by: Ankit Jain <radical@gmail.com>
* Fix merge damage for marking "icudt68_dat" a JS imported function + revert temporal fix.
* Try another python certifi package
* Try install pip-system-certs for emsdk's python
* Try to update machine certs for www.sqlite.org
* Refactor + upgrade pip
Also use the newer pip-system-certs again
* Use new net8 images
* Add `-s INCOMING_MODULE_JS_API=print,printErr`
* Introduce EmccStackSize msbuild property
* Remove FIXME from merge
We don't have afterUpdateGlobalBufferAndViews anymore
* Fixes around updateMemoryViews
* Pass --experimental-wasm-bigint to v8
Ubuntu 18.04 helix image has old v8
* Try multiple --engine-arg options
* Revert "Introduce EmccStackSize msbuild property"
This reverts commit
f67ea5e303421bb89f5521f425f22a82aa5d6f46.
* Disable 3 filesystem related tests
* Add bigint to AOT test template
* Introduce EmccStackSize msbuild property
* Update emsdk deps
* Update icu deps
* Revert "Add `-s INCOMING_MODULE_JS_API=print,printErr`"
This reverts commit
889d0366e4438880029c85ac800d4403f713dfff.
* Update emsdk deps
* Update icu deps
* Disable one more file related test
---------
Co-authored-by: Marek Fišera <mara@neptuo.com>
Co-authored-by: pavelsavara <pavel.savara@gmail.com>
Co-authored-by: Ankit Jain <radical@gmail.com>
Co-authored-by: Larry Ewing <lewing@microsoft.com>
Larry Ewing [Sat, 11 Mar 2023 00:26:33 +0000 (18:26 -0600)]
Fix the variable name (#83282)
dotnet-maestro[bot] [Fri, 10 Mar 2023 22:16:06 +0000 (16:16 -0600)]
Update dependencies from https://github.com/dotnet/icu build
20230309.2 (#83262)
Microsoft.NETCore.Runtime.ICU.Transport
From Version 8.0.0-preview.3.23156.1 -> To Version 8.0.0-preview.3.23159.2
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Ivan Diaz Sanchez [Fri, 10 Mar 2023 20:06:53 +0000 (12:06 -0800)]
[Merge-on-Red] - Implement Test Process Watcher (#78742)
Initial implementation of the test watcher that looks out for hangs and freezes during test runs.
Tomas Weinfurt [Fri, 10 Mar 2023 19:10:57 +0000 (11:10 -0800)]
update alpine test images (#82931)
* update alpine test images
* tests
Tomas Weinfurt [Fri, 10 Mar 2023 19:00:18 +0000 (11:00 -0800)]
Support sites with invalid IDN in SslStream (#82934)
* initial test
* 'update'
* feedback from review
* android
Jeremy Koritzinsky [Fri, 10 Mar 2023 18:45:02 +0000 (10:45 -0800)]
Update the Roslyn version our ref-pack generators reference to 4.5.0 (#83238)
dotnet-maestro[bot] [Fri, 10 Mar 2023 16:50:16 +0000 (10:50 -0600)]
Update dependencies from https://github.com/dotnet/roslyn build
20230310.1 (#83264)
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset
From Version 4.6.0-3.23159.1 -> To Version 4.6.0-3.23160.1
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Katelyn Gadd [Fri, 10 Mar 2023 16:14:40 +0000 (08:14 -0800)]
[wasm] Introduce jiterpreter control flow pass (#83247)
* Checkpoint CFG
Generate fallthrough in CFG
Generate branch block header partially in cfg
Emit branches in CFG
Checkpoint: Emit loop and exit return in CFG (broken)
Fix CFG emitting function header in the wrong place
Improve accuracy of cfg size estimation
Remove log messages
Checkpoint: Forward branches partially working
Fix non-conditional branches not being added to target table
Remove fallthrough
* Implement backward branches via a dispatch table
* Cleanup
* Cleanup
* Remove use of DataView since it has a hazard around heap growth
Use copyWithin to implement appendBytes where possible
More accurate overhead calculation