[9] RFR(M): 7194669: CodeCache::mark_for_deoptimization should avoid verifying dependencies multiple times
Roland Westrelin
roland.westrelin at oracle.com
Fri Jan 10 06:04:49 PST 2014
Hi Albert,
> I've evaluated the performance difference (nashorn + octane) between binary search
> and a linear search. The linear-search version uses one GrowableArray<DependencySignature*>
> for each dependency type. The difference in dependency checking time is 15-20%, i.e., binary
> search is 15-20% faster than linear search. However, using linear search to cache checked
> dependencies is still ~4X faster compared to checking all dependencies.
Thanks for making the experiment.
> I guess 15-20% is not enough to justify using the new data structure. Here is the new
> webrev that uses linear search:
> http://cr.openjdk.java.net/~anoll/7194669/webrev.01/
Can a safepoint occur during verification? It doesn’t look like it to me. It could be verified with a No_Safepoint_Verifier. No safepoint would mean that objects don’t move and then:
uintptr_t Dependencies::DepStream::get_identity_hash(int i) {
if (has_oop_argument()) {
return (uintpr_t)argument_oop(i);
} else {
return (uinptr_t)argument(i);
}
}
And then there’s no need to worry about the issue that Dean raised: identity hash not being unique.
Roland.
More information about the hotspot-compiler-dev
mailing list