< prev index next >

src/share/vm/gc_implementation/g1/concurrentMark.hpp

Print this page
rev 7322 : 8076265: Simplify deal_with_reference
Summary: Eliminate _CHECK_BOTH_FINGERS_ and simplify.
Reviewed-by: brutisso, tschatzl


1091   void reached_limit();
1092   // recalculates the words scanned and refs visited limits
1093   void recalculate_limits();
1094   // decreases the words scanned and refs visited limits when we reach
1095   // an expensive operation
1096   void decrease_limits();
1097   // it checks whether the words scanned or refs visited reached their
1098   // respective limit and calls reached_limit() if they have
1099   void check_limits() {
1100     if (_words_scanned >= _words_scanned_limit ||
1101         _refs_reached >= _refs_reached_limit) {
1102       reached_limit();
1103     }
1104   }
1105   // this is supposed to be called regularly during a marking step as
1106   // it checks a bunch of conditions that might cause the marking step
1107   // to abort
1108   void regular_clock_call();
1109   bool concurrent() { return _concurrent; }
1110 




1111 public:
1112   // It resets the task; it should be called right at the beginning of
1113   // a marking phase.
1114   void reset(CMBitMap* _nextMarkBitMap);
1115   // it clears all the fields that correspond to a claimed region.
1116   void clear_region_fields();
1117 
1118   void set_concurrent(bool concurrent) { _concurrent = concurrent; }
1119 
1120   // The main method of this class which performs a marking step
1121   // trying not to exceed the given duration. However, it might exit
1122   // prematurely, according to some conditions (i.e. SATB buffers are
1123   // available for processing).
1124   void do_marking_step(double target_ms,
1125                        bool do_termination,
1126                        bool is_serial);
1127 
1128   // These two calls start and stop the timer
1129   void record_start_time() {
1130     _elapsed_time_ms = os::elapsedTime() * 1000.0;




1091   void reached_limit();
1092   // recalculates the words scanned and refs visited limits
1093   void recalculate_limits();
1094   // decreases the words scanned and refs visited limits when we reach
1095   // an expensive operation
1096   void decrease_limits();
1097   // it checks whether the words scanned or refs visited reached their
1098   // respective limit and calls reached_limit() if they have
1099   void check_limits() {
1100     if (_words_scanned >= _words_scanned_limit ||
1101         _refs_reached >= _refs_reached_limit) {
1102       reached_limit();
1103     }
1104   }
1105   // this is supposed to be called regularly during a marking step as
1106   // it checks a bunch of conditions that might cause the marking step
1107   // to abort
1108   void regular_clock_call();
1109   bool concurrent() { return _concurrent; }
1110 
1111   // Test whether objAddr might have already been passed over by the
1112   // mark bitmap scan, and so needs to be pushed onto the mark stack.
1113   bool is_below_finger(HeapWord* objAddr, HeapWord* global_finger) const;
1114 
1115 public:
1116   // It resets the task; it should be called right at the beginning of
1117   // a marking phase.
1118   void reset(CMBitMap* _nextMarkBitMap);
1119   // it clears all the fields that correspond to a claimed region.
1120   void clear_region_fields();
1121 
1122   void set_concurrent(bool concurrent) { _concurrent = concurrent; }
1123 
1124   // The main method of this class which performs a marking step
1125   // trying not to exceed the given duration. However, it might exit
1126   // prematurely, according to some conditions (i.e. SATB buffers are
1127   // available for processing).
1128   void do_marking_step(double target_ms,
1129                        bool do_termination,
1130                        bool is_serial);
1131 
1132   // These two calls start and stop the timer
1133   void record_start_time() {
1134     _elapsed_time_ms = os::elapsedTime() * 1000.0;


< prev index next >