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 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1_SPECIALIZED_OOP_CLOSURES_HPP
26 #define SHARE_VM_GC_IMPLEMENTATION_G1_G1_SPECIALIZED_OOP_CLOSURES_HPP
27
28 // The following OopClosure types get specialized versions of
29 // "oop_oop_iterate" that invoke the closures' do_oop methods
30 // non-virtually, using a mechanism defined in this file. Extend these
31 // macros in the obvious way to add specializations for new closures.
32
33 // Forward declarations.
34 enum G1Barrier {
35 G1BarrierNone,
36 G1BarrierRS,
37 G1BarrierEvac,
38 G1BarrierKlass
39 };
40
41 template<bool do_gen_barrier, G1Barrier barrier, bool do_mark_object>
42 class G1ParCopyClosure;
43
44 class G1ParScanClosure;
45 class G1ParPushHeapRSClosure;
46
47 typedef G1ParCopyClosure<false, G1BarrierEvac, false> G1ParScanHeapEvacClosure;
48
49 class FilterIntoCSClosure;
50 class FilterOutOfRegionClosure;
51 class G1CMOopClosure;
52 class G1RootRegionScanClosure;
53
54 // Specialized oop closures from g1RemSet.cpp
55 class G1Mux2Closure;
56 class G1TriggerClosure;
57 class G1InvokeIfNotTriggeredClosure;
58 class G1UpdateRSOrPushRefOopClosure;
59
60 #ifdef FURTHER_SPECIALIZED_OOP_OOP_ITERATE_CLOSURES
61 #error "FURTHER_SPECIALIZED_OOP_OOP_ITERATE_CLOSURES already defined."
62 #endif
63
64 #define FURTHER_SPECIALIZED_OOP_OOP_ITERATE_CLOSURES(f) \
65 f(G1ParScanHeapEvacClosure,_nv) \
66 f(G1ParScanClosure,_nv) \
67 f(G1ParPushHeapRSClosure,_nv) \
|
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 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1_SPECIALIZED_OOP_CLOSURES_HPP
26 #define SHARE_VM_GC_IMPLEMENTATION_G1_G1_SPECIALIZED_OOP_CLOSURES_HPP
27
28 // The following OopClosure types get specialized versions of
29 // "oop_oop_iterate" that invoke the closures' do_oop methods
30 // non-virtually, using a mechanism defined in this file. Extend these
31 // macros in the obvious way to add specializations for new closures.
32
33 // Forward declarations.
34 enum G1Barrier {
35 G1BarrierNone,
36 G1BarrierEvac,
37 G1BarrierKlass
38 };
39
40 template<G1Barrier barrier, bool do_mark_object>
41 class G1ParCopyClosure;
42
43 class G1ParScanClosure;
44 class G1ParPushHeapRSClosure;
45
46 typedef G1ParCopyClosure<G1BarrierEvac, false> G1ParScanHeapEvacClosure;
47
48 class FilterIntoCSClosure;
49 class FilterOutOfRegionClosure;
50 class G1CMOopClosure;
51 class G1RootRegionScanClosure;
52
53 // Specialized oop closures from g1RemSet.cpp
54 class G1Mux2Closure;
55 class G1TriggerClosure;
56 class G1InvokeIfNotTriggeredClosure;
57 class G1UpdateRSOrPushRefOopClosure;
58
59 #ifdef FURTHER_SPECIALIZED_OOP_OOP_ITERATE_CLOSURES
60 #error "FURTHER_SPECIALIZED_OOP_OOP_ITERATE_CLOSURES already defined."
61 #endif
62
63 #define FURTHER_SPECIALIZED_OOP_OOP_ITERATE_CLOSURES(f) \
64 f(G1ParScanHeapEvacClosure,_nv) \
65 f(G1ParScanClosure,_nv) \
66 f(G1ParPushHeapRSClosure,_nv) \
|