--- a/hotspot/src/share/vm/gc/cms/vmCMSOperations.cpp Wed Mar 16 16:21:36 2016 +0000
+++ b/hotspot/src/share/vm/gc/cms/vmCMSOperations.cpp Thu Mar 17 08:07:53 2016 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -38,21 +38,11 @@
// Methods in abstract class VM_CMS_Operation
//////////////////////////////////////////////////////////
void VM_CMS_Operation::acquire_pending_list_lock() {
- // The caller may block while communicating
- // with the SLT thread in order to acquire/release the PLL.
- SurrogateLockerThread* slt = ConcurrentMarkSweepThread::slt();
- if (slt != NULL) {
- slt->manipulatePLL(SurrogateLockerThread::acquirePLL);
- } else {
- SurrogateLockerThread::report_missing_slt();
- }
+ _pending_list_locker.lock();
}
void VM_CMS_Operation::release_and_notify_pending_list_lock() {
- // The caller may block while communicating
- // with the SLT thread in order to acquire/release the PLL.
- ConcurrentMarkSweepThread::slt()->
- manipulatePLL(SurrogateLockerThread::releaseAndNotifyPLL);
+ _pending_list_locker.unlock();
}
void VM_CMS_Operation::verify_before_gc() {
@@ -95,7 +85,7 @@
assert(!ConcurrentMarkSweepThread::cms_thread_has_cms_token(),
"Possible deadlock");
- if (needs_pll()) {
+ if (needs_pending_list_lock()) {
acquire_pending_list_lock();
}
// Get the Heap_lock after the pending_list_lock.
@@ -103,7 +93,7 @@
if (lost_race()) {
assert(_prologue_succeeded == false, "Initialized in c'tor");
Heap_lock->unlock();
- if (needs_pll()) {
+ if (needs_pending_list_lock()) {
release_and_notify_pending_list_lock();
}
} else {
@@ -120,7 +110,7 @@
// Release the Heap_lock first.
Heap_lock->unlock();
- if (needs_pll()) {
+ if (needs_pending_list_lock()) {
release_and_notify_pending_list_lock();
}
}