diff -r c5c3e1a5c3f0 -r 06122633fead src/hotspot/cpu/sparc/stubGenerator_sparc.cpp --- a/src/hotspot/cpu/sparc/stubGenerator_sparc.cpp Thu Nov 30 18:51:47 2017 +0100 +++ b/src/hotspot/cpu/sparc/stubGenerator_sparc.cpp Thu Dec 07 13:05:31 2017 +0100 @@ -899,7 +899,9 @@ assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code"); assert_different_registers(addr, count, tmp); - Label L_loop; + Label L_loop, L_done; + + __ cmp_and_br_short(count, 0, Assembler::equal, Assembler::pt, L_done); // zero count - nothing to do __ sll_ptr(count, LogBytesPerHeapOop, count); __ sub(count, BytesPerHeapOop, count); @@ -915,6 +917,7 @@ __ subcc(count, 1, count); __ brx(Assembler::greaterEqual, false, Assembler::pt, L_loop); __ delayed()->add(addr, 1, addr); + __ BIND(L_done); } break; case BarrierSet::ModRef: