Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: dotnet/linker
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 5d376b1
Choose a base ref
...
head repository: dotnet/linker
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: c321df2
Choose a head ref
  • 2 commits
  • 11 files changed
  • 2 contributors

Commits on Aug 12, 2021

  1. Fix broken try/catch/filter offsets after isinst optimization (#2205)

    The isinst optimization replaces that instruction with a pop, ldnull when the type is not instantiated. This changes the instruction and also changes the length of the instruction in that position. Cecil unfortunately doesn't update try/catch/filter references and they keep pointing to the old isinst instruction which not part of the method body anymore. When saving the assembly the offsets stores in the try/catch/filter records end up effective random and corrupted.
    
    This is a short-term fix to unblock failures in runtime due to this problem.
    
    Medium term fix would be to carefully handle all IL replacements in the linker with regard to try/catch/filter records.
    
    Ideally the long term fix would be to do this in Cecil in such a way that IL replacements would be correctly handled on their own.
    
    This fixes the Http3RequestStream failures mentioned in #2181, but I was not able to confirm if this fixes the CoreLib ArrayPool issues as well (I think it will not).
    vitek-karas authored Aug 12, 2021
    Configuration menu
    Copy the full SHA
    4dd506a View commit details
    Browse the repository at this point in the history

Commits on Aug 13, 2021

  1. Fix warnings for DAMT on interfaces (#2210)

    * Fix warnings for DAMT on interfaces
    
    #2191 addressed issues with redundant
    warnings from base types, but interfaces need to be handled specially.
    
    There were a few issues with the interface handling in that change:
    - The binding logic didn't include interfaces for DAM.All when
      declaredOnly was specified, as @vitek-karas pointed out in
       #2206 (comment).
       This could have led to us not marking interfaces for types derived
       from a DAMT.All-annotated type. Either way, the binding logic
       should not select interface _members_ when declaredOnly is specified.
    - The DAMT-on-type logic had special handling for base types, but
      didn't separately mark interface members, which is needed when
      applying annotations DAMT.All or DAMT.Interfaces. This could have led
      to missing interface impls or interface members for types which have
      (explicit or inherited) DAMT.All or DAMT.Interfaces annotations.
    
    Separately, the bit operations on DAMT also didn't correctly handle cases
    where there are bits shared by different enum members.
    
    * Remove debug output
    
    * Apply suggestions from code review
    
    Co-authored-by: Vitek Karas <vitek.karas@microsoft.com>
    
    Co-authored-by: Vitek Karas <vitek.karas@microsoft.com>
    sbomer and vitek-karas authored Aug 13, 2021
    Configuration menu
    Copy the full SHA
    c321df2 View commit details
    Browse the repository at this point in the history
Loading