< prev index next >

src/share/vm/gc_implementation/shenandoah/vm_operations_shenandoah.hpp

Print this page
rev 9705 : [backport] Implement early update references phase.


  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
< prev index next >