1. 06 4月, 2023 3 次提交
    • A
      Avoid clearing uncommitted mark array (#83623) · 243724fd
      Andrew Au 提交于
      243724fd
    • J
      JIT: Ensure tail merging does not add preds to scratch block (#84353) · 30f75118
      Jakob Botsch Nielsen 提交于
      Fix issue seen in #83388 where tail merging ended up adding new
      predecessors to the scratch block, making adding more "initialization
      IR" impossible for downstream phases.
      30f75118
    • R
      [wasm] Freeze the emscripten cache (#84356) · da7fbb76
      Radek Doulik 提交于
      This fixes https://github.com/dotnet/runtime/issues/83655
      
      We prime the cache before packaging the emsdk cache package and also
      in docker images, so we don't need to update the cache, which might be
      in read-only location anyway.
      
      The underlying issue was problem with the cache lock:
      
          "C:/helix/work/correlation/build/emsdk/upstream/bin\clang.exe" --version
          cache:WARNING: Accessing the Emscripten cache at "C:\helix\work\correlation\build\emsdk\upstream\emscripten\cache" (for "sanity") is taking a long time, another process should be writing to it. If there are none and you suspect this process has deadlocked, try deleting the lock file "C:\helix\work\correlation\build\emsdk\upstream\emscripten\cache\cache.lock" and try again. If this occurs deterministically, consider filing a bug.
          cache:WARNING: Accessing the Emscripten cache at "C:\helix\work\correlation\build\emsdk\upstream\emscripten\cache" (for "sanity") is taking a long time, another process should be writing to it. If there are none and you suspect this process has deadlocked, try deleting the lock file "C:\helix\work\correlation\build\emsdk\upstream\emscripten\cache\cache.lock" and try again. If this occurs deterministically, consider filing a bug.
      da7fbb76
  2. 05 4月, 2023 17 次提交
    • K
      [wasm] Implement the ENDFINALLY opcode in the jiterpreter (#84273) · 66211eb2
      Katelyn Gadd 提交于
      * Mark the opcode following CALL_HANDLER interpreter opcodes as a back branch target
      * In the jiterpreter, record each CALL_HANDLER location when compiling them
      * Then when compiling an ENDFINALLY opcode check to see whether the branch target is one we recognize and if so do a branch, otherwise bail out
      * Tweak CFG to filter out branch targets that are never used
      * Add browser-bench measurement for try-finally
      66211eb2
    • R
      [wasm] Simd refactoring (#84170) · 6114f193
      Radek Doulik 提交于
      * [wasm] Simd refactoring
      
      Rename few opcodes to contain `_SIMD_`.
      
      Use more SimdIntrinsic fields to simplify the code.
      
      * Fix build
      
      * Fix narrowing intrinsics
      
      * Verbose aot compilation
      
      * Feedback
      
      * Make it verbose on helix
      
      * Do not set op for narrowing methods
      
      Because `emit_hardware_intrinsics` doesn't call custom emit in such case
      and so we endup with code emitted with wrong zero c0.
      
      * Feedback
      
      * Be quiet again :-)
      6114f193
    • V
    • E
    • B
      Suppress linker warnings properly (#84272) · 3e6ad475
      Buyaa Namnan 提交于
      * Suppress linker warnings properly
      
      * Update core assembly types handling
      
      * Update src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/SignatureHelper.cs
      
      ---------
      Co-authored-by: NJan Kotas <jkotas@microsoft.com>
      3e6ad475
    • E
      f2d5967c
    • A
      JIT: use synthesis to repair some reconstruction issues (#84312) · 4b5491eb
      Andy Ayers 提交于
      In particular, run synthesis in repair mode for cases where there are profile
      counts within the method but zero counts in `fgFirstBB`.
      
      Recall that sparse profiling effectively probes return blocks to determine the
      method entry count.
      
      So the zero-entry but not zero-everywhere case can happen if we have a method
      with a very long running loop plus sparse profiling plus OSR -- we will only
      get profile counts from the instrumented Tier0 method, and it will never return
      (instead it will always escape to an OSR version which will eventually return,
      but that version won't be instrumented).
      
      I originally was a bit more ambitious and ran repair for a broader set of
      reconstruction issues, but lead to a large number of diffs, in part because
      repair doesn't cope well with irreducible loops.
      
      Leaving the entry count zero can have fairly disastrous impact on the quality
      of optimizations done in the method.
      
      Addresses quite a few of the worst-performing benchmarks in #84264.
      4b5491eb
    • V
      [NativeAOT] Remove unused native memcopy helpers. (#84314) · 70d00e44
      Vladimir Sadov 提交于
      * Remove unused (and in some cases broken) RhpCopy helpers.
      
      * PR feedback
      70d00e44
    • J
      JIT: Handle some "field offset computation" patterns (#81998) · 337999d5
      Jakob Botsch Nielsen 提交于
      Both during local morph and during VN.
      
      Fix #40021
      
      Saves 3 KB on BasicMinimalApi after #84095 (there's 1111 __GetFieldHelper functions). About 0.04%. There's still a null check kept for each offset computation, which we cannot really get rid of, but NAOT could maybe emit the IL such that there is a dominating null check so that only one is emitted.
      
      Example:
      Base:
      ```
      .managed:0000000140347CC0 loc_140347CC0:                          ; CODE XREF: S_P_CoreLib_System_Collections_Generic_KeyValuePair_2_System_Net_Security_System_Net_Security_SslSessionsCache_SslCredKey__System___Canon_____GetFieldHelper+23↑j
      .managed:0000000140347CC0                                         ; DATA XREF: .rdata:__readonlydata_S_P_CoreLib_System_Collections_Generic_KeyValuePair_2_System_Net_Security_System_Net_Security_SslSessionsCache_SslCredKey__System___Canon_____GetFieldHelper↓o
      .managed:0000000140347CC0                 lea     rax, ??_7Boxed_System_Net_Security_System_Net_Security_SslSessionsCache_SslCredKey@@6B@ ; jumptable 0000000140347CB3 case 0
      .managed:0000000140347CC7                 mov     [r9], rax
      .managed:0000000140347CCA                 cmp     [rcx], cl
      .managed:0000000140347CCC                 lea     rax, [rcx+8]
      .managed:0000000140347CD0                 sub     rax, rcx
      .managed:0000000140347CD3                 add     rsp, 8
      .managed:0000000140347CD7                 retn
      ```
      Diff:
      
      ```
      .managed:0000000140347AA0 loc_140347AA0:                          ; CODE XREF: S_P_CoreLib_System_Collections_Generic_KeyValuePair_2_System_Net_Security_System_Net_Security_SslSessionsCache_SslCredKey__System___Canon_____GetFieldHelper+23↑j
      .managed:0000000140347AA0                                         ; DATA XREF: .rdata:__readonlydata_S_P_CoreLib_System_Collections_Generic_KeyValuePair_2_System_Net_Security_System_Net_Security_SslSessionsCache_SslCredKey__System___Canon_____GetFieldHelper↓o
      .managed:0000000140347AA0                 lea     rax, ??_7Boxed_System_Net_Security_System_Net_Security_SslSessionsCache_SslCredKey@@6B@ ; jumptable 0000000140347A93 case 0
      .managed:0000000140347AA7                 mov     [r9], rax
      .managed:0000000140347AAA                 cmp     [rcx], cl
      .managed:0000000140347AAC                 mov     eax, 8
      .managed:0000000140347AB1                 add     rsp, 8
      .managed:0000000140347AB5                 retn
      ```
      
      Local morph changes handle the pattern for local structs -- VN changes handle the pattern for classes (and more complicated struct cases, like storing them in locals, which there are a few examples of in #40021).
      337999d5
    • D
      Improve XmlDictionaryWriter UTF8 encoding performance (#73336) · e0c94f84
      Daniel Svensson 提交于
      * Speed up text encoding
      
      * Update implementation
      
      * Add tests for binary xml strings
      
      * limit counting code to 256 bit vectors
      
      * reword comment
      
      * rename test
      
      * move bytesmax
      
      * Fix bytesMax after moving variable initialization
      
      * use unicode escape value in test
      
      * fix test typo "*" -> "+"
      
      * Update src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlStreamNodeWriter.cs
      Co-authored-by: NStephen Toub <stoub@microsoft.com>
      
      * Remvoe vectorized code from UnsafeGetUTF8Length
      
      * Fix overfload
      
      * use for loop which seems faster
      
      * remove vector loop
      
      * make sealed encoding to allow devirtualisation
      
      * back some changes
      
      * use uint for UnsafeGetUTF8Chars comparison
      
      * revert more changes
      
      * Fix cutoff based on new measurements
      
      * use BinaryPrimitives.ReverseEndianness as suggested
      
      * Update cutoff from 24 to 32 chars before calling, due to regression for text based DataContractSerializer
      
      * Remove sealed encoding since it only improves XmlConvert
      
      ---------
      Co-authored-by: NStephen Toub <stoub@microsoft.com>
      e0c94f84
    • T
    • E
      Fast-path in String.Trim (#84300) · e9357808
      Egor Bogatov 提交于
      e9357808
    • D
      Use similar types for self-referential generics instead of the exact canonical type (#83995) · bc887b38
      David Wrighton 提交于
      - Take advantage of work done a few years ago to simplify the interaction with the interop subsystem
      - In the problematic case, simulate loads with two different types as instantiations which are unrelated in field layout, and see if they match up. Only enable this code in a few very small isolated parts of the runtime
      - Filter more of the type loader logic through the byvalue class cache which should improve performance a bit
      - Similarly when considering blittability, tweak the logic to use the special load path
      
      - Support for self-recursive generics is not enabled for static fields, as that requires a somewhat different tweak, and there is less apparent demand. (For that scenario self-referential generics really should support having fields of type T.)
      - Support for indirect self-recursive generics is also not enabled. The approach taken here is not practical for that, and there does not appear to be significant demand for that either.
      
      Fixes #6924
      bc887b38
    • M
      Add error check for skipped tests in merged groups (#84284) · 735ddeaf
      Mark Plesko 提交于
      If I test is written in the old style (with a Main and OutputType==Exe without an attribute such as RequiresProcessIsolation) in a merged test group directory, it will be skipped. This change adds a check to detect those cases.
      
      I have struggled with ways to automatically set OutputType. Directory.Build.props is too early (the test project file will override it). Directory.Build.targets is too late as the C# targets files will already have been processed and set other variables based on the value of OutputType. This Target doesn't execute until later, but since it is an error it doesn't matter how those additional properties were set.
      
      Since this adds more boilerplate to each merged test directory, I created a src/tests/Directory.Merged.props to share all of that.
      
      This catches 3 tests that aren't currently executing.
      
      Unrelated:
      
      - Use GetPathOfFileAbove in nearby locations for Directory.Build.props chaining rather than specific paths
      - Fix two easy IL warnings that appeared in my local build of all tests
      
      Resolves https://github.com/dotnet/runtime/issues/84182
      735ddeaf
    • W
      [JIT] Fix re-use val zero on GC tracking (#84051) · 00f921d4
      Will Smith 提交于
      * Initial work
      
      * Added genCodeForReuseVal
      
      * Only create a label if the current IG is not empty
      00f921d4
    • W
      [JIT] ARM64/X64 - Add `IsVNNeverNegative` (#83694) · 4f4fed0e
      Will Smith 提交于
      * Initial work
      
      * Handle arrlen case
      
      * Added ifdef
      
      * Additional cases
      
      * Additional cases
      
      * Add assert to IsVNNeverNegative
      
      * Update src/coreclr/jit/valuenum.cpp
      Co-authored-by: NBruce Forstall <brucefo@microsoft.com>
      
      * Additional cases
      
      ---------
      Co-authored-by: NBruce Forstall <brucefo@microsoft.com>
      4f4fed0e
    • T
      don't load MsQuic unless needed by HttpClient (#83494) · 56196485
      Tomas Weinfurt 提交于
      * don't load MsQuic unless needed by HttpClient
      
      * feedback from review
      56196485
  3. 04 4月, 2023 20 次提交
    • B
      Fix parallel SuperPMI output handling (#84219) · 50c9dca3
      Bruce Forstall 提交于
      Previously, parallel SuperPMI parsed very few kinds of output from
      the child processes, and ignored and discarded the rest. Change this
      so all output from the child processes is output by the parent
      process.
      
      For example, this allows the child process JIT to print out statistics,
      disasm, etc., and have it visible by the parent invoker.
      50c9dca3
    • D
      Only call base.DisposeAsync on classes derived from FileStream (#82874) · 17a3ebde
      David Cantú 提交于
      * Only call base.DisposeAsync on classes derived from FileStream
      
      * Fix typo
      17a3ebde
    • V
      [mono][sgen] Remove old code associated with domain unload (#84242) · 25be848b
      Vlad Brezae 提交于
      * [mono][sgen] Remove unused suspend finalizers functionality
      
      * [mono][sgen] Remove threadpool shutdown logic
      
      No longer used
      
      * [mono][sgen] Remove logic associated with gc shutdown
      
      * [mono][sgen] Remove logic for clearing handle stack during cleanup
      
      * [mono][sgen] Remove code for xdomain checks
      
      * [mono][sgen] Remove more code associated with finalization
      
      * [mono][sgen] Remove code for freeing objects during domain unload
      
      * [mono][sgen] Remove mono_gc_clear_domain
      
      It is dead code
      25be848b
    • S
      Fix FrozenDictionary/Set handling of ValueTuple keys (#84280) · e579ccb6
      Stephen Toub 提交于
      For small collections of comparable value types, we were using an implementation that sorted the keys in order to a) quickly rule out values outside of the known contained range, and b) stop searching when we hit a value that was too small.  However, this can break for some well-known types. In particular, `ValueTuple<...>` implements `IComparable<ValueTuple<...>>`, but it might throw an exception if you actually try to use its `IComparable<>` implementation if any of the `T` types in the tuple are themselves not comparable.  Since we have no good way then to dynamically select an implementation based on whether it implements `IComparable<>`, I've simply removed those checks / calls from the implementation.
      
      Testing this also highlighted that our existing shared set tests don't like being given non-comparable types, as they use SortedSet which itself suffers from effectively the same issue (but there you can choose to not use SortedSet if it doesn't work for your data, and "sort"ing is part of the name).
      e579ccb6
    • E
      fix addrmode assert (#84252) · 149e43e0
      Egor Bogatov 提交于
      149e43e0
    • J
      [Mono]: Library mode enhancements. (#84165) · a1954cce
      Johan Lorensson 提交于
      Add support for direct pinvoke charset on Windows.
      
      NativeAOT direct pinvoke support handles pinvoke charset on Windows,
      this commit adds the same logic to Mono when targeting Windows,
      so it will follow the same charset rules as NativeAOT.
      
      Direct pinvoke wrappers on none full AOT builds.
      
      Library mode builds will have option to create a self contained static
      or shared library, including all needed resources, embedding assemblies
      and static link all external dependencies (using direct pinvoke). Library mode
      also exports UnamangedCallersOnly methods that can be called by application
      loading the library. Currently the wrappers needed for UnmanagedCallersOnly
      methods will be generated when doing none full AOT builds, but not
      pinvoke wrappers. This PR adds support to generate the pinvoke wrappers, but
      only for the methods described by direct pinvoke AOT compiler arguments,
      so for none full AOT builds not using direct pinvoke arguments, no pinvoke
      wrappers will be generated, inline with current none full AOT behavior.
      
      Direct pinvoke wrappers on profiled AOT builds.
      
      Enhanced the profile-only option doing profile AOT to emit managed-to-native
      and native-to-managed wrappers. Needed in order for library build to work
      together with profiled AOT builds.
      
      Wrappers-only AOT option.
      
      On platforms like Android, we still run majority of code using JIT. Since library
      mode should produce a self contained library, including pinvokes
      (for all direct pinvoked functions) as well as UnmanagedCallersOnly wrappers,
      Android would need to at least run none full AOT build of all used assemblies.
      By default, that will AOT a lot more methods that is really needed and there is
      no way to reduce the AOT:ed code and still run as much as possible using JIT.
      The profile-only option opens up ability to reduce what managed methods that
      will be AOT:ed, but still generates a number of inflated methods not needed by
      UnmanagedCallersOnly and direct pinvoke wrappers and piggy back on an
      existing option with additional functionality is not optimal. This PR adds an
      undocumented AOT option intended to be used by library builder, wrappers-only,
      and that will only include wrappers in AOT object giving library builder the ability
      to build a self contained library on Android that still runs majority of managed
      code using JIT.
      a1954cce
    • F
      [Mono] Support get_Count and get_AllBitsSet for mini JIT on Arm64 (#84180) · 6ad78ff7
      Fan Yang 提交于
      * Support get_Count and get_AllBitsSet
      
      * nint and nuint are 8 bytes on arm64 as well.
      
      * Fix syntax
      6ad78ff7
    • V
      Static cctor analysis for reflection (#84089) · 7b645f78
      Vitek Karas 提交于
      This brings the NativeAOT behavior around static cctor analysis on part with illink.
      
      Main change is to add checks for RUC/RAF/RDC on static cctor and produces a warning if there is one (as these are not allowed on static cctor).
      
      The rest of the changes are just minor fixes and adjusting tests to the new behavior.
      
      Contributes to https://github.com/dotnet/runtime/issues/82447.
      7b645f78
    • T
      Add issues.targets entry for known issue #84007 (#84268) · 9b11e697
      Tomáš Rylek 提交于
      * Add issues.targets entry for known issue #84007
      
      * Add handling for NEW_MDARR_RARE
      
      ---------
      Co-authored-by: NMichal Strehovský <MichalStrehovsky@users.noreply.github.com>
      9b11e697
    • J
      JIT: Properly allocate shadow space for block op helpers on win-x64 (#84124) · 9321801e
      Jakob Botsch Nielsen 提交于
      Move the accounting of the outgoing arg space size from simple lowering
      to lowering and start accounting for the fact that some block ops may
      turn into helper calls.
      
      Fix #80140
      9321801e
    • I
      [browser][non-icu] `HybridGlobalization` change case (#84019) · 9afb7d42
      Ilona Tomkowicz 提交于
      * Enabled `HybridGlobalization` mode.
      
      * Enabled non-icu change case.
      
      * Tests.
      
      * Revert not connected changes.
      
      * Fix: Add the new file to the project.
      
      * Fix: this PR is for Browser, so add it to condition.
      
      * Fixed calls to js.
      
      * Trying to fix CI.
      
      * False is default, redundant lines.
      
      * Trying to fix the CI.
      
      * Remove redundant code.
      
      * This PR is partial solution, this file will be added in a follow-up.
      
      * Fix for EAT lib tests.
      
      * We do not trim anything for Hybrid currently.
      
      * Check if functions invoked only in specific modes.
      
      * Change confusing name + move the common property to the main part of the class.
      
      * Applied @mkhamoyan's suggestion.
      
      * Fix previous commit: missing directive.
      
      * Fix previous commit: missing directive.
      
      * It's not IOS-connected.
      
      * Move hybrid tests to correct dir + separate ios and wasm + update sln.
      
      * Invariant and hybrid cannot be both true.
      
      * Remove old version of hybrid tests proj.
      
      * Applied @kg's review.
      9afb7d42
    • M
      Fix reflection invoke file format issue for generic methods (#83438) · 50c88957
      Michal Strehovský 提交于
      The file format that mapped reflection metadata to runtime artifacts had a limitation that required generic methods to be always instantiated over concrete types - we could not place canonical method bodies there. The limitation stemmed from the fact that the mapping table was placing a generic dictionary in it.
      
      This switches the table to use NameAndSignature + an array of instantiation arguments.
      
      The rest of this change is just deleting code that was working around the problem. The fixes in NativeLayoutVertexNode and NodeFactory.NativeLayout are fixing analysis holes that were exposed by our ability to be more lazy.
      
      Also saves 0.4% on BasicWebApi, which is always nice.
      50c88957
    • V
      Introduce a diagnostic switch to turn off the use of file mapping in PE loader. (#84151) · 47fe1d16
      Vladimir Sadov 提交于
      * Introduce a diagnostic switch to turn off use of file mapping in PE loader.
      
      * change default to off
      
      * fix condition on Unix
      47fe1d16
    • K
      Arm64: Implement VectorTableLookup/VectorTableLookupExtension intrinsinsic +... · f92d72a7
      Kunal Pathak 提交于
      Arm64: Implement VectorTableLookup/VectorTableLookupExtension intrinsinsic + Consecutive registers support (#80297)
      
      * Add VectorTableLookup 2/3/4 in hwinstrinsiclistarm64.h
      
      * Add VectorTableLookup
      
      * fixes to libraries
      
      * Prototype of simple tbl
      
      * Some progress
      
      * Some more updates
      
      * working model
      
      * Vector64<byte> support
      
      * Add VectorTableLookup_3
      
      * Add VectorTableLookup_4
      
      * cleanup
      
      * Remove regCount from LclVarDsc
      
      * Some more cleanup
      
      Some more cleanup
      
      * setNextConsecutiveRegisterAssignment
      
      * Some more cleanup
      
      * TARGET_ARM64
      
      * Use getNextConsecutiveRefPositions instead of nextConsecutiveRefPosition field
      
      * jit format
      
      * Move getNextConsecutiveRefPosition
      
      * SA1141: Use tuple syntax
      
      * Remove the unwanted field list code
      
      * revert the flag that was mistakenly changed
      
      * Add test cases
      
      * FIELD_LIST
      
      * Use FIELD_LIST approach
      
      * jit format and fix arm build
      
      * fix assert failure
      
      * Add summary docs
      
      Add summary docs in all the required files.
      
      * Make APIs public again
      
      * cleanup
      
      * Handle case for reg mod 32
      
      * Remove references from ref until API is approved
      
      * Use generic getFreeCandidates()
      
      * Add entries in ExtraAPis
      
      * Set CLSCompliant=false
      
      * Move in inner class
      
      * Remove CLSCompliant flag
      
      * Add a suppression file for System.Runtime.Intrinsics on the new APIs until it they go through API review
      
      * Review feedback
      
      * Add workaround for building tests
      
      * review feedback
      
      * TP: remove needsConsecutive parameter from BuildUse()
      
      * TP: Remove pseudo intrinsic entries
      
      * More fixes
      
      * Add the missing csproj
      
      * Fix test cases
      
      * Add fake lib for AdvSimd.Arm64* as well
      
      * Remove the workaround
      
      * Use template to control if consecutive registers is needed or not
      
      * jit format
      
      * fix the workaround
      
      * Revert "fix the workaround"
      
      This reverts commit 1cb22d00d7159f40d33538ea29008e6764d52e45.
      
      * Revert "Remove the workaround"
      
      This reverts commit b0b6a5e9abea195bd6dc35c5a638d280f20d6ed2.
      
      * Add VectorTableLookupExtensions  in libraries
      
      * Add support for VectorTableLookupExtension
      
      * WIP: available regs
      
      * WIP: Remove test hacks
      
      * Update getFreeCandidates() for consecutive registers
      
      * Add missing resetRegState()
      
      * Do not assume the current assigned register for consecutiveRegisters refposition is good.
      
      If a refposition is marked as needConsecutive, then do not just assume that the existing register assigned
      is good. We still go through the allocation for it to make sure that we allocate it a register such that the
      consecutive registers are also free.
      
      * Handle case for copyReg
      
      For copyReg, if we assigned a different register, do not forget to free the existing register it was holding
      
      * Update setNextConsecutiveRegister() with UPPER_VECTOR_RESTORE
      
      * Update code around copyReg
      
      Updated code such that if the refPosition is already assigned a register, then
      check if assignedRegister satisfies are needs (for first / non-first refposition).
      If not, performs copyReg.
      
      TODO: Extract the code surrounding and including copyReg until where we `continue`.
      
      * Create the VectorTableLookup fake CoreLib as a reference assembly
      
      Make the AdvSimd.Arm64 tests reference the VectorTableLookup fake
      CoreLib as reference assembly; and ensure that it is not included as a
      ProjectReference by the toplevel HardwareIntrinsics merged test
      runners.
      
      The upshot is that the AdvSimd.Arm64 tests can call the extra APIs via
      a direct reference to CoreLib (instead of through System.Runtime), but
      the fake library is not copied into any test artifact directories, and
      the Mono AOT compiler never sees it.
      
      That said, after applying this, the test fails during AOT compilation
      of the *real* CoreLib
      
      ```
      Mono Ahead of Time compiler - compiling assembly /Users/alklig/work/dotnet-runtime/runtime-bugs2/artifacts/tests/coreclr/osx.arm64.Release/Tests/Core_Root/System.Private.CoreLib.dll
        AOTID EA8D702E-9736-3BD5-435B-A9D5EEADCC78
        %"System.ValueTuple`2<System.Runtime.Intrinsics.Vector128`1<byte>, System.Runtime.Intrinsics.Vector128`1<byte>>"* %arg_table
        <16 x i8>
      
        * Assertion: should not be reached at /Users/alklig/work/dotnet-runtime/runtime-bugs2/src/mono/mono/mini/mini-llvm.c:1455
      ```
      
      * Rename VectorTableLookup to VectorTableLookup.RefOnly
      
      * Start consecutive refpositions with RefTypeUse and never with RefTypeUpperVectorSave
      
      * Add test cases for VectorTableLookupExtension
      
      * Pass the missing defaultValues
      
      * Use platform neutral BitScanForward
      
      * jit format
      
      * Remove the fake testlib workaround
      
      * Fix mono failures
      
      * Fix x64 TP regression
      
      * Fix test cases
      
      * fix some more tp regression
      
      * Fix test build
      
      * misc. changes
      
      * Fix the bug where we were not freeing copyReg causing an assert in tier0
      
      * Refactor little bit to reduce checks for VectorTableLookup
      
      * Add template parameter for allocateReg/copyReg/select
      
      * Comments
      
      * Fix mono failures
      
      * Added some more comments
      
      * Call allocateReg/assignCopyReg/select methods only for refpositions that need consecutive registers
      
      * Add heuristics to pick best possible set of registers which will need less spilling
      
      * setNextConsecutiveRegisterAssignment() no longer checks for areNextConsecutiveRegistersFree()
      
      * Rename getFreeCandidates() -> getConsecutiveCandidates()
      
      * fix parameters to areNextConsecutiveRegistersFree()
      
      * Rename and update canAssignNextConsecutiveRegisters()
      
      * Add the missing setNextConsecutiveRegisterAssignment() calls
      
      * Fix a condition for upperVector
      
      * Update spill heurisitic to handle cases for jitstressregs
      
      * Misc. remove popcount() check from getConsecutiveRegisters()
      
      * jit format
      
      * Fix a bug in canAssignNextConsecutiveRegisters()
      
      * Add filterConsecutiveCandidates() and perform free/busy candidates scan
      
      * Consume the new free/busy consecutive candidates method
      
      * Handle case where 'copyReg == assignedReg'
      
      * Misc. cleanup
      
      * Include LsraExtraFPSetForConsecutive for stress regs
      
      * handle case where 'assignedInterval == nullptr' for try_SPILL_COST()
      
      * fix build error
      
      * Call consecutiveCandidates() only for first refposition
      
      * Only perform special handling for non-uppervectorrestore
      
      * jit format
      
      * Add impVectorTableLookup/impVectorTableLookupExtension
      
      * Add the missing break
      
      * Update assert
      
      * Move definitions in GenTree, fix assert
      
      * fix arm issue
      
      * Remove common functions
      
      * Rename info.needsConsecutiveRegisters to info.compNeedsConsecutiveRegisters
      
      * Use needsConsecutiveRegisters template parameter for all configurations
      
      * Handle case of round-robin in getConsecutiveRegisters()
      
      * Disable tests for Mono
      
      * Initialize outArray in test
      
      * Add IsSupported checks for VectorLookup/VectorLookupExtension
      
      * Fix the test cases for RunReflectionScenario_UnsafeRead()
      
      * Review feedback
      
      * wip
      
      * fix a typo in test case
      
      * Add filterConsecutiveCandidatesForSpill() to select range that needs fewer register spilling
      
      * Add mono support.
      
      * Delay free the registers for VectorTableLookupExtension
      
      * fix mono build error
      
      ---------
      Co-authored-by: NTanner Gooding <tagoo@outlook.com>
      Co-authored-by: NAleksey Kliger <alklig@microsoft.com>
      Co-authored-by: NZoltan Varga <vargaz@gmail.com>
      f92d72a7
    • L
      Fix debugger stack unwind AV (#84270) · 4271678a
      Lee Culver 提交于
      In the debugger we do not have in-memory pointers to the context record.  Stack unwinds are all concrete, and update pCurrentContext instead.  Due to this, this change https://github.com/dotnet/runtime/commit/60adacb2b7a4ab9dc1e5af6c71fdfce7ad87fac0 zeroed out the m_Ptrs variable for all callee saved registers.
      
      This change wasn't sufficient, however, because we actually try to use pCurrentContextPointers in a variety of places while dealing with reporting GC references, leading to an AV when GcInfoDecoder::GetStackSlot attempts to report an offset to RBP for certain kinds of coreclr!Frames.
      
      This change updates pCurrentContextPointers to point to pCurrentContext in the dac.
      
      (This issue/change only applies to AMD64.)
      4271678a
    • X
      Refactor Interop.LocalAlloc follow-up (#84164) · b1812ef9
      xtqqczze 提交于
      b1812ef9
    • J
    • C
      [PERF] Enable daily perf runs on cloud VMs (#84203) · e6226e67
      Cameron Aavik 提交于
      * Add perf run for cloud VMs
      
      * Ensure x64 is built
      
      * Use non-open queue for internal runs
      e6226e67
    • A
      [mono] update sgen codewoners (#84255) · 42687a97
      Aleksey Kliger (λgeek) 提交于
      42687a97
    • V
      [RISC-V] Port Mono for RISC-V 64 Arch (1/3) lp64d ABI (#83714) · c0b05ae1
      VincentWu 提交于
      * support abi lp64d for RISC-V 64
      
      * format
      c0b05ae1