RFR: Fix PLAB alignment reserve

Aleksey Shipilev shade at redhat.com
Tue May 15 21:13:33 UTC 2018


On 05/15/2018 11:03 PM, Roman Kennke wrote:
> The setup of AlignmentReserve in PLAB is not quite right for Shenandoah:
> when oop-header-size > MinObjAlignment then it is set to header size of
> int array or Shenandoah's forced min-aligment, otherwise 0. However, if
> header-size == MinObjAligment, then it's set to 0. This doesn't fit
> because we need an extra word. I changed the logic to compute this to
> take Shenandoah's extra word into account, and this way we also don't
> need to force a min_align_reserve for Shenandoah.
> 
> Passes previously (sometimes) failing LargeObjectAligment test as well
> as all hotspot_gc_shenandoah tests in fastdebug.
> 
> http://cr.openjdk.java.net/~rkennke/fixplabalign/webrev.01/

OK, but do a few formatting changes before pushing:

 *) Break out ternary statement, maybe:

   int rsv_regular = oopDesc::header_size() + (int) Universe::heap()->oop_extra_words();
   int rsv_array   = align_object_size(arrayOopDesc::header_size(T_INT) +
Universe::heap()->oop_extra_words());
   AlignmentReserve = rsv_regular > MinObjAlignment ? rsv_array : 0;

 *) New line in assert:

    assert(_hard_end - _top >= oopDesc::header_size() + Universe::heap()->oop_extra_words(),
           "better have enough space left to fill with dummy");

Otherwise good! Thanks for fixing this.

-Aleksey



More information about the shenandoah-dev mailing list