8212682: Avoid holding Compile_lock when blocking for GC in ObjArrayKlass::allocate_objArray_klass()

Reviewed-by: coleenp, dlong
This commit is contained in:
Erik Österlund 2018-11-20 10:08:18 +01:00
parent 041946dcb0
commit 8b1844626a
4 changed files with 1 additions and 6 deletions

View file

@ -1282,7 +1282,6 @@ Klass* InstanceKlass::array_klass_impl(bool or_null, int n, TRAPS) {
JavaThread *jt = (JavaThread *)THREAD; JavaThread *jt = (JavaThread *)THREAD;
{ {
// Atomic creation of array_klasses // Atomic creation of array_klasses
MutexLocker mc(Compile_lock, THREAD); // for vtables
MutexLocker ma(MultiArray_lock, THREAD); MutexLocker ma(MultiArray_lock, THREAD);
// Check if update has already taken place // Check if update has already taken place

View file

@ -80,7 +80,6 @@ Klass* ObjArrayKlass::allocate_objArray_klass(ClassLoaderData* loader_data,
Klass* ek = NULL; Klass* ek = NULL;
{ {
MutexUnlocker mu(MultiArray_lock); MutexUnlocker mu(MultiArray_lock);
MutexUnlocker mc(Compile_lock); // for vtables
super_klass = element_super->array_klass(CHECK_0); super_klass = element_super->array_klass(CHECK_0);
for( int i = element_supers->length()-1; i >= 0; i-- ) { for( int i = element_supers->length()-1; i >= 0; i-- ) {
Klass* elem_super = element_supers->at(i); Klass* elem_super = element_supers->at(i);
@ -332,7 +331,6 @@ Klass* ObjArrayKlass::array_klass_impl(bool or_null, int n, TRAPS) {
ResourceMark rm; ResourceMark rm;
JavaThread *jt = (JavaThread *)THREAD; JavaThread *jt = (JavaThread *)THREAD;
{ {
MutexLocker mc(Compile_lock, THREAD); // for vtables
// Ensure atomic creation of higher dimensions // Ensure atomic creation of higher dimensions
MutexLocker mu(MultiArray_lock, THREAD); MutexLocker mu(MultiArray_lock, THREAD);

View file

@ -195,7 +195,6 @@ Klass* TypeArrayKlass::array_klass_impl(bool or_null, int n, TRAPS) {
ResourceMark rm; ResourceMark rm;
JavaThread *jt = (JavaThread *)THREAD; JavaThread *jt = (JavaThread *)THREAD;
{ {
MutexLocker mc(Compile_lock, THREAD); // for vtables
// Atomic create higher dimension and link into list // Atomic create higher dimension and link into list
MutexLocker mu(MultiArray_lock, THREAD); MutexLocker mu(MultiArray_lock, THREAD);

View file

@ -2944,8 +2944,7 @@ bool JvmtiSampledObjectAllocEventCollector::object_alloc_is_safe_to_sample() {
return false; return false;
} }
if (Compile_lock->owner() == thread || if (MultiArray_lock->owner() == thread) {
MultiArray_lock->owner() == thread) {
return false; return false;
} }
return true; return true;