-
Notifications
You must be signed in to change notification settings - Fork 767
Create TR_IPBCDataDirectCall for IProfiler #21874
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
Conversation
3499bb6
to
f9d568f
Compare
jenkins compile all jdk8,jdk21 |
jenkins test sanity all jdk21 |
Windows failed one test:
I have also looked at performance of this PR and there might be a small perf regression ~3.5% |
f9d568f
to
bce0daf
Compare
I fixed the performance regression in the latest forced push. |
@dsouzai Could you please review/merge this PR? Thanks |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. That said, looks like the memory type OMR PR has propagated to openj9-omr, so you could update this PR with the memory type (unless you think it's better to do so in another one).
I will update now. |
The IProfiler does not collect samples for direct calls. Instead, the optimizer will use the setCallCount() API to set the number of samples for such direct calls. Until this commit, direct-call info was stored in TR_IPBCDataCallGraph entries which was mainly created for interface and virtual calls. Such entries track 3 different call targets and are somewhat bigger than the rest of IProfiler entries. For direct calls we only need a simple counter, so using TR_IPBCDataCallGraph entries for this purpose is wasteful. This commit introduces a new type of IProfiler entry, called TR_IPBCDataDirectCall, which will be used for storing profiling info related to direct calls. Note that the optimizer will remain the sole entity that will populate such entries. Moreover, these new entries will not be stored into the SCC (this follows the existing approach where profiling info related to direct calls is not stored in SCC). Signed-off-by: Marius Pirvu <[email protected]>
bce0daf
to
16ec425
Compare
Updated the code with the correct memory tag from OMR. |
jenkins test sanity.functional all jdk21 |
The IProfiler does not collect samples for direct calls. Instead, the optimizer will use the setCallCount() API to set the number of samples for such direct calls. Until this commit, direct-call info was stored in
TR_IPBCDataCallGraph
entries which was mainly created for interface and virtual calls. Such entries track 3 different call targets and are somewhat bigger than the rest of IProfiler entries. For direct calls we only need a simple counter, so usingTR_IPBCDataCallGraph
entries for this purpose is wasteful.This commit introduces a new type of IProfiler entry, called
TR_IPBCDataDirectCall
, which will be used for storing profiling info related to direct calls. Note that the optimizer will remain the sole entity that will populate such entries. Moreover, these new entries will not be stored into the SCC (this follows the existing approach where profiling info related to direct calls is not stored in SCC).