Mercurial > hg > icedtea8-forest > hotspot
changeset 10809:6deccb5af3b4
8216989, PR3797: CardTableBarrierSetAssembler::gen_write_ref_array_post_barrier() does not check for zero length on AARCH64
Reviewed-by: adinn
author | dpochepk |
---|---|
date | Wed, 06 May 2020 06:24:08 -0400 |
parents | b58d341cef20 |
children | 5c7085df7f80 |
files | src/cpu/aarch64/vm/stubGenerator_aarch64.cpp |
diffstat | 1 files changed, 8 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp Thu May 07 09:11:54 2020 -0400 +++ b/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp Wed May 06 06:24:08 2020 -0400 @@ -645,6 +645,13 @@ // The ending address is inclusive. void gen_write_ref_array_post_barrier(Register start, Register end, Register scratch) { assert_different_registers(start, end, scratch); + Label L_done; + + // "end" is inclusive end pointer == start + (count - 1) * array_element_size + // If count == 0, "end" is less than "start" and we need to skip card marking. + __ cmp(end, start); + __ br(__ LO, L_done); + BarrierSet* bs = Universe::heap()->barrier_set(); switch (bs->kind()) { case BarrierSet::G1SATBCT: @@ -691,6 +698,7 @@ ShouldNotReachHere(); } + __ bind(L_done); } address generate_zero_longs(Register base, Register cnt) {