207 }
208 size_t occ_coarse() const {
209 return _other_regions.occ_coarse();
210 }
211 size_t occ_sparse() const {
212 return _other_regions.occ_sparse();
213 }
214
215 static jint n_coarsenings() { return OtherRegionsTable::n_coarsenings(); }
216
217 private:
218 enum RemSetState {
219 Untracked,
220 Updating,
221 Complete
222 };
223
224 RemSetState _state;
225
226 static const char* _state_strings[];
227 public:
228
229 const char* get_state_str() const { return _state_strings[_state]; }
230
231 bool is_tracked() { return _state != Untracked; }
232 bool is_updating() { return _state == Updating; }
233 bool is_complete() { return _state == Complete; }
234
235 void set_state_empty() {
236 guarantee(SafepointSynchronize::is_at_safepoint() || !is_tracked(), "Should only set to Untracked during safepoint but is %s.", get_state_str());
237 if (_state == Untracked) {
238 return;
239 }
240 _other_regions.clear_fcc();
241 _state = Untracked;
242 }
243
244 void set_state_updating() {
245 guarantee(SafepointSynchronize::is_at_safepoint() && !is_tracked(), "Should only set to Updating from Untracked during safepoint but is %s", get_state_str());
246 _other_regions.clear_fcc();
247 _state = Updating;
248 }
249
|
207 }
208 size_t occ_coarse() const {
209 return _other_regions.occ_coarse();
210 }
211 size_t occ_sparse() const {
212 return _other_regions.occ_sparse();
213 }
214
215 static jint n_coarsenings() { return OtherRegionsTable::n_coarsenings(); }
216
217 private:
218 enum RemSetState {
219 Untracked,
220 Updating,
221 Complete
222 };
223
224 RemSetState _state;
225
226 static const char* _state_strings[];
227 static const char* _short_state_strings[];
228 public:
229
230 const char* get_state_str() const { return _state_strings[_state]; }
231 const char* get_short_state_str() const { return _short_state_strings[_state]; }
232
233 bool is_tracked() { return _state != Untracked; }
234 bool is_updating() { return _state == Updating; }
235 bool is_complete() { return _state == Complete; }
236
237 void set_state_empty() {
238 guarantee(SafepointSynchronize::is_at_safepoint() || !is_tracked(), "Should only set to Untracked during safepoint but is %s.", get_state_str());
239 if (_state == Untracked) {
240 return;
241 }
242 _other_regions.clear_fcc();
243 _state = Untracked;
244 }
245
246 void set_state_updating() {
247 guarantee(SafepointSynchronize::is_at_safepoint() && !is_tracked(), "Should only set to Updating from Untracked during safepoint but is %s", get_state_str());
248 _other_regions.clear_fcc();
249 _state = Updating;
250 }
251
|