-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Open
Labels
area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Milestone
Description
Current finally cloning algorithm is roughly:
foreach try-finally in the method
if the finally is not too big, not rare, and is not must throw
find the "normal" exit path from the try-finally (lexically last exit)
move the normal exit path to be the fall through path if necessary
clone the finally and reroute the normal exit and any other exit that can share the normal path to the clone
With PGO data, we should reconsider:
- We might want to adjust the size threshold based on relative profile counts
- We should pick the hottest exit path, not the "normal" path (JIT: profile updates for finally optimizations #49139)
- We might consider multiple clones
- We should rescale the profile counts in the clone to reflect how much of the finally execution now flows there (JIT: profile updates for finally optimizations #49139)
At a minimum, we should do the rescaling.
category:cq
theme:profile-feedback
Metadata
Metadata
Assignees
Labels
area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Type
Projects
Status
PGO