comparison src/share/vm/oops/instanceRefKlass.cpp @ 2021:7cf1a74771e8

6988439: Parallel Class Loading test deadlock involving MethodData_lock and Pending List Lock Summary: Don't acquire methodData_lock while holding pending list lock Reviewed-by: kvn, never, ysr
author coleenp
date Fri, 10 Dec 2010 12:13:03 -0500
parents f95d63e2154a
children b03e6b4c7c75
comparison
equal deleted inserted replaced
2020:a5610f0862fe 2021:7cf1a74771e8
455 } 455 }
456 } 456 }
457 } 457 }
458 } 458 }
459 459
460 bool instanceRefKlass::owns_pending_list_lock(JavaThread* thread) {
461 Handle h_lock(thread, java_lang_ref_Reference::pending_list_lock());
462 return ObjectSynchronizer::current_thread_holds_lock(thread, h_lock);
463 }
464
460 void instanceRefKlass::acquire_pending_list_lock(BasicLock *pending_list_basic_lock) { 465 void instanceRefKlass::acquire_pending_list_lock(BasicLock *pending_list_basic_lock) {
461 // we may enter this with pending exception set 466 // we may enter this with pending exception set
462 PRESERVE_EXCEPTION_MARK; // exceptions are never thrown, needed for TRAPS argument 467 PRESERVE_EXCEPTION_MARK; // exceptions are never thrown, needed for TRAPS argument
463 Handle h_lock(THREAD, java_lang_ref_Reference::pending_list_lock()); 468 Handle h_lock(THREAD, java_lang_ref_Reference::pending_list_lock());
464 ObjectSynchronizer::fast_enter(h_lock, pending_list_basic_lock, false, THREAD); 469 ObjectSynchronizer::fast_enter(h_lock, pending_list_basic_lock, false, THREAD);