aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp
diff options
context:
space:
mode:
authorjohnc <none@none>2011-10-20 12:06:20 -0700
committerjohnc <none@none>2011-10-20 12:06:20 -0700
commitca200e57493d0f086da4a0a47e00237f60c4518d (patch)
tree14a5a7b8b314393917903de31046c694fbcfa3c6 /src/share/vm/gc_implementation/g1/vm_operations_g1.hpp
parentab7466f7f296d0a26e2af78d010787468f46cb49 (diff)
downloadjdk8u_hotspot-ca200e57493d0f086da4a0a47e00237f60c4518d.tar.gz
7099824: G1: we should take the pending list lock before doing the remark pause
Summary: Acquire the pending list lock in the prologue method of G1's concurrent VM_Operation and release the lock in the epilogue() method. The locking/unlocking order of the pending list lock and the Heap_lock should match that in the prologue and epilogue methods of VM_GC_Operation. Reviewed-by: tonyp, ysr
Diffstat (limited to 'src/share/vm/gc_implementation/g1/vm_operations_g1.hpp')
-rw-r--r--src/share/vm/gc_implementation/g1/vm_operations_g1.hpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp b/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp
index 825818dd4..c8bbe0619 100644
--- a/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp
+++ b/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp
@@ -93,11 +93,17 @@ public:
}
};
-// Concurrent GC stop-the-world operations such as initial and final mark;
+// Concurrent GC stop-the-world operations such as remark and cleanup;
// consider sharing these with CMS's counterparts.
class VM_CGC_Operation: public VM_Operation {
VoidClosure* _cl;
const char* _printGCMessage;
+
+protected:
+ // java.lang.ref.Reference support
+ void acquire_pending_list_lock();
+ void release_and_notify_pending_list_lock();
+
public:
VM_CGC_Operation(VoidClosure* cl, const char *printGCMsg)
: _cl(cl), _printGCMessage(printGCMsg) { }