Vlad Brezae [Mon, 8 May 2023 10:39:51 +0000 (13:39 +0300)]
[mono][interp] Fix arg alignment issues when mixing with compiled code (#85153)
* [mono][interp] Refactor arg offset computation to make code clearer
* [mono][interp] Remove redundant assign
* [mono][interp] Move mint_type out from header file
It makes no sense to inline this big method into callers.
* [mono][interp] Fix arg offset computation when doing pinvoke and aot/jit calls from interp
The previous code wasn't handling alignment of simd types.
* [mono][interp] Use the correct alignment for args when entering interp
We stop computing the arguments on the fly since it's getting too expensive doing the alignment checks. We directly use `imethod->arg_offsets` instead which is computed once during the first call, while also ensuring consistency with the calculation.
* [mono][interp] Fix arg offset computation when running clauses with interp
* [mono][interp] Remove dead code
* Temporaril disable jiterp for CI
* Update jiterpreter interp_entry wrapper generator and re-enable jiterp
* Revert options-def.h changes
---------
Co-authored-by: Katelyn Gadd <kg@luminance.org>
Michal Strehovský [Mon, 8 May 2023 06:34:59 +0000 (15:34 +0900)]
Get rid of reflection blocked types (#85810)
Fixes #72570.
Still need to delete workarounds that make things public in corelib but maybe this diff is large enough already?
We were gradually getting less and less from reflection blocking:
* We stopped blocking things outside corelib (.NET Native blocked all of BCL; we don't).
* We trim reflection metadata and that allows us to have method bodies without metadata.
With this, we should be able to get type definition-level reflection metadata for any MethodTable there is in the system.
This is a ~30 kB size regression for BasicMinimalApis. It is pretty much a wash for Hello World, because all the BCL cruft to handle reflection blocked types costs as much as the benefit of blocking.
Parker Bibus [Mon, 8 May 2023 05:45:34 +0000 (22:45 -0700)]
Pin urllib to version 1.26.15 based on github comments to fix ssl requests error. (#85881)
Pent Ploompuu [Sun, 7 May 2023 22:29:39 +0000 (01:29 +0300)]
Fix JsonNode.ToString allocations (#85886)
SingleAccretion [Sun, 7 May 2023 21:13:44 +0000 (00:13 +0300)]
Fix flags checking for GT_IND (#85890)
Katelyn Gadd [Sun, 7 May 2023 05:11:33 +0000 (22:11 -0700)]
[wasm] Add Vector128 and PackedSimd support to the jiterpreter; add PackedSimd to the interpreter (#82773)
* Add PackedSIMD support to the interpreter (off by default)
* Add SIMD support to the jiterpreter
* Add runtime options governing interpreter vector128 and packedsimd support
* Add some R4 vector128 operations to the interpreter
* Fix jiterpreter MINT_POPCNT_I8 implementation
* Enable compiling the runtime with wasm simd support so that intrinsics can be used
* Add browser-bench measurements for packing vector128
Andy Ayers [Sun, 7 May 2023 01:22:31 +0000 (18:22 -0700)]
JIT: fix another case of early flow graph divergence (#85873)
The JIT will sometimes decide to instrument a Tier0 method even if `BBINSTR`
is not passed by the VM (this is enabled when the VM passes `BBINSTR_IF_LOOPS`
so that we can provide some PGO data to OSR methods).
In such cases we build the flow graph and then decide to instrument, so the
flow graph shape may differ from the case where we know up front that we are going
to instrument or optimize.
Remedy this by also running the early branch to next flow graph opt when a Tier0
JIT is passed `BBINSTR_IF_LOOPS`.
Addresses another case of #85856.
Alexander Batishchev [Sun, 7 May 2023 00:12:32 +0000 (17:12 -0700)]
Fixed link to PR guide in CONTRIBUTING.md (#85876)
Tanner Gooding [Sat, 6 May 2023 16:09:26 +0000 (09:09 -0700)]
Ensure getMaxSIMDStructBytes doesn't report `compVerifyInstructionSetUnusable` (#85370)
Andy Ayers [Sat, 6 May 2023 14:53:10 +0000 (07:53 -0700)]
JIT: produce consistent flow graph when producing or consuming profile data (#85860)
Always try and merge "branch to next" blocks when building the intial flow graph
if BBINSTR or BBOPT is set.
Fixes #85856.
Jan Kotas [Sat, 6 May 2023 13:50:43 +0000 (06:50 -0700)]
Replace GetInternalValue methods on RuntimeHandles with public equivalents (#85861)
Tanner Gooding [Sat, 6 May 2023 11:12:53 +0000 (04:12 -0700)]
Save some space in the hwintrinsic and instruction tables (#85853)
* Save some space in the hwintrinsic and instruction tables
* Apply formatting patch
Jakob Botsch Nielsen [Sat, 6 May 2023 10:06:16 +0000 (12:06 +0200)]
JIT: Generalize assignment decomposition in physical promotion (#85323)
Generalize assignment decomposition to handle arbitrary combinations of
physically promoted structs. Do this by introducing a DecompositionPlan
class that keeps track of the copies to do that involve replacement
fields. The first step is then to fill out this plan. In the general
case where both the source and destination are physically promoted this
involves iterating the replacements in lockstep. For promotions that map
exactly, a direct copy between their locals is queued into the plan; in
other cases (e.g. partial overlap) it may involve writing the source
back to the struct local.
The plan is used to generate the IR and to figure out the best strategy to
use for the remaining parts of the struct. Additional it is used to check for
some optimization opportunities (e.g. we avoid superfluous write barriers
in some cases).
SingleAccretion [Sat, 6 May 2023 04:44:37 +0000 (07:44 +0300)]
Move `ASG` rationalization to just after global morph (#85494)
* If Conversion
* SSA descriptor
* VN-based dead store removal
* Range Check
* Global assertion prop
* CSE
* Redundant branch opts
* Copy propagation
* Loop hoisting
* Value numbering
* Early prop
* SSA
* Delete GTF_IND_ASG_LHS
* Liveness
* Redundant zero inits
* Move assignment rationalization to before the opt phases
* Ref counting
* Cast morph opt
* Optimized STOREIND(LCL_ADDR, ...)
* Move assignment rationalization to before loop opts
* MD array morphing
* Loop unrolling
* Loop cloning
* Loop recognition
* Delete code from fgRationalizeAssignment
* GS security
* Fix formatting
Kunal Pathak [Sat, 6 May 2023 03:37:52 +0000 (20:37 -0700)]
Skip FP registers processing if method don't have floating points use (#85744)
* skip processing floating point registers if method doesn't have one
* Rename to needNonIntegerRegisters
* jit format
SingleAccretion [Sat, 6 May 2023 00:45:26 +0000 (03:45 +0300)]
Address `TODO-FIELD`s and delete quirks (#85735)
* Adjust a comment
* Simplify CreateAddressNodeForSimdHWIntrinsicCreate
No diffs.
* Limit the usages of gtNewFieldIndirNode
One tiny regression in a Regex method due to us not clearing GLOB_REF where not needed.
* Delete the side effects quirk
About neutral in improvements and regressions.
Both come from the differences in the handling of unused indirs and NULLCHECK nodes.
* Add a convenience gtNewFieldAddrNode overload
Sven Boemer [Fri, 5 May 2023 21:43:39 +0000 (14:43 -0700)]
Use Ubuntu 22.04 for runtime-dev-innerloop (#85836)
This makes the innerloop runs more reflective on a typical dev environment - a recent Ubuntu, and not a cross build. These images don't have `lld` (see https://github.com/dotnet/dotnet-buildtools-prereqs-docker/pull/865).
Bruce Forstall [Fri, 5 May 2023 21:21:36 +0000 (14:21 -0700)]
Disable NativeLibraryTests for ilasm round-trip testing (#85832)
Tracking: https://github.com/dotnet/runtime/issues/84914
Xu Liangyu [Fri, 5 May 2023 20:30:42 +0000 (04:30 +0800)]
Implements the CodeGen::genCodeForIncSaturate(). (#85502)
Nickolas McDonald [Fri, 5 May 2023 20:07:00 +0000 (16:07 -0400)]
Fix Diagnostic port suspension message doesn't report expected port name (#85430)
Sven Boemer [Fri, 5 May 2023 19:39:36 +0000 (12:39 -0700)]
Run NativeAot tests on arm64 (#82307)
Adds arm64 build and run of NativeAot smoke tests
dotnet-maestro[bot] [Fri, 5 May 2023 18:45:23 +0000 (20:45 +0200)]
Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-optimization build
20230504.3 (#85817)
optimization.linux-arm64.MIBC.Runtime , optimization.linux-x64.MIBC.Runtime , optimization.windows_nt-arm64.MIBC.Runtime , optimization.windows_nt-x64.MIBC.Runtime , optimization.windows_nt-x86.MIBC.Runtime , optimization.PGO.CoreCLR
From Version 1.0.0-prerelease.23229.3 -> To Version 1.0.0-prerelease.23254.3
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
dotnet-maestro[bot] [Fri, 5 May 2023 18:44:23 +0000 (20:44 +0200)]
Update dependencies from https://github.com/dotnet/roslyn-analyzers build
20230504.2 (#85820)
Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers
From Version 3.3.5-beta1.23251.1 -> To Version 3.3.5-beta1.23254.2
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
dotnet-maestro[bot] [Fri, 5 May 2023 18:43:01 +0000 (20:43 +0200)]
Update dependencies from https://github.com/dotnet/roslyn build
20230504.5 (#85823)
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset
From Version 4.7.0-1.23253.10 -> To Version 4.7.0-1.23254.5
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
dotnet-maestro[bot] [Fri, 5 May 2023 18:42:21 +0000 (20:42 +0200)]
Update dependencies from https://github.com/dotnet/arcade build
20230505.1 (#85818)
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.23253.5 -> To Version 8.0.0-beta.23255.1
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
SingleAccretion [Fri, 5 May 2023 18:09:56 +0000 (21:09 +0300)]
Delete the concept of "location" values from local morph (#85604)
* Delete the concept of "location" values from local morph
No longer necessary after ADDR's removal.
* Fix spelling
Co-authored-by: Andy Ayers <andya@microsoft.com>
* Fix spelling №2
Co-authored-by: Andy Ayers <andya@microsoft.com>
---------
Co-authored-by: Andy Ayers <andya@microsoft.com>
SingleAccretion [Fri, 5 May 2023 17:54:19 +0000 (20:54 +0300)]
Stop passing around struct handles in importer (#85561)
* Stop passing around struct handles in importer
No longer needed.
* Fix getSIMDStructFromField
* Conflict resolution fix
Pavel Savara [Fri, 5 May 2023 17:03:24 +0000 (19:03 +0200)]
[browser] prevent <DebuggerSupport> from disabling interp optimizations (#85792)
* [wasm] Don't enable debugging for library tests by default
@pavelsavara and @brzvlad found that some tests like
System.Collections.Immutable.Tests run slower because the runtime has
debugging enabled which causes the interpreter to disable optimizations.
Reason:
- Some tests depend on debugger attributes, and thus set
`$(DebuggerSupport)=true` to preserve them while linking.
- Which sets `$(WasmDebugLevel)=-1`. But setting `$(WasmDebugLevel)<0`
enables debugging support in the runtime.
- So, set this to `<0` only when building with `Configuration=Debug` .
* set it to zero only on CI
---------
Co-authored-by: Ankit Jain <radical@gmail.com>
Egor Bogatov [Fri, 5 May 2023 16:21:37 +0000 (18:21 +0200)]
Remove [AO] in SpanHelpers methods (#85819)
t-mustafin [Fri, 5 May 2023 15:18:41 +0000 (18:18 +0300)]
[RISC-V][GC] Use 128gb for regions_range on RISCV64 (#84797)
* Set virtual memory limit for RISCV64 SV39
Use 128gb for regions_range cause RISCV64 SV39 memory layout allows to use only 256gb of virtual memory: https://docs.kernel.org/riscv/vm-layout.html#risc-v-linux-kernel-sv39.
* PR feedback
Kunal Pathak [Fri, 5 May 2023 14:57:42 +0000 (07:57 -0700)]
Skip displaying raw instruction bytes by default for non-xarch (#85808)
Andy Ayers [Fri, 5 May 2023 14:44:48 +0000 (07:44 -0700)]
JIT: prepare for instrumentation before incorporating profile counts (#85805)
Otherwise the spanning tree we generate may be biased by the profile data
and not match the spanning tree we generated in Tier0.
Fixes #85799.
Qiao Pengcheng [Fri, 5 May 2023 13:43:52 +0000 (21:43 +0800)]
[LoongArch64] modify the define of `FLOAT_REGISTER_SIZE`. (#85812)
Vlad Brezae [Fri, 5 May 2023 12:43:09 +0000 (15:43 +0300)]
[mono][interp] Fix first arg offset computation for unoptimized newobj (#85787)
Instead of obtaining the offset directly, we were computing it as the next available offset (once the arguments were pop'ed), which was not accounting for the case where the first argument was aligned.
dotnet bot [Fri, 5 May 2023 12:42:06 +0000 (05:42 -0700)]
Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 2174100 (#85802)
Radek Doulik [Fri, 5 May 2023 09:30:58 +0000 (11:30 +0200)]
[wasm] PackedSimd, add floating point methods (#85705)
* [wasm] PackedSimd, add floating point methods
* Fix pmax/pmin
dotnet-maestro[bot] [Fri, 5 May 2023 00:48:01 +0000 (19:48 -0500)]
Update dependencies from https://github.com/dotnet/arcade build
20230503.5 (#85766)
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.23253.3 -> To Version 8.0.0-beta.23253.5
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
dotnet-maestro[bot] [Fri, 5 May 2023 00:47:29 +0000 (19:47 -0500)]
Update dependencies from https://github.com/dotnet/roslyn build
20230503.10 (#85771)
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset
From Version 4.7.0-1.23226.15 -> To Version 4.7.0-1.23253.10
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Eirik Tsarpalis [Thu, 4 May 2023 22:13:35 +0000 (01:13 +0300)]
Remove a number of unneeded nullability suppressions. (#85788)
* Fix nullability annotation of the JsonSerializer.Serialize methods.
* Remove a few more suppressions from the implementation.
* Revert annotations in the public APIs.
Radek Doulik [Thu, 4 May 2023 22:07:35 +0000 (00:07 +0200)]
[wasm] Update path in the README (#85794)
Jeremy Koritzinsky [Thu, 4 May 2023 22:00:55 +0000 (15:00 -0700)]
Convert the ComWrappers API tests to Xunit-style (#85790)
Jackson Schuster [Thu, 4 May 2023 21:43:03 +0000 (16:43 -0500)]
Don't add duplicate suffix in LibraryImport code fix. (#85668)
Elinor Fung [Thu, 4 May 2023 21:34:20 +0000 (23:34 +0200)]
Revert "SetThreadDpiAwareness for host error dialog (#81930)" (#85773)
This reverts commit
6f36be56480dc0a24a9713df5d81875a9ca2c980.
There is an issue with the Windows TaskDialog where expanding/collapsing the detail area will result in incorrect resizing of the window when the DPI awareness of the process and thread are not the same. Instead of explicitly making the thread starting the dialog DPI aware, we just leave it whatever the process is set to. This means that if the developer specified a manifest that made their application DPI aware, the dialog will be non-blurry, but if the developer did not, it will remain blurry on high DPI.
Stephen Toub [Thu, 4 May 2023 20:22:49 +0000 (13:22 -0700)]
Avoid using two-char search in IndexOfOrdinalIgnoreCase for 1-char values (#85781)
Ankit Jain [Thu, 4 May 2023 19:16:27 +0000 (15:16 -0400)]
[wasm] WBT: Disable blazor test due to https://github.com/dotnet/runt… (#85786)
…ime/issues/85769
test: `Wasm.Build.Tests.Blazor.BuildPublishTests.BlazorBuildRunTest`
Buyaa Namnan [Thu, 4 May 2023 17:13:34 +0000 (10:13 -0700)]
Add GenericTypeParameterBuilder implementation and save a generic type into assembly. (#85658)
* Save a type with generic type parameters
* Update GenericParameterAttribute in test that causing a class contraint
Sven Boemer [Thu, 4 May 2023 16:56:21 +0000 (09:56 -0700)]
Make dependency on lld optional (#85667)
This detects availability of lld by reusing the logic in
`init-compiler.sh`.
Vladimir Sadov [Thu, 4 May 2023 16:45:24 +0000 (09:45 -0700)]
[NativeAOT] Simplifying access to thread static variables (#84566)
Fixes: https://github.com/dotnet/runtime/issues/84373
- [x] separate "fast" inlinable case . (used for singlemodule, not dynamic cases, when optimizing)
- [x] make the storage for fast threadstatics a single "combo" instance instead of array of instances.
github-actions[bot] [Thu, 4 May 2023 15:34:07 +0000 (08:34 -0700)]
Sync shared code from aspnetcore (#85748)
Co-authored-by: JamesNK <JamesNK@users.noreply.github.com>
Zoltan Varga [Thu, 4 May 2023 15:19:47 +0000 (11:19 -0400)]
[mono][wasm] Make experimental-gshared-mrgctx really true on WASM AOT. (#85770)
Andy Ayers [Thu, 4 May 2023 14:43:34 +0000 (07:43 -0700)]
JIT: properly scrub SSA from return address buffers (#85746)
These can be in SSA and were not getting their SSA numbers cleaned by
`fgResetForSsa`, so in repeat mode they might trigger SSA check failures.
Also changed it so you can dump the SSA number without triggering an
assert.
Fixes #85629
Andy Ayers [Thu, 4 May 2023 14:42:33 +0000 (07:42 -0700)]
Add mcs support for new FROZEN_ALLOC_ALLOWED jit flag (#85745)
Jakob Botsch Nielsen [Thu, 4 May 2023 14:19:20 +0000 (16:19 +0200)]
JIT: Allow forward sub to reorder trees throwing the same single exception (#85647)
Allow forward sub to move a tree past another tree that throws an exception provided that they both throw the same exception.
mphelt [Thu, 4 May 2023 13:49:36 +0000 (15:49 +0200)]
Missing overrides in LoggingHttpMessageHandler and LoggingScopeHttpMessageHandler (#85143)
* add missing overrides in LoggingHttpMessageHandler and LoggingScopeHttpMessageHandler (https://github.com/dotnet/runtime/issues/85104)
* Update LoggingUriOutputTests.cs
* Update LoggingHttpMessageHandler.cs
* Update LoggingScopeHttpMessageHandler.cs
* Update LoggingScopeHttpMessageHandler.cs
* Update LoggingUriOutputTests.cs
* Update LoggingScopeHttpMessageHandler.cs
* Update LoggingUriOutputTests.cs
* Update LoggingUriOutputTests.cs
* Update LoggingUriOutputTests.cs
* Update LoggingUriOutputTests.cs
* Update LoggingHttpMessageHandler.cs
* Update LoggingScopeHttpMessageHandler.cs
* Update LoggingHttpMessageHandler.cs
* Update LoggingScopeHttpMessageHandler.cs
* Update LoggingHttpMessageHandler.cs
* Update LoggingHttpMessageHandler.cs
* Update LoggingScopeHttpMessageHandler.cs
* Code style update
* back to private methods
* merge with dotnet/runtime (#7)
Stephen Toub [Thu, 4 May 2023 13:48:58 +0000 (06:48 -0700)]
Annotate IHtmlString.ToHtmlString's return as nullable (#85742)
Milos Kotlar [Thu, 4 May 2023 13:30:12 +0000 (16:30 +0300)]
Increase number of nrgctx-trampolines (#85759)
Jeremy Koritzinsky [Thu, 4 May 2023 12:54:08 +0000 (05:54 -0700)]
Keep `this` alive across the native call for VTable-based source-generation (#85723)
* Keep `this` alive across the native call for VTable-based source-generation
Jan Kotas [Thu, 4 May 2023 12:22:02 +0000 (05:22 -0700)]
Add negative test for creating instances of function pointers (#85709)
Jakob Botsch Nielsen [Thu, 4 May 2023 10:11:14 +0000 (12:11 +0200)]
JIT: Refactor physical promotion in preparation of generalized assignment decomposition (#85728)
This refactors the physical promotion to make the generalized assignment
decomposition PR more manageable to review.
* Pull Replacement and ReplaceVisitor into the header
* Introduce promotiondecomposition.cpp that deals with handling
assignments, and move relevant code from promotion.cpp to this file
* Rename StatementList -> DecompositionStatementList and unnest it
* Rename Replacement::Name -> Replacement::Description which is more fitting
Also adds some more JITDUMPs when picking promotions, but otherwise
should not affect behavior.
Vitek Karas [Thu, 4 May 2023 07:59:13 +0000 (00:59 -0700)]
Enable more ILLink tests in NativeAOT (#85651)
Product fixes:
* Fix tracking of arrays in NativeAOT
* Fix handling of arrays in ILLink
Test fixes:
* Consider reflection enabled methods as marked (even if they don't have an entrypoint, like interface methods)
* Fix where to look for ilasm
* Better handling of compiled dependenceis
* Ignore some more compiler generated code (which can't be marked as kept)
Enables several more data flow tests from linker for AOT as well.
Updates some bug links to point to runtime repo.
Tanner Gooding [Thu, 4 May 2023 02:44:24 +0000 (19:44 -0700)]
Expose various floating-point intrinsics for Avx512F and Avx512DQ (#85716)
* Expose GetExponent and GetMantissa for Avx512F
* Expose Reciprocal14 and ReciprocalSqrt14 for Avx512F
* Expose RoundScale and Scale for Avx512F
* Expose Fixup for Avx512F + Range and Reduce for Avx512DQ
* Ensure the RMW handling for Fixup avoids allocating a register
* Ensure the NI_AVX512F_Fixup handling in isRMWHWIntrinsic compiles
* Ensure vrange is marked as INS_Flags_IsDstDstSrcAVXInstruction
* Apply formatting patch
* Ensure vfixupimm is correctly handled in the JIT
* Ensure FixupScalar only checks the first element when doing RMW validation
Jan Kotas [Thu, 4 May 2023 02:27:44 +0000 (19:27 -0700)]
Revert "[NativeAOT] Do not strip exported symbols from executables on Apple platforms (#85293)" (#85601)
This reverts commit
32ecd85d057f4c49e7972ee44c314e1ad7392192.
Tarek Mahmoud Sayed [Thu, 4 May 2023 02:00:56 +0000 (19:00 -0700)]
Fix TimeZoneInfo Perf (#85615)
Egor Bogatov [Thu, 4 May 2023 00:38:33 +0000 (02:38 +0200)]
Fix GetNonGCHeapBounds (#85702)
Vladimir Sadov [Wed, 3 May 2023 23:54:24 +0000 (16:54 -0700)]
[NativeAOT] Use inline relocs for win-arm64 INLINE_GETTHREAD (#85689)
* trying to use inline reloc for win-arm64 tls
* remove arm64 INLINE_GETTHREAD_CONSTANT_POOL
* introduce INLINE_GET_TLS_VAR for win-arm64
* delete unused GetThread.asm files
Omair Majid [Wed, 3 May 2023 23:00:11 +0000 (19:00 -0400)]
Fix building ReferenceTrackerRuntime.cpp in Interop tests (#85682)
Miha Zupan [Wed, 3 May 2023 22:19:11 +0000 (00:19 +0200)]
Rename IndexOfAnyValues to SearchValues (#85686)
Stephen Toub [Wed, 3 May 2023 20:51:32 +0000 (13:51 -0700)]
Simplify SelectArrayIterator method (#85695)
Stephen Toub [Wed, 3 May 2023 20:51:09 +0000 (13:51 -0700)]
Add back IHtmlString to System.Web.HttpUtility (#85673)
* Add back IHtmlString to System.Web.HttpUtility
* Update src/libraries/System.Web.HttpUtility/tests/HttpUtility/HttpUtilityTest.cs
Co-authored-by: Miha Zupan <mihazupan.zupan1@gmail.com>
---------
Co-authored-by: Miha Zupan <mihazupan.zupan1@gmail.com>
Radek Doulik [Wed, 3 May 2023 20:29:59 +0000 (22:29 +0200)]
[wasm] Use the docker images with floating tags (#85388)
We switched it temporarily to specific version around 3.1.34 bump,
so get back to floating tags again
Tanner Gooding [Wed, 3 May 2023 19:27:49 +0000 (12:27 -0700)]
Fix AreFlagsSetToZeroCmp and AreFlagsSetForSignJumpOpt to not consider unsupported formats (#85714)
* Fix AreFlagsSetToZeroCmp to not consider unsupported formats
* Also fix AreFlagsSetForSignJumpOpt
Egor Bogatov [Wed, 3 May 2023 19:19:44 +0000 (21:19 +0200)]
JIT: Improve block unrolling, enable AVX-512 (#85501)
dotnet-maestro[bot] [Wed, 3 May 2023 19:05:16 +0000 (21:05 +0200)]
[main] Update dependencies from dotnet/xharness dotnet/runtime-assets dotnet/emsdk dotnet/hotreload-utils (#85704)
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
SingleAccretion [Wed, 3 May 2023 18:30:49 +0000 (21:30 +0300)]
Delete `GT_FIELD` (#85568)
* Delete GT_FIELD
* GenTreeField -> GenTreeFieldAddr
Jeremy Koritzinsky [Wed, 3 May 2023 18:28:53 +0000 (11:28 -0700)]
Add new SafeHandleMarshaller type to provide out-of-generator marshalling support. (#85419)
Fixes #74035
We can't remove the built-in marshalling support from the generator yet, but once the out-of-band packages we ship don't support .NET 6. we can remove the built-in support that emits the marshalling code in the stub. I believe the .NET 9 packages won't support .NET 6, so once we snap for .NET 9 and update how we ship the packages, we can clean this up.
This PR also adds a requested feature to the SafeHandle marshaller: If the call to native code fails, we'll call Dispose() on the pre-allocated handle to avoid leaking it to the finalizer queue.
Kevin Jones [Wed, 3 May 2023 18:21:22 +0000 (14:21 -0400)]
Change default CFB feedback size for DES
The previous default value, 64, doesn't work for DES because .NET only supports CFB8 for DES. Further, this more closely aligns the behavior of DES.Create() from .NET Framework to .NET, as DESCryptoServiceProvider also had a default feedback size of 8.
This change sets the default feedback size to 8, which is the only value that worked anyway, so it isn't a breaking change.
Types derived from DES will continue to have a default feedback size of 64, which is the default value for .NET Framework derived types. We are only changing the default for DESImplementation returned by DES.Create().
Viktor Hofer [Wed, 3 May 2023 18:00:09 +0000 (20:00 +0200)]
Remove S.Sec.Crypto.Algorithms package dependency (#85701)
* Remove S.Sec.Crypto.Algorithms package dependency
Contributes to https://github.com/dotnet/runtime/issues/85641
System.Security.Cryptography.Algorithms/4.3.1 is being referenced in a
few .NET Framework builds. The reference to that package is undesirable
as it brings in the entire netstandard 1.x dependency graph.
The only type used from that package is IncrementalHash which isn't
available as a public API in .NET Framework before 4.7.1. Because of
that, polyfill the netfx code in with minor changes to the source to
make the analyzers happy.
Pavel Savara [Wed, 3 May 2023 17:43:05 +0000 (19:43 +0200)]
[browser] es6 test main (#85542)
Tom Deseyn [Wed, 3 May 2023 17:13:51 +0000 (19:13 +0200)]
Directory.Build.props: restore previous behavior when targetting 'other' TargetOSes from Windows. (#85246)
Sven Boemer [Wed, 3 May 2023 16:46:09 +0000 (09:46 -0700)]
Clean up dead code in ILCompiler targets (#85618)
- The logic for referencing ILCompiler as an MSBuild SDK should no longer be needed because we use PackageReference.
- IlcCalledViaPackage should always be true
Kunal Pathak [Wed, 3 May 2023 15:05:11 +0000 (08:05 -0700)]
Arm64: Add back the annotation in JitDisasm with the local var (+offset) (#85671)
* track 2nd variable offset
* display frame references for 2nd variable
* revert a change
* revert a change
* jit formnat
* fix after merge-conflict
* Consolidate ResetLclILoffs()
* fix gcc error
* fix gcc errors in arm/arm64
dotnet-maestro[bot] [Wed, 3 May 2023 14:32:10 +0000 (16:32 +0200)]
Update dependencies from https://github.com/dotnet/arcade build
20230503.3 (#85703)
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Michal Strehovský [Wed, 3 May 2023 13:49:18 +0000 (22:49 +0900)]
Move DispatchMap pointer to MethodTable (#85698)
Sending this for consideration. The old approach also had an advantage. Wouldn't be the end of the world if we keep that.
Before this PR, accessing dispatch map involved:
* Reading optional fields to find the field with the right tag
* The optional field contained an integer index into a table
* The index was used to index into a dispatch map table to find a pointer to the actual dispatch map
* We then followed the pointer to get to the dispatch map.
The advantage of this scheme is smaller working set (MethodTable is smaller), but this assumes the MethodTable has other optional fields (because we still need a pointer to the optional fields). Turns out most MethodTables only need optional fields pointer because of the dispatch map and if we move them to MethodTable, we no longer need an optional field pointer.
This PR simply moves the dispatch map pointer to MethodTable.
I'm seeing another 15 kB saving on BasicMinimalApi. Plus the code looks simpler.
Jakob Botsch Nielsen [Wed, 3 May 2023 13:06:54 +0000 (15:06 +0200)]
JIT: Fix liveness for partial defs of parent locals (#85654)
Partial defs in liveness are modelled as full uses of all fields and
then a full def of the entire local. The logic that handled fields
directly got that right, but the logic that handled parent locals did
not.
For example, for IR like
```
------------ BB18 [045..046), preds={BB16} succs={BB19}
***** BB18
STMT00096 ( INL10 @ 0x01F[E-] ... ??? ) <- INL04 @ ??? <- INLRT @ 0x045[E-]
N003 ( 5, 4) [000403] -A------R-- ▌ ASG byref
N002 ( 3, 2) [000402] D------N--- ├──▌ LCL_VAR byref V73 tmp45
N001 ( 1, 1) [000401] ----------- └──▌ LCL_VAR long V43 tmp15
***** BB18
STMT00097 ( INL10 @ 0x026[E-] ... ??? ) <- INL04 @ ??? <- INLRT @ 0x045[E-]
N003 ( 5, 4) [000407] -A------R-- ▌ ASG int
N002 ( 3, 2) [000406] D------N--- ├──▌ LCL_VAR int V74 tmp46
N001 ( 1, 1) [000405] ----------- └──▌ LCL_VAR int V42 tmp14
***** BB18
STMT00072 ( INL04 @ 0x073[--] ... ??? ) <- INLRT @ 0x045[E-]
N007 ( 14, 14) [000627] -A--------- ▌ COMMA void
N003 ( 7, 7) [000623] -A------R-- ├──▌ ASG byref
N002 ( 3, 4) [000621] U------N--- │ ├──▌ LCL_FLD byref (P) V12 loc3 [+16]
│ ├──▌ ref field V12._managedArray (fldOffset=0x0) -> V57 tmp29
│ ├──▌ long field V12._allocatedMemory (fldOffset=0x8) -> V58 tmp30
│ ├──▌ byref field V12._reference (fldOffset=0x10) -> V59 tmp31
│ ├──▌ int field V12._length (fldOffset=0x18) -> V60 tmp32
N001 ( 3, 2) [000622] ----------- │ └──▌ LCL_VAR byref V73 tmp45
N006 ( 7, 7) [000626] -A------R-- └──▌ ASG int
N005 ( 3, 4) [000624] U------N--- ├──▌ LCL_FLD int (P) V12 loc3 [+24]
├──▌ ref field V12._managedArray (fldOffset=0x0) -> V57 tmp29
├──▌ long field V12._allocatedMemory (fldOffset=0x8) -> V58 tmp30
├──▌ byref field V12._reference (fldOffset=0x10) -> V59 tmp31
├──▌ int field V12._length (fldOffset=0x18) -> V60 tmp32
N004 ( 3, 2) [000625] ----------- └──▌ LCL_VAR int V74 tmp46
```
we would see
```
BB18 USE(6)={V58 V57 V59 V60 V42 V43 }
DEF(2)={ V73 V74}
```
which is obviously incorrect as V57-V60 are all defined under this
model. This would lead to an assert in SSA since SSA did treat this as a
def.
Omair Majid [Wed, 3 May 2023 13:05:49 +0000 (09:05 -0400)]
Support building a mono-based .NET Runtime on x64 (#68424)
We now have some architectures (eg, s390x and ppc64le) that produce a .NET runtime that looks and feels like any other .NET runtime, except it's using Mono instead of CoreCLR under the hood.
However, it's only possible to produce this Mono-based .NET runtime on s390x/ppc64le. That makes it hard to test this set up on other architectures. Issues that affect the mono build on all architectures - such as #66594 become harder to fix and verify because of this unnecessary architecture requirement.
Fix that by adding a flag to the top-level build.sh (and also to the msbuild projects) to make it possible to produce a .NET runtime with Mono on any platform.
The default configuration is unchanged: we still produced CoreCLR-based .NET runtime on x64 and a Mono-based runtime on s390x/ppc64le.
Fixes: #62440
Ilona Tomkowicz [Wed, 3 May 2023 12:47:16 +0000 (14:47 +0200)]
[browser][non-icu] `HybridGlobalization` faster encoding for change case. (#85516)
* This speeds it up ~twice.
* JS's decoder always changes the codepoint.
* @kg's optimization idea.
Egor Bogatov [Wed, 3 May 2023 09:41:34 +0000 (11:41 +0200)]
Allocate Array.Empty<> on a frozen segment (NonGC heap) (#85559)
Co-authored-by: Jakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>
Michal Strehovský [Wed, 3 May 2023 07:05:50 +0000 (16:05 +0900)]
Shuffle some `MethodTable` flags (#85634)
* `IDynamicInterfaceCastableFlag` cannot be set on types that have a component size, so move it from the valuable location in `Flags` to `FlagsEx`.
* Move `HasSealedVTableEntriesFlag` from rare flags to flags. This flag is not so rare. All async state machine types set it, for example.
* Delete `IsAbstractClassFlag`. This was introduce in .NET Native for `GetUninitializedObject` since accessing `Type.IsAbstract` could trigger a `MissingMetadataException` there. We got rid of that concept in NativeAOT because it cannot be reconciled with ILLink trimming. Rewrite the code to use `Type.IsAbstract`.
Saves 15 kB on BasicMinimalApis, which is nice. Also makes things faster since we avoid reading optional fields and rare flags.
Viktor Hofer [Wed, 3 May 2023 06:11:29 +0000 (08:11 +0200)]
Avoid S.R.I.RuntimeInformation package dependency (#85642)
Contributes to https://github.com/dotnet/runtime/issues/85641
System.Runtime.InteropServices.RuntimeInformation/4.3.0 is being
referenced in a few .NET Framework builds. The reference to that package
is undesirable as it brings in the entire netstandard1.x dependency
graph.
Instead, use System.Environment.OSVersion which returns "Microsoft
Windows NT" on .NET Framework, Mono and .NETCoreApp runtimes.
Kevin Jones [Wed, 3 May 2023 06:05:42 +0000 (02:05 -0400)]
Implement Micrososoft.Bcl.Cryptography without System.Security.Cryptography.Algorithms (#85683)
* Implement Micrososoft.Bcl.Cryptography without System.Security.Cryptography.Algorithms
* Assert data written
* Call Initialize on the right thing
Pavel Savara [Wed, 3 May 2023 05:32:39 +0000 (07:32 +0200)]
fix mistake in timespan calculation (#85677)
Katelyn Gadd [Wed, 3 May 2023 04:12:02 +0000 (21:12 -0700)]
[wasm] Use monotonic clock in wasm, emscripten has it now (#85660)
Use monotonic clock on wasm, emscripten added it after we initially disabled it for that target
Update mono-os-mutex.h to note that we have working monotonic clock in wasm now (but not wasi, because of some other dependencies)
Kunal Pathak [Wed, 3 May 2023 03:28:18 +0000 (20:28 -0700)]
Skip stp/ldp only for unwind portion of prolog/epilog (#85657)
* Skip stp/ldp only for unwind portion of prolog/epilog
* Rename unwindarm.cpp -> unwindarmarch.cpp
* review feedback
Will Smith [Wed, 3 May 2023 03:06:04 +0000 (20:06 -0700)]
[JIT] ARM64 - Fix Assertion failed 'node->OperIs(GT_DIV, GT_UDIV, GT_MOD)' during 'Lowering nodeinfo' (#85664)
* Rename LowerConstIntDivOrMode to TryLowerConstIntDivOrMod with an out parameter for the next node to lower
* Add test case
* Simplify test
* Add extra assert
dotnet-maestro[bot] [Wed, 3 May 2023 02:49:09 +0000 (21:49 -0500)]
[main] Update dependencies from dotnet/roslyn-analyzers (#85518)
* Update dependencies from https://github.com/dotnet/roslyn-analyzers build
20230427.3
Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers
From Version 3.3.5-beta1.23225.2 -> To Version 3.3.5-beta1.23227.3
* Update dependencies from https://github.com/dotnet/roslyn-analyzers build
20230501.1
Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers
From Version 3.3.5-beta1.23225.2 -> To Version 3.3.5-beta1.23251.1
* Fix another CA1854 warning
---------
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Co-authored-by: Buyaa Namnan <bunamnan@microsoft.com>
dotnet-maestro[bot] [Wed, 3 May 2023 02:47:02 +0000 (21:47 -0500)]
[main] Update dependencies from dotnet/llvm-project dotnet/runtime dotnet/xharness dotnet/hotreload-utils dotnet/cecil (#85538)
* Update dependencies from https://github.com/dotnet/llvm-project build
20230428.1
runtime.linux-arm64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.linux-arm64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-musl-x64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.linux-musl-x64.Microsoft.NETCore.Runtime.ObjWriter , runtime.linux-x64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.linux-x64.Microsoft.NETCore.Runtime.ObjWriter , runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-arm64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.win-arm64.Microsoft.NETCore.Runtime.ObjWriter , runtime.win-x64.Microsoft.NETCore.Runtime.JIT.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.ObjWriter
From Version 14.0.0-alpha.1.23224.3 -> To Version 14.0.0-alpha.1.23228.1
* Update dependencies from https://github.com/dotnet/runtime build
20230501.1
Microsoft.NET.ILLink.Tasks , Microsoft.NET.Sdk.IL , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.ILAsm , runtime.native.System.IO.Ports , System.Text.Json
From Version 8.0.0-preview.4.23221.1 -> To Version 8.0.0-preview.5.23251.1
* Update dependencies from https://github.com/dotnet/xharness build
20230502.1
Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit
From Version 1.0.0-prerelease.23228.3 -> To Version 1.0.0-prerelease.23252.1
* Update dependencies from https://github.com/dotnet/hotreload-utils build
20230501.2
Microsoft.DotNet.HotReload.Utils.Generator.BuildTool
From Version 8.0.0-alpha.0.23226.3 -> To Version 8.0.0-alpha.0.23251.2
* Update dependencies from https://github.com/dotnet/cecil build
20230502.1
Microsoft.DotNet.Cecil
From Version 0.11.4-alpha.23224.2 -> To Version 0.11.4-alpha.23252.1
---------
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
kkeirstead [Wed, 3 May 2023 02:27:07 +0000 (19:27 -0700)]
Add `count` and `sum` to Histogram for System.Diagnostics.Metrics (#85595)
Ankit Jain [Wed, 3 May 2023 02:14:58 +0000 (22:14 -0400)]
[wasi] Disable failing tests to get CI green (#85681)
* [wasi] Disable failing tests in System.Runtime.Serialization.Xml.Tests
Issue: https://github.com/dotnet/runtime/issues/82967, and https://github.com/dotnet/runtime/issues/73961
* [wasi] Disable failing test
System.Runtime.Serialization.Xml.ReflectionOnly.Tests:DataContractSerializerTests.DCS_MemoryStream_Deserialize_CompatibleWithFullFramework
Issue: https://github.com/dotnet/runtime/issues/73961
* [wasi] Disable tests failing depending on tmp fs
System.Runtime.Serialization.Xml.ReflectionOnly.Tests, and System.Runtime.Serialization.Xml.Tests
Test: DataContractSerializerTests.DCS_FileStreamSurrogate
Issue: https://github.com/dotnet/runtime/issues/85690
Ankit Jain [Wed, 3 May 2023 01:18:01 +0000 (21:18 -0400)]
[wasm] WBT: Renable blazor lazy loading test (#85685)
.. and fix test to work for non-webcil case.
Fixes issue: https://github.com/dotnet/runtime/issues/85354
Badre BSAILA [Wed, 3 May 2023 01:00:40 +0000 (03:00 +0200)]
offers the synchronous part of start and stop in IHostedService to run concurrently (#85191)
* offers the synchronous part of start and stop in IHostedService to run concurrently
* pass cancellation token to Task.Run
* fix cancellation token issue and eliminate a lambda