From d8284abf493acee375a0ef29c35cd70ae5182b49 Mon Sep 17 00:00:00 2001 From: Lutz Schmidt Date: Fri, 1 Dec 2017 17:09:43 +0100 Subject: [PATCH] 8192818: [s390]: restoring register contents calculates wrong value Reviewed-by: goetz, mdoerr --- src/hotspot/cpu/s390/macroAssembler_s390.cpp | 1 + 1 file changed, 1 insertion(+) 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.