< prev index next >

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

Print this page
rev 8039 : [mq]: simplify
rev 8040 : [mq]: inc1


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



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




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


< prev index next >