-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Display names of handles in dumps #97573
Display names of handles in dumps #97573
Conversation
For class/method/field handles, display their name in dumps in addition to their handle value. Also fixes a problem in assertion prop dumping where 64-bit class handle constants were truncated to 32-bit in dump.
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsFor class/method/field handles, display their name in dumps in addition to their handle value. Also fixes a problem in assertion prop dumping where 64-bit class handle constants were truncated to 32-bit in dump.
|
Examples:
|
@EgorBo @dotnet/jit-contrib PTAL |
Diff results for #97573Throughput diffsThroughput diffs for osx/arm64 ran on windows/x64MinOpts (-0.00% to +0.01%)
Throughput diffs for windows/arm64 ran on windows/x64MinOpts (-0.01% to +0.00%)
Details here |
This broke JitDump in native AOT (and probably crossgen too). It's casting things to |
A VN can be converted to CORINFO_CLASS_HANDLE clsHandle;
if (vnStore->IsVNTypeHandle(clsVN) &&
vnStore->EmbeddedHandleMapLookup(vnStore->ConstantValue<ssize_t>(clsVN), (ssize_t*)&clsHandle))
{
...
} (probably, can be a bit relaxed for non-aot) |
What's the failure mode? In crossgen2 I see a bunch of |
I don't understand: we have a handle constant, but it's not a handle constant? What is it? |
This is probably because the SPMI exception handler around the printers is catching the exception thrown on the EE side. |
(This is the case for all other handle types too, FWIW) |
So a "compile-time handle" is a value the JIT can use to interrogate properties on the VM interface, and an "embedded handle" is the constant that the JIT writes into the code stream? |
Yep, that is exactly correct. |
I don't think it's needed for GTF_ICON_OBJECT_HANDLE? |
I suppose so. That is a handle type which only has the embedded form. |
It seems odd we don't use/store the compile handle everywhere and look up the embedded handle only at codegen time when deciding what constant to embed. |
Revert dotnet#97573 to previous behavior (not dumping handle strings) for NativeAOT and R2R compiles; those require more work to find the handle to use.
Revert #97573 to previous behavior (not dumping handle strings) for NativeAOT and R2R compiles; those require more work to find the handle to use.
For class/method/field handles, display their name in dumps in addition to their handle value.
Also fixes a problem in assertion prop dumping where 64-bit class handle constants were truncated to 32-bit in dump.