Skip to content
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

Update IProfiler to handle invokePrivateMethod #7697

Merged
merged 3 commits into from
Nov 7, 2019

Conversation

DanHeidinga
Copy link
Member

IProfiler already was aware of the initialVirtualMethod due to
how the profiles are collected - the VM just writes the J9Method*
that corresponds to the vtable index without doing additional
processing.

Previously, only the initialVirtualMethod would show up in that
case. Now the invokePrivateMethod can as well and will more
often with #7666, which stops doing the invokevirtual ->
invokespecial mapping for private methods.

Further improvements are needed to get profiling for the "real"
method being called in the invokeprivate case but that will
have to be done in a separate PR.

As part of this, I've also modified jitGetJ9MethodUsingIndex()
to consistently return NULL for the initial*Method and
invokePrivateMethod cases. Though there is some very strange
code in one case that I believe was, and still is, incorrect.

fixes: #7696

Signed-off-by: Dan Heidinga daniel_heidinga@ca.ibm.com

IProfiler already was aware of the initialVirtualMethod due to
how the profiles are collected - the VM just writes the J9Method*
that corresponds to the vtable index without doing additional
processing.

Previously, only the initialVirtualMethod would show up in that
case.  Now the invokePrivateMethod can as well and will more
often with eclipse-openj9#7666, which stops doing the invokevirtual ->
invokespecial mapping for private methods.

Further improvements are needed to get profiling for the "real"
method being called in the invokeprivate case but that will
have to be done in a separate PR.

As part of this, I've also modified jitGetJ9MethodUsingIndex()
to consistently return NULL for the initial*Method and
invokePrivateMethod cases.  Though there is some very strange
code in one case that I believe was, and still is, incorrect.

fixes: eclipse-openj9#7696

Signed-off-by: Dan Heidinga <daniel_heidinga@ca.ibm.com>
Signed-off-by: Dan Heidinga <daniel_heidinga@ca.ibm.com>
Signed-off-by: Dan Heidinga <daniel_heidinga@ca.ibm.com>
@gacholio
Copy link
Contributor

gacholio commented Nov 6, 2019

jenkins test sanity xlinux jdk8

@gacholio gacholio self-assigned this Nov 6, 2019
@DanHeidinga
Copy link
Member Author

Opened #7711 to track making a proper API for detecting the VM special initial methods

@gacholio gacholio merged commit 66556b4 into eclipse-openj9:master Nov 7, 2019
@pshipton
Copy link
Member

pshipton commented Nov 7, 2019

This didn't fix #7696, the assert still occurred in the nightly build last night. The build has OpenJ9 sha 66556b4 which is the merge of this PR. Merge pull request #7697 from DanHeidinga/djh/iprofiler

@pshipton
Copy link
Member

pshipton commented Nov 7, 2019

I notice the PR testing didn't include extended testing, which is the failing test suite.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

rtc001 ASSERTION FAILED at compiler/runtime/IProfiler.cpp:4215
4 participants