Uh oh!
There was an error while loading. Please reload this page.
JIT: remove getUnboxedEntry and getInstantiatedEntry - #129285
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR removes the getUnboxedEntry / getInstantiatedEntry ICorJitInfo host APIs and instead plumbs unboxed-entry information through resolveVirtualMethod, updating the JIT, CoreCLR host, and SuperPMI tooling accordingly.
Changes:
- Populate
resolvedTokenDevirtualizedUnboxedMethodduring devirtualization and update JIT call/unboxing logic to consume it. - Remove
getUnboxedEntryandgetInstantiatedEntryfrom the public JIT/EE interface and all generated wrappers/shims. - Update SuperPMI recording/replay infrastructure and bump the JIT/EE versioning GUID.
Reviewed changes
Copilot reviewed 23 out of 23 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/coreclr/vm/jitinterface.cpp | Sets unboxed-entry method handle on devirtualization result. |
| src/coreclr/inc/corinfo.h | Removes APIs and documents new unboxed resolved-token behavior. |
| src/coreclr/jit/importercalls.cpp | Switches unboxed-entry transformation logic to use resolved token + signature inspection. |
| src/coreclr/jit/indirectcalltransformer.cpp | Uses unboxed method handle from resolved token for GDV inline demotion logic. |
| src/coreclr/jit/inline.h | Removes separate unboxed-entry handle storage; relies on resolved token. |
| src/coreclr/inc/jiteeversionguid.h | Bumps interface GUID for breaking API change. |
| src/coreclr/tools/superpmi/** | Removes the two API calls from interception/record/replay and related packet definitions. |
| src/coreclr/tools/aot/jitinterface/jitinterface_generated.h | Removes callbacks/wrapper methods for the deleted APIs. |
| src/coreclr/tools/Common/JitInterface/* | Updates thunk generator inputs and managed interop to drop deleted APIs. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
hez2010
commented
Jun 12, 2026
@jakobbotsch CI seems passing, but I guess this will need a pri1 test run to exercise more coverages. |
hez2010
commented
Jun 13, 2026
It seems that spmi gets skipped due to jit-ee interface changes. Trigger a MihuBot to check if it's zero diff. |
hez2010
commented
Jun 13, 2026
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
hez2010
commented
Jun 13, 2026
Zero diff as expected. |
hez2010
commented
Jun 18, 2026
Ping. |
I wouldn't say that is the motivation. The main motivation is to make sure we can handle shared generic devirtualization in a uniform manner in the future, once we start seeing combinations of runtime lookups and unboxing stubs. In general we do not care that much for some extra JIT-EE queries, especially not when it is a result of some real optimization happening. |
jakobbotsch
commented
Jun 19, 2026
/azp run runtime-coreclr outerloop, runtime-coreclr crossgen2, runtime-coreclr crossgen2 outerloop |
|
Azure Pipelines successfully started running 3 pipeline(s). |
hez2010
commented
Jun 19, 2026
I've updated the PR description to reflect it. |
Updated the branch to unblock build. @jakobbotsch can you rerun the pri1 tests? |
jakobbotsch
commented
Jun 19, 2026
/azp run runtime-coreclr outerloop, runtime-coreclr crossgen2, runtime-coreclr crossgen2 outerloop |
|
Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command. |
jakobbotsch
commented
Jun 20, 2026
/azp run runtime-coreclr outerloop, runtime-coreclr crossgen2, runtime-coreclr crossgen2 outerloop |
|
Azure Pipelines successfully started running 3 pipeline(s). |
hez2010
commented
Jun 20, 2026
All test failures seem to be known. |
jakobbotsch
commented
Jun 21, 2026
Can you double check the failure in |
hez2010
commented
Jun 22, 2026
I'm not able to reproduce this build failure in my local environment. I downloaded the artifacts produced by the CI and run crossgen2 with and it produced the assembly normally: It seems to be a CI lagging? |
jakobbotsch
commented
Jun 22, 2026
I will rerun the job, I looked for a while but I could not find any failures similar to that one. |
jakobbotsch
commented
Jun 22, 2026
jakobbotsch
commented
Jun 22, 2026
/ba-g Failures are known or already fixed |
Uh oh!
There was an error while loading. Please reload this page.
Cleanup `getUnboxedEntry` and `getInstantiatedEntry` and all their usages to make sure we can handle shared generic devirtualization in a uniform manner in the future, once we start seeing combinations of runtime lookups and unboxing stubs.
Cleanup
getUnboxedEntryandgetInstantiatedEntryand all their usages to make sure we can handle shared generic devirtualization in a uniform manner in the future, once we start seeing combinations of runtime lookups and unboxing stubs.cc: @jakobbotsch