8004687: G1: Parallelize object self-forwarding and scanning during an evacuation failure

Use the regular task queue during evacuation failure and allow per-thread preserved header queues to remove the global lock during evacuation failure.

Reviewed-by: mgerdin, jmasa
This commit is contained in:
Walter Florian Gugenberger 2015-07-23 11:14:47 +02:00 committed by Thomas Schatzl
parent 57553520be
commit ca0fd4b1fe
7 changed files with 74 additions and 181 deletions

View file

@ -83,7 +83,6 @@ Mutex* DirtyCardQ_FL_lock = NULL;
Monitor* DirtyCardQ_CBL_mon = NULL;
Mutex* Shared_DirtyCardQ_lock = NULL;
Mutex* ParGCRareEvent_lock = NULL;
Mutex* EvacFailureStack_lock = NULL;
Mutex* DerivedPointerTableGC_lock = NULL;
Mutex* Compile_lock = NULL;
Monitor* MethodCompileQueue_lock = NULL;
@ -201,7 +200,6 @@ void mutex_init() {
def(OldSets_lock , Mutex , leaf , true, Monitor::_safepoint_check_never);
def(RootRegionScan_lock , Monitor, leaf , true, Monitor::_safepoint_check_never);
def(MMUTracker_lock , Mutex , leaf , true, Monitor::_safepoint_check_never);
def(EvacFailureStack_lock , Mutex , nonleaf , true, Monitor::_safepoint_check_never);
def(StringDedupQueue_lock , Monitor, leaf, true, Monitor::_safepoint_check_never);
def(StringDedupTable_lock , Mutex , leaf, true, Monitor::_safepoint_check_never);