1. 06 10月, 2021 2 次提交
    • S
      Implement `GT_MUL_LONG` for ARM64 (#57926) · 220b746f
      SingleAccretion 提交于
      * Refactor LONG_MUL recognition
      
      Move it to a GenTree method so that it can be reused in lowering.
      
      No diffs except for a couple (~5 across all SPMI collection) on
      ARM due to the new operand swapping behavior.
      
      * Fix the definition for MUL_LONG
      
      Move it out of the "#if !defined(TARGET_64BIT)" block.
      
      Also some miscellaneous moving of comments around.
      
      * Support MUL_LONG for ARM64 in codegen and LSRA
      
      Note: this commit breaks magic division.
      
      * Fix magic division
      
      To use the new GT_MUL_LONG support.
      Plus some tweaks to make it conform to the coding guide.
      
      Credit to @pentp for the substantive changes.
      
      * Recognize MUL_LONG in lowering for ARM64
      
      * Fix #ifdef's
      220b746f
    • E
      Fix byte array handling in STJ sourcegen (#59957) · b9eb5acb
      Eirik Tsarpalis 提交于
      b9eb5acb
  2. 05 10月, 2021 19 次提交
  3. 04 10月, 2021 8 次提交
    • S
      Stop retyping RHSes to byrefs on type mismatch (#58297) · 6fb5ef73
      SingleAccretion 提交于
      * Stop retyping RHSes to byrefs on type mismatch
      
      This is an interesting piece of code. Using it, it is possible
      to give TYP_BYREF to any node that would ordinarily have
      TYP_I_IMPL. In particular, I encountered it in my GT_CAST work:
      we have tests in the SPMI collections with CAST(byref <- long <- int)
      in them. Ordinarily such a tree would assert in VN, but in that
      case optimizations were off and so everything went smoothly.
      
      It is possible to have TYP_BYREF UMOD/MUL_OVF_UN and similar
      with this code. Naturally, even though this is legal IL, the
      compiler does not like it and fails with asserts in multiple
      places.
      
      So, just delete the retyping. The cited assert either no longer
      exists (though I had a look at the legacy codegen and could not
      find it there...) or got reworked at some point.
      
      There are GC Info diffs with this change. They consist of cases
      when a constant zero node was retyped to TYP_BYREF and thus its
      register's liveness was recorded.
      
      There are few code size diffs with this change. It does pessimize VN
      a little because we will now have more cases where a cast VN is added
      for an assignment, but VN is already very pessimistic for byrefs, so
      it seems acceptable.
      
      * Add a test covering the discovered problem
      
      VN-based copy propagation checks the compatibility of types using
      the type of node at use and the RHS of the new local's def. Thus,
      when we retype a TYP_I_IMPL RHS to TYP_BYREF, we risk substituting a
      TYP_BYREF local with a TYP_I_IMPL one, dangerously shortening the
      lifetime of the managed pointer.
      6fb5ef73
    • P
      [wasm] lint auto fix (#59928) · 8d481bea
      Pavel Savara 提交于
      * lint auto fix
      8d481bea
    • T
      Fix JS debugger tests (#59868) · 4b9f45f9
      Thays Grazia 提交于
      4b9f45f9
    • P
      [wasm] More typescript conversion (#59655) · e332aa07
      Pavel Savara 提交于
      * - only one emscripten library file library-dotnet.js
      - flattened typescript folders
      - binding_support.js split into multiple TS files
      - clarified exports
      - binding js methods to linker is generated during emcc module loading
      - types:
      Co-authored-by: NDaniel Genkin <genkind@gmail.com>
      * feedback from @kg
      e332aa07
    • D
      [main] Update dependencies from dnceng/internal/dotnet-optimization... · 355a8cf1
      dotnet-maestro[bot] 提交于
      [main] Update dependencies from dnceng/internal/dotnet-optimization dotnet/xharness dotnet/roslyn-analyzers dotnet/msquic (#59905)
      Co-authored-by: Ndotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
      Co-authored-by: NPremek Vysoky <premek.vysoky@microsoft.com>
      355a8cf1
    • J
      Fix code heap reservation size (#59883) · 33204f6a
      Jan Vorlicek 提交于
      When I've moved the heap metadata out of the actual code heaps some time
      ago, I've forgotten to account for the personality routine slot
      allocated at the beginning of the heaps. This was exposed by an assert when
      executing under the JIT stress mode 2.
      
      This change fixes it by adding accounting for those.
      
      Close #59794
      33204f6a
    • S
      aef20409
    • M
      Annotate methods that get MethodBase from a stackwalk as RUC (#59851) · b72b8a2a
      Michal Strehovský 提交于
      Fixes #53242. Saddened this didn't make .NET 6.0.
      
      Stack traces in trimmed apps look ugly without this fix:
      
      ```
      Unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'id')
         at System.TimeZoneInfo.ValidateTimeZoneInfo(String , TimeSpan , AdjustmentRule[] , Boolean& )
         at System.TimeZoneInfo..ctor(String , TimeSpan , String , String , String , AdjustmentRule[] , Boolean , Boolean )
         at System.TimeZoneInfo.CreateCustomTimeZone(String , TimeSpan , String , String )
         at Program.<Main>$(String[] args) in C:\stacktrace\Program.cs:line 3
      ```
      b72b8a2a
  4. 03 10月, 2021 2 次提交
  5. 02 10月, 2021 9 次提交