The following scalability/performance issue is currently in the public review:
https://bugs.openjdk.java.net/browse/JDK-8046246
It is going to improve the implementation of the functions:
ConstantPoolCache::adjust_method_entries()
klassVtable::adjust_method_entries()
klassItable::adjust_method_entries()
InstanceKlass::adjust_default_methods()
However, there is more space for improvements:
- The above functions can be run just once for all the redefined classes instead of multiple times after
redefinition of each class in the list (they have no parameters specific for redefined classes anymore)
- The MemberNameTable::adjust_method_entries() can be fixed to use the same optimization as
the other adjust_method_entries() above
- Consider the following fragment to be optimized as well to use the new adjust_method_entries()
approach (it can be tricky though):
for (InstanceKlass* pv_node = ik->previous_versions();
pv_node != NULL;
pv_node = pv_node->previous_versions()) {
cp_cache = pv_node->constants()->cache();
if (cp_cache != NULL) {
cp_cache->adjust_method_entries(_matching_old_methods,
_matching_new_methods,
_matching_methods_length,
&trace_name_printed);
}
}