2273N/A * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 0N/A * published by the Free Software Foundation. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1472N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 0N/A// Tasks for parallel compaction of the old generation 0N/A// Tasks are created and enqueued on a task queue. The 0N/A// tasks for parallel old collector for marking objects 0N/A// are MarkFromRootsTask and ThreadRootsMarkingTask. 0N/A// MarkFromRootsTask's are created 0N/A// with a root group (e.g., jni_handles) and when the do_it() 0N/A// method of a MarkFromRootsTask is executed, it starts marking 0N/A// form it's root group. 0N/A// ThreadRootsMarkingTask's are created for each Java thread. When 0N/A// the do_it() method of a ThreadRootsMarkingTask is executed, it 0N/A// starts marking from the thread's roots. 0N/A// The enqueuing of the MarkFromRootsTask and ThreadRootsMarkingTask 0N/A// do little more than create the task and put it on a queue. The 0N/A// queue is a GCTaskQueue and threads steal tasks from this GCTaskQueue. 0N/A// In addition to the MarkFromRootsTask and ThreadRootsMarkingTask 0N/A// tasks there are StealMarkingTask tasks. The StealMarkingTask's 0N/A// steal a reference from the marking stack of another 0N/A// thread and transitively marks the object of the reference 0N/A// and internal references. After successfully stealing a reference 0N/A// and marking it, the StealMarkingTask drains its marking stack 0N/A// stack before attempting another steal. 0N/A// ThreadRootsMarkingTask 0N/A// This task marks from the roots of a single thread. This task 0N/A// enables marking of thread roots in parallel. 0N/A char*
name() {
return (
char *)
"thread-roots-marking-task"; }
0N/A// This task marks from all the roots to all live 0N/A char*
name() {
return (
char *)
"mark-from-roots-task"; }
0N/A// This task is used as a proxy to parallel reference processing tasks . 0N/A virtual char*
name() {
return (
char *)
"Process referents by policy in parallel"; }
0N/A// RefEnqueueTaskProxy 0N/A// This task is used as a proxy to parallel reference processing tasks . 0N/A virtual char*
name() {
return (
char *)
"Enqueue reference objects in parallel"; }
0N/A// RefProcTaskExecutor 0N/A// Task executor is an interface for the reference processor to run 0N/A// tasks using GCTaskManager. 0N/A// This task is used to distribute work to idle threads. 0N/A char*
name() {
return (
char *)
"steal-marking-task"; }
375N/A// StealRegionCompactionTask 0N/A// This task is used to distribute work to idle threads. 375N/A char*
name() {
return (
char *)
"steal-region-task"; }
0N/A// UpdateDensePrefixTask 0N/A// This task is used to update the dense prefix 0N/A char*
name() {
return (
char *)
"update-dense_prefix-task"; }
0N/A// DrainStacksCompactionTask 375N/A// This task processes regions that have been added to the stacks of each 0N/A// compaction manager. 0N/A// Trying to use one draining thread does not work because there are no 0N/A// guarantees about which task will be picked up by which thread. For example, 375N/A// if thread A gets all the preloaded regions, thread A may not get a draining 0N/A// task (they may all be done by other threads). 375N/A char*
name() {
return (
char *)
"drain-region-task"; }
1879N/A#
endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PCTASKS_HPP