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;
|