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_ShenandoahReferenceOperation:
42 // - VM_ShenandoahFullGC: do full GC
43 // - VM_ShenandoahDegeneratedGC: do STW degenerated GC
44
45 class VM_ShenandoahOperation : public VM_Operation {
46 protected:
47 uint _gc_id;
48 public:
49 VM_ShenandoahOperation() : _gc_id(GCId::current()) {};
50 bool skip_thread_oop_barriers() const override { return true; }
51 bool doit_prologue() override;
52 void doit_epilogue() override;
53 };
54
55 class VM_ShenandoahReferenceOperation : public VM_ShenandoahOperation {
56 public:
57 VM_ShenandoahReferenceOperation() : VM_ShenandoahOperation() {};
58 bool doit_prologue() override;
59 void doit_epilogue() override;
60 };
61
62 class VM_ShenandoahInitMark: public VM_ShenandoahOperation {
63 private:
64 ShenandoahConcurrentGC* const _gc;
65 public:
66 VM_ShenandoahInitMark(ShenandoahConcurrentGC* gc) :
67 VM_ShenandoahOperation(),
68 _gc(gc) {};
69 VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahInitMark; }
70 const char* name() const { return "Shenandoah Init Marking"; }
|
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_ShenandoahFinalRoots: finish up roots on a non-evacuating 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
50 void set_active_generation();
51 public:
52 VM_ShenandoahOperation() : _gc_id(GCId::current()) {};
53 bool skip_thread_oop_barriers() const override { return true; }
54
55 void log_active_generation(const char* prefix);
56 bool doit_prologue() override;
57 void doit_epilogue() override;
58 };
59
60 class VM_ShenandoahReferenceOperation : public VM_ShenandoahOperation {
61 public:
62 VM_ShenandoahReferenceOperation() : VM_ShenandoahOperation() {};
63 bool doit_prologue() override;
64 void doit_epilogue() override;
65 };
66
67 class VM_ShenandoahInitMark: public VM_ShenandoahOperation {
68 private:
69 ShenandoahConcurrentGC* const _gc;
70 public:
71 VM_ShenandoahInitMark(ShenandoahConcurrentGC* gc) :
72 VM_ShenandoahOperation(),
73 _gc(gc) {};
74 VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahInitMark; }
75 const char* name() const { return "Shenandoah Init Marking"; }
|