Skip to content

RyuJIT: JIT, readonly static fields and dynamic dispatch #5502

@omariom

Description

@omariom

JIT could replace virtual, interface and delegate dispatch with static one when it knows the target at jit-time. JIT could even inline it when appropriate.

private static readonly EqualityComparer<T> eqCmpr = EqualityComparer<T>.Default;
private static readonly IComparer<T> cmpr = CreateComparer();
private static readonly Func<T, T, bool> funcCmpr  = CreateDelegateComparer();

private void HappenedToBeJittedFirst(T x, T y)
{
    eqCmpr.Equals(x, y);
}

private void LuckyOne(T x, T y)
{
    eqCmpr.Equals(x, y);
}

category:cq
theme:devirtualization
skill-level:expert
cost:medium

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIenhancementProduct code improvement that does NOT require public API changes/additionsoptimizationtenet-performancePerformance related issue

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions