16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
23
24 #ifndef SHARE_VM_GC_SHENANDOAH_VM_OPERATIONS_SHENANDOAH_HPP
25 #define SHARE_VM_GC_SHENANDOAH_VM_OPERATIONS_SHENANDOAH_HPP
26
27 #include "gc_implementation/shenandoah/shenandoahConcurrentMark.hpp"
28 #include "gc_implementation/shared/vmGCOperations.hpp"
29
30 // VM_operations for the Shenandoah Collector.
31 //
32 // VM_ShenandoahOperation
33 // - VM_ShenandoahInitMark: initiate concurrent marking
34 // - VM_ShenandoahReferenceOperation:
35 // - VM_ShenandoahFinalMarkStartEvac: finish up concurrent marking, and start evacuation
36 // - VM_ShenandoahFullGC: do full GC
37
38 class VM_ShenandoahOperation : public VM_Operation {
39 public:
40 VM_ShenandoahOperation() {};
41 };
42
43 class VM_ShenandoahReferenceOperation : public VM_ShenandoahOperation {
44 private:
45 BasicLock _pending_list_basic_lock;
46 public:
47 VM_ShenandoahReferenceOperation() : VM_ShenandoahOperation() {};
48 bool doit_prologue();
49 void doit_epilogue();
50 };
51
52 class VM_ShenandoahInitMark: public VM_ShenandoahOperation {
53 public:
54 VM_ShenandoahInitMark() : VM_ShenandoahOperation() {};
55 VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahInitMark; }
56 const char* name() const { return "Shenandoah Init Marking"; }
57 virtual void doit();
58 };
59
60 class VM_ShenandoahFinalMarkStartEvac: public VM_ShenandoahReferenceOperation {
61 public:
62 VM_ShenandoahFinalMarkStartEvac() : VM_ShenandoahReferenceOperation() {};
63 VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahFinalMarkStartEvac; }
64 const char* name() const { return "Shenandoah Final Mark and Start Evacuation"; }
65 virtual void doit();
66 };
67
68 class VM_ShenandoahFullGC : public VM_ShenandoahReferenceOperation {
69 private:
70 GCCause::Cause _gc_cause;
71 public:
72 VM_ShenandoahFullGC(GCCause::Cause gc_cause) : VM_ShenandoahReferenceOperation(), _gc_cause(gc_cause) {};
73 VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahFullGC; }
74 const char* name() const { return "Shenandoah Full GC"; }
75 virtual void doit();
76 };
77
78 class VM_ShenandoahVerifyHeapAfterEvacuation: public VM_ShenandoahOperation {
79 public:
80 VM_ShenandoahVerifyHeapAfterEvacuation() : VM_ShenandoahOperation() {};
81 VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahVerifyHeapAfterEvacuation; }
82 const char* name() const { return "Shenandoah verify heap after evacuation"; }
83 virtual void doit();
84 };
85
86 #endif //SHARE_VM_GC_SHENANDOAH_VM_OPERATIONS_SHENANDOAH_HPP
|
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
23
24 #ifndef SHARE_VM_GC_SHENANDOAH_VM_OPERATIONS_SHENANDOAH_HPP
25 #define SHARE_VM_GC_SHENANDOAH_VM_OPERATIONS_SHENANDOAH_HPP
26
27 #include "gc_implementation/shenandoah/shenandoahConcurrentMark.hpp"
28 #include "gc_implementation/shared/vmGCOperations.hpp"
29
30 // VM_operations for the Shenandoah Collector.
31 //
32 // VM_ShenandoahOperation
33 // - VM_ShenandoahInitMark: initiate concurrent marking
34 // - VM_ShenandoahReferenceOperation:
35 // - VM_ShenandoahFinalMarkStartEvac: finish up concurrent marking, and start evacuation
36 // - VM_ShenandoahInitUpdateRefs: initiate update references
37 // - VM_ShenandoahFinalUpdateRefs: finish up update references
38 // - VM_ShenandoahFullGC: do full GC
39
40 class VM_ShenandoahOperation : public VM_Operation {
41 public:
42 VM_ShenandoahOperation() {};
43 };
44
45 class VM_ShenandoahReferenceOperation : public VM_ShenandoahOperation {
46 private:
47 BasicLock _pending_list_basic_lock;
48 public:
49 VM_ShenandoahReferenceOperation() : VM_ShenandoahOperation() {};
50 bool doit_prologue();
51 void doit_epilogue();
52 };
53
54 class VM_ShenandoahInitMark: public VM_ShenandoahOperation {
55 public:
56 VM_ShenandoahInitMark() : VM_ShenandoahOperation() {};
57 VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahInitMark; }
58 const char* name() const { return "Shenandoah Init Marking"; }
59 virtual void doit();
60 };
61
62 class VM_ShenandoahFinalMarkStartEvac: public VM_ShenandoahReferenceOperation {
63 public:
64 VM_ShenandoahFinalMarkStartEvac() : VM_ShenandoahReferenceOperation() {};
65 VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahFinalMarkStartEvac; }
66 const char* name() const { return "Shenandoah Final Mark and Start Evacuation"; }
67 virtual void doit();
68 };
69
70 class VM_ShenandoahFullGC : public VM_ShenandoahReferenceOperation {
71 private:
72 GCCause::Cause _gc_cause;
73 public:
74 VM_ShenandoahFullGC(GCCause::Cause gc_cause) : VM_ShenandoahReferenceOperation(), _gc_cause(gc_cause) {};
75 VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahFullGC; }
76 const char* name() const { return "Shenandoah Full GC"; }
77 virtual void doit();
78 };
79
80 class VM_ShenandoahInitUpdateRefs: public VM_ShenandoahOperation {
81 public:
82 VM_ShenandoahInitUpdateRefs() : VM_ShenandoahOperation() {};
83 VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahInitUpdateRefs; }
84 const char* name() const { return "Shenandoah Init Update References"; }
85 virtual void doit();
86 };
87
88 class VM_ShenandoahFinalUpdateRefs: public VM_ShenandoahOperation {
89 public:
90 VM_ShenandoahFinalUpdateRefs() : VM_ShenandoahOperation() {};
91 VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahFinalUpdateRefs; }
92 const char* name() const { return "Shenandoah Final Update References"; }
93 virtual void doit();
94 };
95
96 class VM_ShenandoahVerifyHeapAfterEvacuation: public VM_ShenandoahOperation {
97 public:
98 VM_ShenandoahVerifyHeapAfterEvacuation() : VM_ShenandoahOperation() {};
99 VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahVerifyHeapAfterEvacuation; }
100 const char* name() const { return "Shenandoah verify heap after evacuation"; }
101 virtual void doit();
102 };
103
104 #endif //SHARE_VM_GC_SHENANDOAH_VM_OPERATIONS_SHENANDOAH_HPP
|