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