Use metadata section in nmethod to decide when to deoptimize nmethods after redefinition. This walk includes the Method* in evol_method dependencies because the Method* is added there.
This might deoptimize more things but then we don't have to call clear_inline_caches. [~eosterlund] is trying to remove that.
I don't think this can remove evol_method dependencies. We still have to assert_evol_method to get the Method* in the metadata section. It also seems to be used to check_dependencies:
// The point of the whole exercise: Is this dep still OK?
Klass* check_dependency() {
Klass* result = check_klass_dependency(NULL);
if (result != NULL) return result;
return check_call_site_dependency(NULL);
}
check_klass_dependency has a case for evol_method dependencies.
Also make metadata_do take a closure.
This might deoptimize more things but then we don't have to call clear_inline_caches. [~eosterlund] is trying to remove that.
I don't think this can remove evol_method dependencies. We still have to assert_evol_method to get the Method* in the metadata section. It also seems to be used to check_dependencies:
// The point of the whole exercise: Is this dep still OK?
Klass* check_dependency() {
Klass* result = check_klass_dependency(NULL);
if (result != NULL) return result;
return check_call_site_dependency(NULL);
}
check_klass_dependency has a case for evol_method dependencies.
Also make metadata_do take a closure.
- relates to
-
JDK-8221183 Avoid code cache walk in MetadataOnStackMark
-
- Resolved
-