< prev index next >

src/share/vm/gc_implementation/g1/g1ParScanThreadState.cpp

Print this page
rev 7557 : 8060025: Object copy time regressions after JDK-8031323 and JDK-8057536
Summary: Evaluate and improve object copy time by micro-optimizations and splitting out slow and fast paths aggressively.
Reviewed-by:
Contributed-by: Tony Printezis <tprintezis@twitter.com>, Thomas Schatzl <thomas.schatzl@oracle.com>
rev 7559 : imported patch mikael-refactor-cset-state
rev 7560 : imported patch kim-review

*** 159,170 **** HeapWord* G1ParScanThreadState::allocate_in_next_plab(InCSetState const state, InCSetState* dest, size_t word_sz, AllocationContext_t const context) { ! assert(state.is_in_cset_or_humongous(), err_msg("Unexpected state: %u", state.value())); ! assert(dest->is_in_cset_or_humongous(), err_msg("Unexpected dest: %u", dest->value())); // Right now we only have two types of regions (young / old) so // let's keep the logic here simple. We can generalize it when necessary. if (dest->is_young()) { HeapWord* const obj_ptr = _g1_par_allocator->allocate(InCSetState::Old, --- 159,170 ---- HeapWord* G1ParScanThreadState::allocate_in_next_plab(InCSetState const state, InCSetState* dest, size_t word_sz, AllocationContext_t const context) { ! assert(state.is_in_cset_or_humongous(), err_msg("Unexpected state: " CSETSTATE_FORMAT, state.value())); ! assert(dest->is_in_cset_or_humongous(), err_msg("Unexpected dest: " CSETSTATE_FORMAT, dest->value())); // Right now we only have two types of regions (young / old) so // let's keep the logic here simple. We can generalize it when necessary. if (dest->is_young()) { HeapWord* const obj_ptr = _g1_par_allocator->allocate(InCSetState::Old,
*** 177,187 **** // any new ones) to avoid coming into this slow path. _tenuring_threshold = 0; dest->set_old(); return obj_ptr; } else { ! assert(dest->is_old(), err_msg("Unexpected dest: %u", dest->value())); // no other space to try. return NULL; } } --- 177,187 ---- // any new ones) to avoid coming into this slow path. _tenuring_threshold = 0; dest->set_old(); return obj_ptr; } else { ! assert(dest->is_old(), err_msg("Unexpected dest: " CSETSTATE_FORMAT, dest->value())); // no other space to try. return NULL; } }
< prev index next >