Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not use RhGetCodeTarget in delegate equality #88611

Merged
merged 1 commit into from
Jul 12, 2023

Commits on Jul 10, 2023

  1. Do not use RhGetCodeTarget in delegate equality

    dotnet/corert@08d78ae
    
    The original motivation for this was handling import stubs:
    ```
    Function pointer equality comparison was not handling cross-module pointers correctly when optimizations were enabled
    (causes target pointers to be wrapped in jump stubs sometimes). The delegate equality comparison was hitting this bug.
    ```
    We do not have import stubs anymore and unwrapping unboxing stubs serves no purpose here.
    
    Microbenchmarks of delegate equality show ~3x improvement with this change:
    ```
    Bench_DelegateEquality_Positive_OpenStatic<10000000>() took: 355 ms
    Bench_DelegateEquality_Positive_ClosedStatic<10000000>() took: 367 ms
    Bench_DelegateEquality_Positive_ClosedInstance<10000000>() took: 371 ms
    
    Bench_DelegateEquality_Positive_OpenStatic<10000000>() took: 121 ms
    Bench_DelegateEquality_Positive_ClosedStatic<10000000>() took: 120 ms
    Bench_DelegateEquality_Positive_ClosedInstance<10000000>() took: 122 ms
    ```
    
    Additionally, there is some desire to upstream changes for a portable RhGetCodeTarget implementation. Not having to
    deal with it at this relatively low-level layer will make things more robust.
    SingleAccretion committed Jul 10, 2023
    Configuration menu
    Copy the full SHA
    bd8efd0 View commit details
    Browse the repository at this point in the history