< prev index next >
src/hotspot/share/gc/g1/g1ParScanThreadState.cpp
Print this page
rev 49680 : imported patch 6672778-partial-queue-trimming
rev 49681 : imported patch 6672778-refactoring
rev 49682 : [mq]: 6672778-stefanj-review
*** 41,55 ****
: _g1h(g1h),
_refs(g1h->task_queue(worker_id)),
_dcq(&g1h->dirty_card_queue_set()),
_ct(g1h->card_table()),
_closures(NULL),
! _hash_seed(17),
! _worker_id(worker_id),
! _tenuring_threshold(g1h->g1_policy()->tenuring_threshold()),
_age_table(false),
_scanner(g1h, this),
_old_gen_is_full(false)
{
// we allocate G1YoungSurvRateNumRegions plus one entries, since
// we "sacrifice" entry 0 to keep track of surviving bytes for
// non-young regions (where the age is -1)
--- 41,59 ----
: _g1h(g1h),
_refs(g1h->task_queue(worker_id)),
_dcq(&g1h->dirty_card_queue_set()),
_ct(g1h->card_table()),
_closures(NULL),
! _plab_allocator(NULL),
_age_table(false),
+ _tenuring_threshold(g1h->g1_policy()->tenuring_threshold()),
_scanner(g1h, this),
+ _hash_seed(17),
+ _worker_id(worker_id),
+ _stack_drain_upper_threshold(GCDrainStackTargetSize * 2 + 1),
+ _stack_drain_lower_threshold(GCDrainStackTargetSize),
+ _trim_ticks(),
_old_gen_is_full(false)
{
// we allocate G1YoungSurvRateNumRegions plus one entries, since
// we "sacrifice" entry 0 to keep track of surviving bytes for
// non-young regions (where the age is -1)
*** 136,155 ****
#endif // ASSERT
void G1ParScanThreadState::trim_queue() {
StarTask ref;
do {
! // Drain the overflow stack first, so other threads can steal.
! while (_refs->pop_overflow(ref)) {
! if (!_refs->try_push_to_taskqueue(ref)) {
! dispatch_reference(ref);
! }
! }
!
! while (_refs->pop_local(ref)) {
! dispatch_reference(ref);
! }
} while (!_refs->is_empty());
}
HeapWord* G1ParScanThreadState::allocate_in_next_plab(InCSetState const state,
InCSetState* dest,
--- 140,151 ----
#endif // ASSERT
void G1ParScanThreadState::trim_queue() {
StarTask ref;
do {
! // Fully drain the queue.
! trim_queue_to_threshold(0);
} while (!_refs->is_empty());
}
HeapWord* G1ParScanThreadState::allocate_in_next_plab(InCSetState const state,
InCSetState* dest,
*** 312,322 ****
// We keep track of the next start index in the length field of
// the to-space object. The actual length can be found in the
// length field of the from-space object.
arrayOop(obj)->set_length(0);
oop* old_p = set_partial_array_mask(old);
! push_on_queue(old_p);
} else {
HeapRegion* const to_region = _g1h->heap_region_containing(obj_ptr);
_scanner.set_region(to_region);
obj->oop_iterate_backwards(&_scanner);
}
--- 308,318 ----
// We keep track of the next start index in the length field of
// the to-space object. The actual length can be found in the
// length field of the from-space object.
arrayOop(obj)->set_length(0);
oop* old_p = set_partial_array_mask(old);
! do_oop_partial_array(old_p);
} else {
HeapRegion* const to_region = _g1h->heap_region_containing(obj_ptr);
_scanner.set_region(to_region);
obj->oop_iterate_backwards(&_scanner);
}
< prev index next >