RFR: 8267947: CI: Preserve consistency between has_subklass() and is_subclass_of()

Roland Westrelin roland at openjdk.java.net
Tue Jun 1 07:24:18 UTC 2021


On Mon, 31 May 2021 08:54:03 GMT, Vladimir Ivanov <vlivanov at openjdk.org> wrote:

> CI caches `Klass::subklass() != NULL` query, but concurrent class loading can
> invalidate the cached value. Though recorded dependency won't let the nmethod
> to be installed, the inconcistency can manifest as type paradoxes until
> compilation is finished. 
> 
> The fix caches only `true` value (since it can't change unless class unloading
> takes place) and queries the VM otherwise.
> 
> Testing:
> - [x] hs-tier1 - hs-tier6

src/hotspot/share/ci/ciKlass.cpp line 82:

> 80: 
> 81: #ifdef ASSERT
> 82:   if (that->is_instance_klass() && !that->is_interface()) {

Why the !that->is_interface() test?

-------------

PR: https://git.openjdk.java.net/jdk/pull/4269


More information about the hotspot-compiler-dev mailing list