-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Closed
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
A couple examples in the OSR stress weekend experimental runs.
Because of inlining the reporting of this for generic contexts is needed in an OSR method, but not in the base method. This violates an assumption that both methods would agree on this aspect.
runtime/src/coreclr/jit/lclvars.cpp
Lines 6193 to 6204 in ca7f199
| // OSR methods use the original method slot for the cached kept alive this, | |
| // so don't need to allocate a slot on the new frame. | |
| if (opts.IsOSR()) | |
| { | |
| if (lvaKeepAliveAndReportThis()) | |
| { | |
| PatchpointInfo* ppInfo = info.compPatchpointInfo; | |
| assert(ppInfo->HasKeptAliveThis()); | |
| int originalOffset = ppInfo->KeptAliveThisOffset(); | |
| lvaCachedGenericContextArgOffs = originalFrameStkOffs + originalOffset; | |
| } | |
| } |
Should not be too hard to report the kept-alive this in the OSR method on it's part of the frame. Looks like CodeGen::genReportGenericContextArg might just work for OSR frames, though that needs to be verified.
category:correctness
theme:osr
skill-level:intermediate
cost:small
impact:small
Reactions are currently unavailable
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
Done