blob: 10825aab999ad4fc74862008687120cb29ba0745 [file] [log] [blame]
J. Duke81537792007-12-01 00:00:00 +00001/*
Per Lidén4dc240f2015-05-13 15:16:06 +02002 * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
J. Duke81537792007-12-01 00:00:00 +00003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
Erik Trimbleba7c1732010-05-27 19:08:38 -070019 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
J. Duke81537792007-12-01 00:00:00 +000022 *
23 */
24
Per Lidén4dc240f2015-05-13 15:16:06 +020025#ifndef SHARE_VM_GC_CMS_CMSLOCKVERIFIER_HPP
26#define SHARE_VM_GC_CMS_CMSLOCKVERIFIER_HPP
Stefan Karlsson8006fe82010-11-23 13:22:55 -080027
28#include "runtime/mutex.hpp"
29
J. Duke81537792007-12-01 00:00:00 +000030///////////// Locking verification specific to CMS //////////////
31// Much like "assert_lock_strong()", except
32// that it relaxes the assertion somewhat for the parallel GC case, where
33// main GC thread or the CMS thread might hold the lock on behalf of
34// the parallel threads.
35class CMSLockVerifier: AllStatic {
36 public:
Y. Srinivas Ramakrishna272a6d42009-12-23 09:23:54 -080037 static void assert_locked(const Mutex* lock, const Mutex* p_lock1, const Mutex* p_lock2)
J. Duke81537792007-12-01 00:00:00 +000038 PRODUCT_RETURN;
Y. Srinivas Ramakrishna272a6d42009-12-23 09:23:54 -080039 static void assert_locked(const Mutex* lock, const Mutex* p_lock) {
40 assert_locked(lock, p_lock, NULL);
41 }
J. Duke81537792007-12-01 00:00:00 +000042 static void assert_locked(const Mutex* lock) {
43 assert_locked(lock, NULL);
44 }
45};
Stefan Karlsson8006fe82010-11-23 13:22:55 -080046
Per Lidén4dc240f2015-05-13 15:16:06 +020047#endif // SHARE_VM_GC_CMS_CMSLOCKVERIFIER_HPP