1 /* 2 * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. 3 * 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 * 19 * 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. 22 * 23 */ 24 # include "incls/_precompiled.incl" 25 # include "incls/_vmCMSOperations.cpp.incl" 26 27 HS_DTRACE_PROBE_DECL(hs_private, cms__initmark__begin); 28 HS_DTRACE_PROBE_DECL(hs_private, cms__initmark__end); 29 30 HS_DTRACE_PROBE_DECL(hs_private, cms__remark__begin); 31 HS_DTRACE_PROBE_DECL(hs_private, cms__remark__end); 32 33 ////////////////////////////////////////////////////////// 34 // Methods in abstract class VM_CMS_Operation 35 ////////////////////////////////////////////////////////// 36 void VM_CMS_Operation::acquire_pending_list_lock() { 37 // The caller may block while communicating 38 // with the SLT thread in order to acquire/release the PLL. 39 ConcurrentMarkSweepThread::slt()-> 40 manipulatePLL(SurrogateLockerThread::acquirePLL); 41 } 42 43 void VM_CMS_Operation::release_and_notify_pending_list_lock() { 44 // The caller may block while communicating 45 // with the SLT thread in order to acquire/release the PLL. 46 ConcurrentMarkSweepThread::slt()-> | 1 /* 2 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. 3 * 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 * 19 * 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. 22 * 23 */ 24 25 #include "precompiled.hpp" 26 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp" 27 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp" 28 #include "gc_implementation/concurrentMarkSweep/vmCMSOperations.hpp" 29 #include "gc_implementation/shared/isGCActiveMark.hpp" 30 #include "memory/gcLocker.inline.hpp" 31 #include "runtime/interfaceSupport.hpp" 32 #include "utilities/dtrace.hpp" 33 HS_DTRACE_PROBE_DECL(hs_private, cms__initmark__begin); 34 HS_DTRACE_PROBE_DECL(hs_private, cms__initmark__end); 35 36 HS_DTRACE_PROBE_DECL(hs_private, cms__remark__begin); 37 HS_DTRACE_PROBE_DECL(hs_private, cms__remark__end); 38 39 ////////////////////////////////////////////////////////// 40 // Methods in abstract class VM_CMS_Operation 41 ////////////////////////////////////////////////////////// 42 void VM_CMS_Operation::acquire_pending_list_lock() { 43 // The caller may block while communicating 44 // with the SLT thread in order to acquire/release the PLL. 45 ConcurrentMarkSweepThread::slt()-> 46 manipulatePLL(SurrogateLockerThread::acquirePLL); 47 } 48 49 void VM_CMS_Operation::release_and_notify_pending_list_lock() { 50 // The caller may block while communicating 51 // with the SLT thread in order to acquire/release the PLL. 52 ConcurrentMarkSweepThread::slt()-> |