diff -r 0caa36de8703 -r 19c4a3eec4d7 src/hotspot/share/ci/ciInstanceKlass.cpp --- a/src/hotspot/share/ci/ciInstanceKlass.cpp Tue Oct 16 16:26:28 2018 -0400 +++ b/src/hotspot/share/ci/ciInstanceKlass.cpp Wed Oct 31 14:38:14 2018 -0400 @@ -57,7 +57,7 @@ AccessFlags access_flags = ik->access_flags(); _flags = ciFlags(access_flags); _has_finalizer = access_flags.has_finalizer(); - _has_subklass = flags().is_final() ? subklass_false : subklass_unknown; + _has_subklass = ik->subklass() != NULL; _init_state = ik->init_state(); _nonstatic_field_size = ik->nonstatic_field_size(); _has_nonstatic_fields = ik->has_nonstatic_fields(); @@ -146,10 +146,9 @@ // ciInstanceKlass::compute_shared_has_subklass bool ciInstanceKlass::compute_shared_has_subklass() { GUARDED_VM_ENTRY( - MutexLocker ml(Compile_lock); InstanceKlass* ik = get_instanceKlass(); - _has_subklass = ik->subklass() != NULL ? subklass_true : subklass_false; - return _has_subklass == subklass_true; + _has_subklass = ik->subklass() != NULL; + return _has_subklass; ) } @@ -375,7 +374,6 @@ if (!is_abstract()) return NULL; // Only applies to abstract classes. if (!has_subklass()) return NULL; // Must have at least one subklass. VM_ENTRY_MARK; - MutexLocker ml(Compile_lock); InstanceKlass* ik = get_instanceKlass(); Klass* up = ik->up_cast_abstract(); assert(up->is_instance_klass(), "must be InstanceKlass"); @@ -390,7 +388,6 @@ bool ciInstanceKlass::has_finalizable_subclass() { if (!is_loaded()) return true; VM_ENTRY_MARK; - MutexLocker ml(Compile_lock); return Dependencies::find_finalizable_subclass(get_instanceKlass()) != NULL; } @@ -580,7 +577,7 @@ if (is_shared()) { return is_final(); // approximately correct } else { - return !has_subklass() && (nof_implementors() == 0); + return !_has_subklass && (nof_implementors() == 0); } }