-
Notifications
You must be signed in to change notification settings - Fork 5.2k
JIT: Always track the context for late devirt #112396
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
Changes from 14 commits
8563a18
3678070
1173d97
dc917f2
57427a4
e0e7344
4b30625
d01f255
d746d95
6a2dcd6
125600a
1c711a3
7f7c0f4
55585bd
4fa6b92
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -5758,11 +5758,13 @@ struct GenTreeCall final : public GenTree | |
| jitstd::vector<InlineCandidateInfo*>* gtInlineCandidateInfoList; | ||
|
|
||
| HandleHistogramProfileCandidateInfo* gtHandleHistogramProfileCandidateInfo; | ||
| LateDevirtualizationInfo* gtLateDevirtualizationInfo; | ||
|
|
||
| CORINFO_GENERIC_HANDLE compileTimeHelperArgumentHandle; // Used to track type handle argument of dynamic helpers | ||
| void* gtDirectCallAddress; // Used to pass direct call address between lower and codegen | ||
| }; | ||
|
|
||
| LateDevirtualizationInfo* gtLateDevirtualizationInfo; // Always available for user virtual calls | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Have you checked whether this can be merged with some other information of
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Late devirtualization can happen even without generic context, so we need to always track the
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Instead we can remove the member
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Or alternatively, we will have to block all inlining for devirted methods that don't have a generic context in late devirt.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For debug it's ok to use extra memory, we are more concerned with release. I suppose we cannot move this into the union above this one because of
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, unfortunately. Maybe we can merge it with
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think it's ok to leave it as a separate field for now. Maybe we should consider some better approaches in the future to reducing the size of
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Okay. I just pushed a commit to remove the redundant flag. |
||
|
|
||
| // expression evaluated after args are placed which determines the control target | ||
| GenTree* gtControlExpr; | ||
|
|
||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.