1100 }
1101 // this is supposed to be called regularly during a marking step as
1102 // it checks a bunch of conditions that might cause the marking step
1103 // to abort
1104 void regular_clock_call();
1105 bool concurrent() { return _concurrent; }
1106
1107 public:
1108 // It resets the task; it should be called right at the beginning of
1109 // a marking phase.
1110 void reset(CMBitMap* _nextMarkBitMap);
1111 // it clears all the fields that correspond to a claimed region.
1112 void clear_region_fields();
1113
1114 void set_concurrent(bool concurrent) { _concurrent = concurrent; }
1115
1116 // The main method of this class which performs a marking step
1117 // trying not to exceed the given duration. However, it might exit
1118 // prematurely, according to some conditions (i.e. SATB buffers are
1119 // available for processing).
1120 void do_marking_step(double target_ms, bool do_stealing, bool do_termination);
1121
1122 // These two calls start and stop the timer
1123 void record_start_time() {
1124 _elapsed_time_ms = os::elapsedTime() * 1000.0;
1125 }
1126 void record_end_time() {
1127 _elapsed_time_ms = os::elapsedTime() * 1000.0 - _elapsed_time_ms;
1128 }
1129
1130 // returns the task ID
1131 int task_id() { return _task_id; }
1132
1133 // From TerminatorTerminator. It determines whether this task should
1134 // exit the termination protocol after it's entered it.
1135 virtual bool should_exit_termination();
1136
1137 // Resets the local region fields after a task has finished scanning a
1138 // region; or when they have become stale as a result of the region
1139 // being evacuated.
1140 void giveup_current_region();
|
1100 }
1101 // this is supposed to be called regularly during a marking step as
1102 // it checks a bunch of conditions that might cause the marking step
1103 // to abort
1104 void regular_clock_call();
1105 bool concurrent() { return _concurrent; }
1106
1107 public:
1108 // It resets the task; it should be called right at the beginning of
1109 // a marking phase.
1110 void reset(CMBitMap* _nextMarkBitMap);
1111 // it clears all the fields that correspond to a claimed region.
1112 void clear_region_fields();
1113
1114 void set_concurrent(bool concurrent) { _concurrent = concurrent; }
1115
1116 // The main method of this class which performs a marking step
1117 // trying not to exceed the given duration. However, it might exit
1118 // prematurely, according to some conditions (i.e. SATB buffers are
1119 // available for processing).
1120 void do_marking_step(double target_ms,
1121 bool do_termination,
1122 bool is_serial);
1123
1124 // These two calls start and stop the timer
1125 void record_start_time() {
1126 _elapsed_time_ms = os::elapsedTime() * 1000.0;
1127 }
1128 void record_end_time() {
1129 _elapsed_time_ms = os::elapsedTime() * 1000.0 - _elapsed_time_ms;
1130 }
1131
1132 // returns the task ID
1133 int task_id() { return _task_id; }
1134
1135 // From TerminatorTerminator. It determines whether this task should
1136 // exit the termination protocol after it's entered it.
1137 virtual bool should_exit_termination();
1138
1139 // Resets the local region fields after a task has finished scanning a
1140 // region; or when they have become stale as a result of the region
1141 // being evacuated.
1142 void giveup_current_region();
|