RFR (L): 8060025: Object copy time regressions after JDK-8031323 and JDK-8057536

Kim Barrett kim.barrett at oracle.com
Mon Dec 15 17:38:13 UTC 2014

On Dec 15, 2014, at 7:03 AM, Thomas Schatzl <thomas.schatzl at oracle.com> wrote:
>> src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
>> Removed:
>> 6547     } else {
>> 6548       g1_policy()->note_alloc_region_limit_reached(ap);
>> I haven't been able to figure out why this (adjusted for purpose =>
>> InCSetState) was removed.
>> ------------------------------------------------------------------------------
> The purpose of this method was to set the tenuring threshold to 0 in the
> policy to avoid the code trying to continue failing to allocate in the
> survivor space. This global state has been superseeded by thread-local
> tenuring thresholds.

Thanks for the explanation.

>> ------------------------------------------------------------------------------
>> src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp
>> 1346     void clear() { G1BiasedMappedArray<in_cset_state_t>::clear(); }
>> Why add this trivial forwarding definition, and not just use the
>> inherited definition as is?
> Change of visibility. The clear method in the super class is protected,
> but the clear() method in this class is public.

Oops, I missed the visibility change.

This could also be accomplished with slightly fewer characters via a
“using” declaration; I don’t see many occurrences of “using” declarations
in our code base though, so it might not enhance readability.

> I would prefer to create a separate CR for introducing an array_size()
> method.

That’s fine.  I’ve added that to my todo list.

More information about the hotspot-gc-dev mailing list