Mercurial > hg > truffle
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); |