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: 4db6ac9
Choose a base ref
...
head repository: dotnet/linker
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 391ac60
Choose a head ref
  • 7 commits
  • 79 files changed
  • 5 contributors

Commits on Oct 27, 2022

  1. Create ParameterProxy to wrap logic surrounding parameters and use …

    …one `ParameterIndex` struct to index (#3059)
    
    This reverts commit 45e2e59.
    
    This commit creates a 'ParameterProxy' type and 'ParameterIndex' to represent parameters in a consistent way. This is motivated by using 'int' to represent different ways of counting parameters (sometimes offset by 1 for the 'this' parameter, sometimes not offset). ParameterIndex should now be the only type used to index into a method's parameters. ParameterIndex represents the index of the parameter as it is passed to the method in IL (i.e. 'this' is the 0 index in instance methods). ParameterProxy wraps the common convention of a MethodProxy and int to represent a parameter, and now holds a Method and a ParameterIndex to encapsulate a Parameter.
    
    No behavioral changes are expected from this change.
    
    Co-authored-by: Vitek Karas <[email protected]>
    Co-authored-by: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com>
    3 people authored Oct 27, 2022
    Configuration menu
    Copy the full SHA
    ca39998 View commit details
    Browse the repository at this point in the history
  2. Update CI status in readme (#3086)

    * Update CI status in readme
    
    Co-authored-by: Sven Boemer <[email protected]>
    jtschuster and sbomer authored Oct 27, 2022
    Configuration menu
    Copy the full SHA
    ef10f6d View commit details
    Browse the repository at this point in the history
  3. Check for marking virtual method due to base only when state changes (#…

    …3073)
    
    Instead of checking every virtual method to see if it should be kept due
    to a base method every iteration of the MarkStep pipeline, check each
    method only when its relevant state has changed. 
    
    Co-authored-by: Sven Boemer <[email protected]>
    jtschuster and sbomer authored Oct 27, 2022
    Configuration menu
    Copy the full SHA
    8306887 View commit details
    Browse the repository at this point in the history

Commits on Oct 31, 2022

  1. Configuration menu
    Copy the full SHA
    c5d28ae View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    aea1d9f View commit details
    Browse the repository at this point in the history

Commits on Nov 1, 2022

  1. Fix branch removal in compiler generated code (#3088)

    Changes to processing of compiler generated methods lead to a state where we don't call constant prop and branch removal in all cases before we mark instructions of the method. This can lead to overmarking
    
    This change fixes this by making sure that the branch removal executes on the method in all cases before we mark instructions of the method.
    
    The change guarantees that all accesses to Body are after the constant prop/branch removal happened on the method.
    
    This does have one possibly negative impact: the issue described in https://github.com/dotnet/linker/issues/2937 is now consistent and happens always.
    
    Added tests.
    
    Note that there's still a whole in analysis of compiler generated code around state machines, see #3087
    
    Basically if there's a local function which is going to be removed due to branch removal and if the body of that method contains code which produces a warning due to generic parameter validation, such warning will always be generated even though it's "dead" code and even if it's suppressed via RUC or similar.
    
    In such case the analysis can't figure out to which method the local function belongs (since the call site has been removed).
    vitek-karas authored Nov 1, 2022
    Configuration menu
    Copy the full SHA
    e502e72 View commit details
    Browse the repository at this point in the history

Commits on Nov 2, 2022

  1. Don't mark override of abstract base if the override's declaring type…

    … is not marked (#3098)
    
    * Don't mark an override every time the base is abstract, only if the declaring type is also marked
    Adds a condition to ShouldMarkOverrideForBase to exit early if the declaring type of the method is not marked.
    jtschuster authored Nov 2, 2022
    Configuration menu
    Copy the full SHA
    391ac60 View commit details
    Browse the repository at this point in the history
Loading