< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.hpp

Print this page

 24  */
 25 
 26 #ifndef SHARE_GC_SHENANDOAH_SHENANDOAHCONCURRENTGC_HPP
 27 #define SHARE_GC_SHENANDOAH_SHENANDOAHCONCURRENTGC_HPP
 28 
 29 #include "gc/shared/gcCause.hpp"
 30 #include "gc/shenandoah/shenandoahConcurrentMark.hpp"
 31 #include "gc/shenandoah/shenandoahGC.hpp"
 32 #include "gc/shenandoah/shenandoahHeap.hpp"
 33 
 34 class ShenandoahGeneration;
 35 
 36 class VM_ShenandoahInitMark;
 37 class VM_ShenandoahFinalMarkStartEvac;
 38 class VM_ShenandoahInitUpdateRefs;
 39 class VM_ShenandoahFinalUpdateRefs;
 40 
 41 class ShenandoahConcurrentGC : public ShenandoahGC {
 42   friend class VM_ShenandoahInitMark;
 43   friend class VM_ShenandoahFinalMarkStartEvac;

 44   friend class VM_ShenandoahInitUpdateRefs;
 45   friend class VM_ShenandoahFinalUpdateRefs;
 46   friend class VM_ShenandoahFinalVerify;
 47 
 48 protected:
 49   ShenandoahConcurrentMark    _mark;
 50 
 51 private:
 52   ShenandoahDegenPoint        _degen_point;
 53   bool                        _abbreviated;
 54   const bool                  _do_old_gc_bootstrap;
 55 
 56 public:
 57   ShenandoahConcurrentGC(ShenandoahGeneration* generation, bool do_old_gc_bootstrap);
 58 
 59   bool collect(GCCause::Cause cause) override;
 60   ShenandoahDegenPoint degen_point() const;
 61 
 62   // Return true if this cycle found enough immediate garbage to skip evacuation
 63   bool abbreviated() const { return _abbreviated; }
 64 
 65 protected:
 66   // Entry points to STW GC operations, these cause a related safepoint, that then
 67   // call the entry method below
 68   void vmop_entry_init_mark();
 69   void vmop_entry_final_mark();
 70   void vmop_entry_init_update_refs();
 71   void vmop_entry_final_update_refs();

 72   void vmop_entry_final_verify();
 73 
 74   // Entry methods to normally STW GC operations. These set up logging, monitoring
 75   // and workers for next VM operation
 76   void entry_init_mark();
 77   void entry_final_mark();

 78   void entry_init_update_refs();
 79   void entry_final_update_refs();
 80   void entry_final_verify();
 81 
 82   // Entry methods to normally concurrent GC operations. These set up logging, monitoring
 83   // for concurrent operation.
 84   void entry_reset();
 85   void entry_mark_roots();
 86   void entry_scan_remembered_set();
 87   void entry_mark();
 88   void entry_thread_roots();
 89   void entry_weak_refs();
 90   void entry_weak_roots();
 91   void entry_class_unloading();
 92   void entry_strong_roots();
 93   void entry_cleanup_early();

 94   void entry_complete_abbreviated_cycle();
 95   void entry_final_roots();
 96   void entry_evacuate();
 97   void entry_update_thread_roots();
 98   void entry_update_card_table();
 99   void entry_concurrent_update_refs_prepare(ShenandoahHeap* heap);
100   void entry_update_refs();
101   void entry_cleanup_complete();
102 
103   // Actual work for the phases
104   void op_reset();
105   void op_init_mark();
106   void op_mark_roots();
107   void op_mark();
108   virtual void op_final_mark();
109   void op_thread_roots();
110   void op_weak_refs();
111   void op_weak_roots();
112   void op_class_unloading();
113   void op_strong_roots();
114   void op_cleanup_early();
115   void op_evacuate();

 24  */
 25 
 26 #ifndef SHARE_GC_SHENANDOAH_SHENANDOAHCONCURRENTGC_HPP
 27 #define SHARE_GC_SHENANDOAH_SHENANDOAHCONCURRENTGC_HPP
 28 
 29 #include "gc/shared/gcCause.hpp"
 30 #include "gc/shenandoah/shenandoahConcurrentMark.hpp"
 31 #include "gc/shenandoah/shenandoahGC.hpp"
 32 #include "gc/shenandoah/shenandoahHeap.hpp"
 33 
 34 class ShenandoahGeneration;
 35 
 36 class VM_ShenandoahInitMark;
 37 class VM_ShenandoahFinalMarkStartEvac;
 38 class VM_ShenandoahInitUpdateRefs;
 39 class VM_ShenandoahFinalUpdateRefs;
 40 
 41 class ShenandoahConcurrentGC : public ShenandoahGC {
 42   friend class VM_ShenandoahInitMark;
 43   friend class VM_ShenandoahFinalMarkStartEvac;
 44   friend class VM_ShenandoahFinalRoots;
 45   friend class VM_ShenandoahInitUpdateRefs;
 46   friend class VM_ShenandoahFinalUpdateRefs;
 47   friend class VM_ShenandoahFinalVerify;
 48 
 49 protected:
 50   ShenandoahConcurrentMark    _mark;
 51 
 52 private:
 53   ShenandoahDegenPoint        _degen_point;
 54   bool                        _abbreviated;
 55   const bool                  _do_old_gc_bootstrap;
 56 
 57 public:
 58   ShenandoahConcurrentGC(ShenandoahGeneration* generation, bool do_old_gc_bootstrap);
 59 
 60   bool collect(GCCause::Cause cause) override;
 61   ShenandoahDegenPoint degen_point() const;
 62 
 63   // Return true if this cycle found enough immediate garbage to skip evacuation
 64   bool abbreviated() const { return _abbreviated; }
 65 
 66 protected:
 67   // Entry points to STW GC operations, these cause a related safepoint, that then
 68   // call the entry method below
 69   void vmop_entry_init_mark();
 70   void vmop_entry_final_mark();
 71   void vmop_entry_init_update_refs();
 72   void vmop_entry_final_update_refs();
 73   void vmop_entry_final_roots();
 74   void vmop_entry_final_verify();
 75 
 76   // Entry methods to normally STW GC operations. These set up logging, monitoring
 77   // and workers for next VM operation
 78   void entry_init_mark();
 79   void entry_final_mark();
 80   void entry_final_roots();
 81   void entry_init_update_refs();
 82   void entry_final_update_refs();
 83   void entry_final_verify();
 84 
 85   // Entry methods to normally concurrent GC operations. These set up logging, monitoring
 86   // for concurrent operation.
 87   void entry_reset();
 88   void entry_mark_roots();
 89   void entry_scan_remembered_set();
 90   void entry_mark();
 91   void entry_thread_roots();
 92   void entry_weak_refs();
 93   void entry_weak_roots();
 94   void entry_class_unloading();
 95   void entry_strong_roots();
 96   void entry_cleanup_early();
 97   void entry_conc_roots();
 98   void entry_complete_abbreviated_cycle();

 99   void entry_evacuate();
100   void entry_update_thread_roots();
101   void entry_update_card_table();
102   void entry_concurrent_update_refs_prepare(ShenandoahHeap* heap);
103   void entry_update_refs();
104   void entry_cleanup_complete();
105 
106   // Actual work for the phases
107   void op_reset();
108   void op_init_mark();
109   void op_mark_roots();
110   void op_mark();
111   virtual void op_final_mark();
112   void op_thread_roots();
113   void op_weak_refs();
114   void op_weak_roots();
115   void op_class_unloading();
116   void op_strong_roots();
117   void op_cleanup_early();
118   void op_evacuate();
< prev index next >