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_GC_SHENANDOAH_SHENANDOAHVMOPERATIONS_HPP
26 #define SHARE_GC_SHENANDOAH_SHENANDOAHVMOPERATIONS_HPP
27
28 #include "gc/shared/gcVMOperations.hpp"
29
30 class ShenandoahConcurrentGC;
31 class ShenandoahDegenGC;
32 class ShenandoahFullGC;
33
34 // VM_operations for the Shenandoah Collector.
35 //
36 // VM_ShenandoahOperation
37 // - VM_ShenandoahInitMark: initiate concurrent marking
38 // - VM_ShenandoahFinalMarkStartEvac: finish up concurrent marking, and start evacuation
39 // - VM_ShenandoahInitUpdateRefs: initiate update references
40 // - VM_ShenandoahFinalUpdateRefs: finish up update references
41 // - VM_ShenandoahFinalVerify: final verification at the end of the cycle
42 // - VM_ShenandoahReferenceOperation:
43 // - VM_ShenandoahFullGC: do full GC
44 // - VM_ShenandoahDegeneratedGC: do STW degenerated GC
45
46 class VM_ShenandoahOperation : public VM_Operation {
47 protected:
48 uint _gc_id;
49 ShenandoahGeneration* _generation;
50
51 void set_active_generation();
52 public:
53 explicit VM_ShenandoahOperation(ShenandoahGeneration* generation)
54 : _gc_id(GCId::current())
55 , _generation(generation) {
56 }
57
58 bool skip_thread_oop_barriers() const override { return true; }
110 };
111
112 class VM_ShenandoahInitUpdateRefs: public VM_ShenandoahOperation {
113 ShenandoahConcurrentGC* const _gc;
114 public:
115 explicit VM_ShenandoahInitUpdateRefs(ShenandoahConcurrentGC* gc);
116 VM_Operation::VMOp_Type type() const override { return VMOp_ShenandoahInitUpdateRefs; }
117 const char* name() const override { return "Shenandoah Init Update References"; }
118 void doit() override;
119 };
120
121 class VM_ShenandoahFinalUpdateRefs: public VM_ShenandoahOperation {
122 ShenandoahConcurrentGC* const _gc;
123 public:
124 explicit VM_ShenandoahFinalUpdateRefs(ShenandoahConcurrentGC* gc);
125 VM_Operation::VMOp_Type type() const override { return VMOp_ShenandoahFinalUpdateRefs; }
126 const char* name() const override { return "Shenandoah Final Update References"; }
127 void doit() override;
128 };
129
130 class VM_ShenandoahFinalVerify: public VM_ShenandoahOperation {
131 ShenandoahConcurrentGC* const _gc;
132 public:
133 explicit VM_ShenandoahFinalVerify(ShenandoahConcurrentGC* gc);
134 VM_Operation::VMOp_Type type() const override { return VMOp_ShenandoahFinalVerify; }
135 const char* name() const override { return "Shenandoah Final Verify"; }
136 void doit() override;
137 };
138
139 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHVMOPERATIONS_HPP
|
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_GC_SHENANDOAH_SHENANDOAHVMOPERATIONS_HPP
26 #define SHARE_GC_SHENANDOAH_SHENANDOAHVMOPERATIONS_HPP
27
28 #include "gc/shared/gcVMOperations.hpp"
29
30 class ShenandoahConcurrentGC;
31 class ShenandoahDegenGC;
32 class ShenandoahFullGC;
33
34 // VM_operations for the Shenandoah Collector.
35 //
36 // VM_ShenandoahOperation
37 // - VM_ShenandoahInitMark: initiate concurrent marking
38 // - VM_ShenandoahFinalMarkStartEvac: finish up concurrent marking, and start evacuation
39 // - VM_ShenandoahFinalRoots: finish up roots processing
40 // - VM_ShenandoahInitUpdateRefs: initiate update references
41 // - VM_ShenandoahFinalUpdateRefs: finish up update references
42 // - VM_ShenandoahFinalVerify: final verification at the end of the cycle
43 // - VM_ShenandoahReferenceOperation:
44 // - VM_ShenandoahFullGC: do full GC
45 // - VM_ShenandoahDegeneratedGC: do STW degenerated GC
46
47 class VM_ShenandoahOperation : public VM_Operation {
48 protected:
49 uint _gc_id;
50 ShenandoahGeneration* _generation;
51
52 void set_active_generation();
53 public:
54 explicit VM_ShenandoahOperation(ShenandoahGeneration* generation)
55 : _gc_id(GCId::current())
56 , _generation(generation) {
57 }
58
59 bool skip_thread_oop_barriers() const override { return true; }
111 };
112
113 class VM_ShenandoahInitUpdateRefs: public VM_ShenandoahOperation {
114 ShenandoahConcurrentGC* const _gc;
115 public:
116 explicit VM_ShenandoahInitUpdateRefs(ShenandoahConcurrentGC* gc);
117 VM_Operation::VMOp_Type type() const override { return VMOp_ShenandoahInitUpdateRefs; }
118 const char* name() const override { return "Shenandoah Init Update References"; }
119 void doit() override;
120 };
121
122 class VM_ShenandoahFinalUpdateRefs: public VM_ShenandoahOperation {
123 ShenandoahConcurrentGC* const _gc;
124 public:
125 explicit VM_ShenandoahFinalUpdateRefs(ShenandoahConcurrentGC* gc);
126 VM_Operation::VMOp_Type type() const override { return VMOp_ShenandoahFinalUpdateRefs; }
127 const char* name() const override { return "Shenandoah Final Update References"; }
128 void doit() override;
129 };
130
131 class VM_ShenandoahFinalRoots: public VM_ShenandoahOperation {
132 ShenandoahConcurrentGC* const _gc;
133 public:
134 explicit VM_ShenandoahFinalRoots(ShenandoahConcurrentGC* gc);
135 VM_Operation::VMOp_Type type() const override { return VMOp_ShenandoahFinalRoots; }
136 const char* name() const override { return "Shenandoah Final Roots"; }
137 void doit() override;
138 };
139
140 class VM_ShenandoahFinalVerify: public VM_ShenandoahOperation {
141 ShenandoahConcurrentGC* const _gc;
142 public:
143 explicit VM_ShenandoahFinalVerify(ShenandoahConcurrentGC* gc);
144 VM_Operation::VMOp_Type type() const override { return VMOp_ShenandoahFinalVerify; }
145 const char* name() const override { return "Shenandoah Final Verify"; }
146 void doit() override;
147 };
148
149 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHVMOPERATIONS_HPP
|