385 // the recorded info for the evacuation pause. 386 387 enum CSetBuildType { 388 Active, // We are actively building the collection set 389 Inactive // We are not actively building the collection set 390 }; 391 392 CSetBuildType _inc_cset_build_state; 393 394 // The head of the incrementally built collection set. 395 HeapRegion* _inc_cset_head; 396 397 // The tail of the incrementally built collection set. 398 HeapRegion* _inc_cset_tail; 399 400 // The number of bytes in the incrementally built collection set. 401 // Used to set _collection_set_bytes_used_before at the start of 402 // an evacuation pause. 403 size_t _inc_cset_bytes_used_before; 404 405 // Used to record the highest end of heap region in collection set 406 HeapWord* _inc_cset_max_finger; 407 408 // The RSet lengths recorded for regions in the CSet. It is updated 409 // by the thread that adds a new region to the CSet. We assume that 410 // only one thread can be allocating a new CSet region (currently, 411 // it does so after taking the Heap_lock) hence no need to 412 // synchronize updates to this field. 413 size_t _inc_cset_recorded_rs_lengths; 414 415 // A concurrent refinement thread periodically samples the young 416 // region RSets and needs to update _inc_cset_recorded_rs_lengths as 417 // the RSets grow. Instead of having to synchronize updates to that 418 // field we accumulate them in this field and add it to 419 // _inc_cset_recorded_rs_lengths_diffs at the start of a GC. 420 ssize_t _inc_cset_recorded_rs_lengths_diffs; 421 422 // The predicted elapsed time it will take to collect the regions in 423 // the CSet. This is updated by the thread that adds a new region to 424 // the CSet. See the comment for _inc_cset_recorded_rs_lengths about 425 // MT-safety assumptions. 426 double _inc_cset_predicted_elapsed_time_ms; 427 | 385 // the recorded info for the evacuation pause. 386 387 enum CSetBuildType { 388 Active, // We are actively building the collection set 389 Inactive // We are not actively building the collection set 390 }; 391 392 CSetBuildType _inc_cset_build_state; 393 394 // The head of the incrementally built collection set. 395 HeapRegion* _inc_cset_head; 396 397 // The tail of the incrementally built collection set. 398 HeapRegion* _inc_cset_tail; 399 400 // The number of bytes in the incrementally built collection set. 401 // Used to set _collection_set_bytes_used_before at the start of 402 // an evacuation pause. 403 size_t _inc_cset_bytes_used_before; 404 405 // The RSet lengths recorded for regions in the CSet. It is updated 406 // by the thread that adds a new region to the CSet. We assume that 407 // only one thread can be allocating a new CSet region (currently, 408 // it does so after taking the Heap_lock) hence no need to 409 // synchronize updates to this field. 410 size_t _inc_cset_recorded_rs_lengths; 411 412 // A concurrent refinement thread periodically samples the young 413 // region RSets and needs to update _inc_cset_recorded_rs_lengths as 414 // the RSets grow. Instead of having to synchronize updates to that 415 // field we accumulate them in this field and add it to 416 // _inc_cset_recorded_rs_lengths_diffs at the start of a GC. 417 ssize_t _inc_cset_recorded_rs_lengths_diffs; 418 419 // The predicted elapsed time it will take to collect the regions in 420 // the CSet. This is updated by the thread that adds a new region to 421 // the CSet. See the comment for _inc_cset_recorded_rs_lengths about 422 // MT-safety assumptions. 423 double _inc_cset_predicted_elapsed_time_ms; 424 |