-
Notifications
You must be signed in to change notification settings - Fork 728
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
Cache unresolvedInCP at the JIT Server #20654
Cache unresolvedInCP at the JIT Server #20654
Conversation
@@ -1477,12 +1477,18 @@ TR::CompilationInfoPerThreadRemote::getCachedIProfilerInfo(TR_OpaqueMethodBlock | |||
* @param key Identifier used to identify a resolved method in resolved methods cache | |||
* @param method The resolved method of interest | |||
* @param vTableSlot The vTableSlot for the resolved method of interest | |||
* @param unresolvedInCP The unresolvedInCP boolean value of interest |
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.
Typo: the parameter is called isUnresolvedInCP
@@ -1664,12 +1704,13 @@ TR_ResolvedJ9JITServerMethod::cacheResolvedMethodsCallees(int32_t ttlForUnresolv | |||
|
|||
// 2. Send a remote query to mirror all uncached resolved methods | |||
_stream->write(JITServer::MessageType::ResolvedMethod_getMultipleResolvedMethods, (TR_ResolvedJ9Method *) _remoteMirror, methodTypes, cpIndices); | |||
auto recv = _stream->read<std::vector<TR_OpaqueMethodBlock *>, std::vector<uint32_t>, std::vector<TR_ResolvedJ9JITServerMethodInfo>>(); | |||
auto recv = _stream->read<std::vector<TR_OpaqueMethodBlock *>, std::vector<uint32_t>, std::vector<TR_ResolvedJ9JITServerMethodInfo>, std::vector<bool>>(); |
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.
You mentioned that vector is not working, but I see it used here
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.
The boolean didn't work with write(), but it did work with read()
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.
The type that is used for writing should match the type it is used for reading.
85f2719
to
8c59a7e
Compare
Cache the value of unresolvedInCP for virtual, static, and special calls when caching a resolved method at the JIT Server, instead of assuming it is true for all cases. Signed-off-by: Luke Li <[email protected]>
8c59a7e
to
2b95d24
Compare
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.
Looks good to me. As discussed, please run the AcmeAir benchmark with JITServer, with and without this change and see if there is any performance impact.
jenkins test sanity,extended,sanity.system,extended.system plinuxjit,xlinuxjit,zlinuxjit,alinux64jit jdk17 |
plinux failed
On xlinux we failed
|
10 iteration grinder started here: https://openj9-jenkins.osuosl.org/job/Grinder/4000/ |
The grinder showed 4/10 failures. |
Without JITServer, all the 10 grinders have passed. |
By the way, AcmeAir showed no performance impact
|
Since MathLoadTest_autosimd_5m_0 fails with the nightly build as well, it means that it's not a new regression introduced by this PR. Hence, this PR is good to be merged. |
Cache the value of unresolvedInCP for virtual, static, and special calls when caching a resolved method at the JIT Server, instead of assuming it is true for all cases.