< prev index next >

src/hotspot/share/gc/g1/g1ParScanThreadState.cpp

Print this page
rev 49826 : imported patch 6672778-partial-queue-trimming
rev 49827 : imported patch 6672778-refactoring
rev 49828 : imported patch 6672778-stefanj-review
rev 49829 : imported patch 6672778-inconsistent-time-fixes

*** 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_trim_upper_threshold(GCDrainStackTargetSize * 2 + 1), + _stack_trim_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 >