src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
Print this page
*** 1510,1522 ****
// Start a new incremental collection set for the next pause
assert(g1_policy()->collection_set() == NULL, "must be");
g1_policy()->start_incremental_cset_building();
- // Clear the _cset_fast_test bitmap in anticipation of adding
- // regions to the incremental collection set for the next
- // evacuation pause.
clear_cset_fast_test();
init_mutator_alloc_region();
double end = os::elapsedTime();
--- 1510,1519 ----
*** 1932,1943 ****
_expand_heap_after_alloc_failure(true),
_surviving_young_words(NULL),
_old_marking_cycles_started(0),
_old_marking_cycles_completed(0),
_concurrent_cycle_started(false),
! _in_cset_fast_test(NULL),
! _in_cset_fast_test_base(NULL),
_dirty_cards_region_list(NULL),
_worker_cset_start_region(NULL),
_worker_cset_start_region_time_stamp(NULL),
_gc_timer_stw(new (ResourceObj::C_HEAP, mtGC) STWGCTimer()),
_gc_timer_cm(new (ResourceObj::C_HEAP, mtGC) ConcurrentGCTimer()),
--- 1929,1939 ----
_expand_heap_after_alloc_failure(true),
_surviving_young_words(NULL),
_old_marking_cycles_started(0),
_old_marking_cycles_completed(0),
_concurrent_cycle_started(false),
! _in_cset_fast_test(),
_dirty_cards_region_list(NULL),
_worker_cset_start_region(NULL),
_worker_cset_start_region_time_stamp(NULL),
_gc_timer_stw(new (ResourceObj::C_HEAP, mtGC) STWGCTimer()),
_gc_timer_cm(new (ResourceObj::C_HEAP, mtGC) ConcurrentGCTimer()),
*** 2075,2098 ****
_bot_shared = new G1BlockOffsetSharedArray(_reserved,
heap_word_size(init_byte_size));
_g1h = this;
! _in_cset_fast_test_length = max_regions();
! _in_cset_fast_test_base =
! NEW_C_HEAP_ARRAY(bool, (size_t) _in_cset_fast_test_length, mtGC);
!
! // We're biasing _in_cset_fast_test to avoid subtracting the
! // beginning of the heap every time we want to index; basically
! // it's the same with what we do with the card table.
! _in_cset_fast_test = _in_cset_fast_test_base -
! ((uintx) _g1_reserved.start() >> HeapRegion::LogOfHRGrainBytes);
!
! // Clear the _cset_fast_test bitmap in anticipation of adding
! // regions to the incremental collection set for the first
! // evacuation pause.
! clear_cset_fast_test();
// Create the ConcurrentMark data structure and thread.
// (Must do this late, so that "max_regions" is defined.)
_cm = new ConcurrentMark(this, heap_rs);
if (_cm == NULL || !_cm->completed_initialization()) {
--- 2071,2081 ----
_bot_shared = new G1BlockOffsetSharedArray(_reserved,
heap_word_size(init_byte_size));
_g1h = this;
! _in_cset_fast_test.initialize(_g1_reserved.start(), _g1_reserved.end(), HeapRegion::GrainBytes);
// Create the ConcurrentMark data structure and thread.
// (Must do this late, so that "max_regions" is defined.)
_cm = new ConcurrentMark(this, heap_rs);
if (_cm == NULL || !_cm->completed_initialization()) {
*** 4123,4135 ****
cleanup_surviving_young_words();
// Start a new incremental collection set for the next pause.
g1_policy()->start_incremental_cset_building();
- // Clear the _cset_fast_test bitmap in anticipation of adding
- // regions to the incremental collection set for the next
- // evacuation pause.
clear_cset_fast_test();
_young_list->reset_sampled_info();
// Don't check the whole heap at this point as the
--- 4106,4115 ----