Reduce the number of VM_isStable messages #21067
Open
+115
−94
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The frontend query
isStable(J9Class *fieldClass, int32_t cpIndex)
determines if the field at given J9Class and cpIndex has the @stable annotation.Before this commit, the JITServer implementation had to send a VM_isStable message to the client for every such query. This commit implements caching of the isStable values at JITServer. Caching is done with a hashtable per J9Class, where the key is the cpIndex we are interested in.
To further reduce the number of the hashtables that serve as a cache, the
isStable()
will answerfalse
for any non-bootstrap class. The reason is that at the moment only bootstrap classs have the @stable annotation. This behavior can be disabled by defining the following environment variable:TR_DontIgnoreStableAnnotationForUserClasses
.Another optimization regards the implementation of
isArrayWithStableElements(cpIndex, owningMethod, comp)
. In here, we first check to see if we are dealing with an array (which is simpler) and only then call the isStable() query.Depends on eclipse-omr/omr#7642