Request for review JDK-8151045,,Remove code duplication in PLABStats/G1EvacStats::adjust_desired_plab_sz

Alexander Harlap alexander.harlap at oracle.com
Fri Feb 17 22:55:22 UTC 2017


Hi Kim,

Thank you for your review.


On 2/17/2017 5:19 PM, Kim Barrett wrote:
>> On Feb 17, 2017, at 1:06 PM, Alexander Harlap <alexander.harlap at oracle.com> wrote:
>>
>> Please review change for JDK-8151045 - Remove code duplication in PLABStats/G1EvacStats::adjust_desired_plab_sz
>>
>> Change is located at http://cr.openjdk.java.net/~aharlap/8151045/webrev.00/
>>
>> Common code is at (not virtual) PLABStats::adjust_desired_plab_sz() and class specific code is at new virtual helper method.
>>
>> Alex
> ------------------------------------------------------------------------------
> src/share/vm/gc/shared/plab.hpp
> src/share/vm/gc/g1/g1EvacStats.hpp
>   201   // helper for adjust_desired_plab_sz().
>   202   virtual size_t adjust_desired_plab_sz_helper();
>
> The new helper function should be protected, not public.
   Agree
> A better name for the new helper function would be
> compute_desired_plab_sz.
  Agree
> ------------------------------------------------------------------------------
> src/share/vm/gc/shared/plab.cpp
>   168   if (_allocated == 0) {
>   169     assert(_unused == 0,
>   170            "Inconsistency in PLAB stats: "
>   171            "_allocated: " SIZE_FORMAT ", "
>   172            "_wasted: " SIZE_FORMAT ", "
>   173            "_unused: " SIZE_FORMAT ", "
>   174            "_undo_wasted: " SIZE_FORMAT,
>   175            _allocated, _wasted, _unused, _undo_wasted);
>   176
>   177     _allocated = 1;
>   178   }
>
> and
> src/share/vm/gc/g1/g1EvacStats.cpp
>    50   if (_allocated == 0) {
>    51     assert((_unused == 0),
>    52            "Inconsistency in PLAB stats: "
>    53            "_allocated: " SIZE_FORMAT ", "
>    54            "_wasted: " SIZE_FORMAT ", "
>    55            "_region_end_waste: " SIZE_FORMAT ", "
>    56            "_unused: " SIZE_FORMAT ", "
>    57            "_used  : " SIZE_FORMAT,
>    58            _allocated, _wasted, _region_end_waste, _unused, used());
>    59     _allocated = 1;
>    60   }
>
> I think further improvement is possibleBy removing the near
> duplication here.
>
> (1) In both places remove the above quoted code.
>
> (2) In the shared/plab version of the helper, protect the one
> reference to _allocated against a zero value.
What do you mean here?
> (3) In the main adjust function, add an assert
>      assert(_allocated != 0 || _unused == 0, ...);
>
> This loses the G1 specific _region_and_waste value if the assertion
> fails, but keeping that doesn't seem worth the code duplication.
>
> ------------------------------------------------------------------------------
>

Thank you,
Alex


More information about the hotspot-gc-dev mailing list