1 /*
2 * Copyright (c) 2005, 2016, 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 *
77
78 virtual void do_it(GCTaskManager* manager, uint which);
79 };
80
81
82 //
83 // MarkFromRootsTask
84 //
85 // This task marks from all the roots to all live
86 // objects.
87 //
88 //
89
90 class MarkFromRootsTask : public GCTask {
91 public:
92 enum RootType {
93 universe = 1,
94 jni_handles = 2,
95 threads = 3,
96 object_synchronizer = 4,
97 flat_profiler = 5,
98 management = 6,
99 jvmti = 7,
100 system_dictionary = 8,
101 class_loader_data = 9,
102 code_cache = 10
103 };
104 private:
105 RootType _root_type;
106 public:
107 MarkFromRootsTask(RootType value) : _root_type(value) {}
108
109 char* name() { return (char *)"mark-from-roots-task"; }
110
111 virtual void do_it(GCTaskManager* manager, uint which);
112 };
113
114 //
115 // RefProcTaskProxy
116 //
117 // This task is used as a proxy to parallel reference processing tasks .
118 //
119
120 class RefProcTaskProxy : public GCTask {
121 typedef AbstractRefProcTaskExecutor::ProcessTask ProcessTask;
122 ProcessTask & _rp_task;
|
1 /*
2 * Copyright (c) 2005, 2017, 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 *
77
78 virtual void do_it(GCTaskManager* manager, uint which);
79 };
80
81
82 //
83 // MarkFromRootsTask
84 //
85 // This task marks from all the roots to all live
86 // objects.
87 //
88 //
89
90 class MarkFromRootsTask : public GCTask {
91 public:
92 enum RootType {
93 universe = 1,
94 jni_handles = 2,
95 threads = 3,
96 object_synchronizer = 4,
97 management = 5,
98 jvmti = 6,
99 system_dictionary = 7,
100 class_loader_data = 8,
101 code_cache = 9
102 };
103 private:
104 RootType _root_type;
105 public:
106 MarkFromRootsTask(RootType value) : _root_type(value) {}
107
108 char* name() { return (char *)"mark-from-roots-task"; }
109
110 virtual void do_it(GCTaskManager* manager, uint which);
111 };
112
113 //
114 // RefProcTaskProxy
115 //
116 // This task is used as a proxy to parallel reference processing tasks .
117 //
118
119 class RefProcTaskProxy : public GCTask {
120 typedef AbstractRefProcTaskExecutor::ProcessTask ProcessTask;
121 ProcessTask & _rp_task;
|