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
Change how TR_IPBCDataCallGraph entries are persisted into SCC #15617
Conversation
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.
Overall looks ok to me.
Do you think it's worth having the verbose logging be printed to the vlog? As it stands, the only way to get this info is to rebuild.
_csInfo.setClazz(i, 0); | ||
_csInfo._weight[i] = 0; | ||
#ifdef PERSISTENCE_VERBOSE | ||
fprintf(stderr, "loadFromPersistentCopy: Cannot convert ROMClass to RAMClass. Cannot get the class chain of ROMMethod\n"); |
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.
fprintf(stderr, "loadFromPersistentCopy: Cannot convert ROMClass to RAMClass. Cannot get the class chain of ROMMethod\n"); | |
fprintf(stderr, "loadFromPersistentCopy: Cannot convert ROMClass to RAMClass. Cannot get the class chain of ROMClass\n"); |
Also looks like there's a missing copyright update. |
Before this change, each `TR_IPBCDataCallGraph` entry that is persisted can contain up to 3 ROMClasses and their associates sampling frequencies. When loading from SCC we need to convert from a ROMClass to a RAMClass. This is done with the help of the `matchRAMclassFromROMclass()` frontend method, which first tries the classloader of the method being compiled and then the bootstrap classloader. If none of these attempts is successfull, we store NULL into the IProfiler entry which is created from the SCC entry. In this commit we change the mechanism to convert from a ROMClass to a RAMClass, to match the mechanism that is used in AOT relocation records. Specifically, the new code is using the mechanism that associates a classloader with the first class that is loaded by that class loader (see ClassLoaderTable.cpp). Thus, the IProfiler entry stored in SCC needs to contain two values now: (1) The classchain for the class that is being traked and (2) The classchain for the first class loaded by the classloader that loaded the class being tracked. Since in the new implementation we store more information, we will only track one target class instead of 3. This change is improving the throughput of some applications that rely on IProfiler information stored in SCC. Signed-off-by: Marius Pirvu <mpirvu@ca.ibm.com>
Fixed copyright message. |
Signed-off-by: Marius Pirvu <mpirvu@ca.ibm.com>
Addressed review comments |
jenkins test sanity.functional all jdk17 |
Tests have passed |
The test failure with the "Shared cache pointer out of bounds" assertion reported in #15609 appears to be the same race condition as discussed in #12405 and #12550. |
Before this change, each
TR_IPBCDataCallGraph
entry that is persisted can containup to 3 ROMClasses and their associates sampling frequencies. When loading from
SCC we need to convert from a ROMClass to a RAMClass. This is done with the
help of the
matchRAMclassFromROMclass()
frontend method, which first triesthe classloader of the method being compiled and then the bootstrap classloader.
If none of these attempts is successfull, we store NULL into the IProfiler entry
which is created from the SCC entry.
In this commit we change the mechanism to convert from a ROMClass to a RAMClass,
to match the mechanism that is used in AOT relocation records. Specifically, the
new code is using the mechanism that associates a classloader with the first class
that is loaded by that class loader (see ClassLoaderTable.cpp).
Thus, the IProfiler entry stored in SCC needs to contain two values now:
(1) The classchain for the class that is being traked and
(2) The classchain for the first class loaded by the classloader that loaded the class
being tracked.
Since in the new implementation we store more information, we will only track one
target class instead of 3.
This change is improving the throughput of some applications that rely on IProfiler
information stored in SCC.
Depends on eclipse/omr#6638
Signed-off-by: Marius Pirvu mpirvu@ca.ibm.com