-
Notifications
You must be signed in to change notification settings - Fork 754
Support ignoring the client's local SCC when compiling a JITServer AOT cache store #18937
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
Attn @mpirvu. Maybe @dsouzai would like to look as well. This shouldn't change any behaviour, except that in This is the bulk of the work needed in #18301 to support AOT cache store compilations when the client doesn't have a local SCC. Once everything is ready, the client will be able to set |
b5a3201
to
0abad4e
Compare
Force-pushed to bring in the ROM class packing changes that were just merged. |
The _useServerOffsets field will be set when a client wants its local SCC (whether or not it exists) to be ignored during JITServer AOT cache compilations. Currently the client always sets this field to false. Signed-off-by: Christian Despres <[email protected]>
Signed-off-by: Christian Despres <[email protected]>
0abad4e
to
754230f
Compare
Force-pushed just to rebase onto master. |
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.
I have some inline comments
The methods of TR_J9JITServerSharedCache and the handling of the well-known classes object in the SVM and AOT relocation header initialization have been modified so that it we are compiling an AOT cache store and are ignoring the client's local SCC, we now consult the JITServer AOT cache and use the idAndType of its records in place of local SCC offsets. Various client-server messages have been modified to accommodate the changes in server compilation. The client will either test for a local SCC before accessing it, or the server will send an explicit boolean parameter indicating that a local SCC offset is required. Signed-off-by: Christian Despres <[email protected]>
Signed-off-by: Christian Despres <[email protected]>
Signed-off-by: Christian Despres <[email protected]>
754230f
to
2275743
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.
LGTM
jenkins test sanity plinuxjit,xlinuxjit,zlinuxjit,alinux64jit jdk17 |
jenkins compile aix,win jdk21 |
The failure on aarch64 is the well known CRIU restore one, hence merging. |
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.
One minor improvement to add to the list (see inline).
// This is an out-of-process compilation; check the cache in the client session first | ||
// This is an out-of-process compilation. | ||
|
||
// If we're ignoring the client's SCC, we can skip client consultation 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.
It's still beneficial (at least by avoiding the global lock) to cache the WKC record in the client session and check the cached version before calling JITServerAOTCache::getWellKnownClassesRecord()
.
A new
_useServerOffsets
field inVMInfo
has been added. It will be set when a client wants its local SCC (whether or not it exists) to be ignored during JITServer AOT cache compilations. Currently the client always sets this field to false.The methods of
TR_J9JITServerSharedCache
and the handling of the well-known classes object in the SVM and AOT relocation header initialization have been modified so that it we are compiling an AOT cache store and are ignoring the client's local SCC, we now consult the JITServer AOT cache and use theidAndType
of its records in place of local SCC offsets.Various client-server messages have been modified to accommodate the changes in server compilation. The client will either test for a local SCC before accessing it, or the server will send an explicit boolean parameter indicating that a local SCC offset is required.