diff -r 10d2642d1905 -r d55b62dbe688 src/hotspot/share/oops/instanceKlass.cpp --- a/src/hotspot/share/oops/instanceKlass.cpp Thu Oct 24 08:49:21 2019 -0400 +++ b/src/hotspot/share/oops/instanceKlass.cpp Thu Oct 24 08:52:33 2019 -0400 @@ -69,6 +69,7 @@ #include "prims/jvmtiThreadState.hpp" #include "prims/methodComparator.hpp" #include "runtime/atomic.hpp" +#include "runtime/biasedLocking.hpp" #include "runtime/fieldDescriptor.inline.hpp" #include "runtime/handles.inline.hpp" #include "runtime/javaCalls.hpp" @@ -456,6 +457,12 @@ if (Arguments::is_dumping_archive()) { SystemDictionaryShared::init_dumptime_info(this); } + + // Set biased locking bit for all instances of this class; it will be + // cleared if revocation occurs too often for this type + if (UseBiasedLocking && BiasedLocking::enabled()) { + set_prototype_header(markWord::biased_locking_prototype()); + } } void InstanceKlass::deallocate_methods(ClassLoaderData* loader_data, @@ -2408,6 +2415,11 @@ // --> see ArrayKlass::complete_create_array_klass() array_klasses()->restore_unshareable_info(ClassLoaderData::the_null_class_loader_data(), Handle(), CHECK); } + + // Initialize current biased locking state. + if (UseBiasedLocking && BiasedLocking::enabled()) { + set_prototype_header(markWord::biased_locking_prototype()); + } } // returns true IFF is_in_error_state() has been changed as a result of this call.