-
Notifications
You must be signed in to change notification settings - Fork 738
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
Enable peeking ILGen for inlined methods related to java/util/HashMap get/put operations. #21157
base: master
Are you sure you want to change the base?
Conversation
@vijaysun-omr Requesting review. These set of changes enable |
@@ -748,6 +748,15 @@ TR_J9EstimateCodeSize::processBytecodeAndGenerateCFG(TR_CallTarget *calltarget, | |||
auto calleeMethod = (TR_ResolvedJ9Method*)calltarget->_calleeMethod; | |||
resolvedMethod = calleeMethod->getResolvedPossiblyPrivateVirtualMethod(comp(), cpIndex, true, &isUnresolvedInCP); | |||
|
|||
if (resolvedMethod) | |||
{ | |||
const char * sig = resolvedMethod->signature(comp()->trMemory()); |
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.
Could/should we be using recognized methods here ? as opposed to strncmp
?
Do you intend to squash these commits ? |
jenkins test sanity all JDK21 |
Tests passed on all platforms except x86-64 Windows, related to #21000. Updating the branch to address review comments so the builds will not be accessible from this PR. |
1c35232
to
f2a5444
Compare
if (resolvedMethod) | ||
{ | ||
const char * sig = resolvedMethod->signature(comp()->trMemory()); | ||
if (sig && !strncmp(sig, "java/util/HashMap.hash", 22)) |
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.
Similar question to before for this spot too. Should/could we be using recognized methods here ? Please check the other strncmp
uses that you added as well. At least one of the other ones is only known to be a "method" rather than a "resolved method". So you may not be able to use recognized methods there.
Signed-off-by: Nazim Bhuiyan <[email protected]>
To propagate arg info from callers of HashMap.put, HashMap.get, and Object.hashCode, generating IL of their callers is necessary when called from an inlined method. This allows us to propagate prex arg info from caller and enable compile-time folding of fastIdentityHashCode calls. Signed-off-by: Nazim Bhuiyan <[email protected]>
f2a5444
to
598658d
Compare
Thanks, I will run testing again, but I don't intend to merge until some performance questions you are investigating are resolved. |
jenkins test sanity all JDK21 |
To propagate arg info from callers of
HashMap.put
,HashMap.get
,HashMap.hash
,Map.get
,Map.put
andObject.hashCode
, generating IL of their callers is necessary when called from an inlined method. This allows us to propagate prex arg info from caller and enable compile-time folding of fastIdentityHashCode calls during Value Propagation.