diff --git a/src/hotspot/cpu/s390/macroAssembler_s390.cpp b/src/hotspot/cpu/s390/macroAssembler_s390.cpp index 069e54816ea..afc7a7667e2 100644 --- a/src/hotspot/cpu/s390/macroAssembler_s390.cpp +++ b/src/hotspot/cpu/s390/macroAssembler_s390.cpp @@ -5041,6 +5041,7 @@ unsigned int MacroAssembler::string_compress(Register result, Register src, Regi z_bru(VectorDone); bind(VectorBreak); + add2reg(Rsrc, -min_vcnt*2); // Fix Rsrc. Rsrc was already updated, but Rdst and Rix are not. z_sll(Rix, log_min_vcnt); // # chars processed so far in VectorLoop, excl. current iteration. z_sr(Z_R0, Rix); // correct # chars processed in total.