RFR(T): 8214206: Fix for JDK-8213419 is broken on 32-bit

Aleksey Shipilev shade at redhat.com
Thu Nov 22 17:47:13 UTC 2018


On 11/22/18 5:53 PM, Roland Westrelin wrote:
> Based on Aleksey's patch:
> 
> http://cr.openjdk.java.net/~roland/8214206/webrev.01/

Looks good. I checked x86_64, x86_32, aarch64, armhf, s390x, ppc64el.

You need this addition for ppc64el and s390x:

diff -r c6a329a473b3 src/hotspot/cpu/ppc/c1_LIRGenerator_ppc.cpp
--- a/src/hotspot/cpu/ppc/c1_LIRGenerator_ppc.cpp	Thu Nov 22 18:18:58 2018 +0100
+++ b/src/hotspot/cpu/ppc/c1_LIRGenerator_ppc.cpp	Thu Nov 22 18:46:47 2018 +0100
@@ -292,11 +292,11 @@
 bool LIRGenerator::strength_reduce_multiply(LIR_Opr left, int c, LIR_Opr result, LIR_Opr tmp) {
   assert(left != result, "should be different registers");
   if (is_power_of_2(c + 1)) {
-    __ shift_left(left, log2_intptr(c + 1), result);
+    __ shift_left(left, log2_int(c + 1), result);
     __ sub(result, left, result);
     return true;
   } else if (is_power_of_2(c - 1)) {
-    __ shift_left(left, log2_intptr(c - 1), result);
+    __ shift_left(left, log2_int(c - 1), result);
     __ add(result, left, result);
     return true;
   }
diff -r c6a329a473b3 src/hotspot/cpu/s390/c1_LIRGenerator_s390.cpp
--- a/src/hotspot/cpu/s390/c1_LIRGenerator_s390.cpp	Thu Nov 22 18:18:58 2018 +0100
+++ b/src/hotspot/cpu/s390/c1_LIRGenerator_s390.cpp	Thu Nov 22 18:46:47 2018 +0100
@@ -227,12 +227,12 @@
   if (tmp->is_valid()) {
     if (is_power_of_2(c + 1)) {
       __ move(left, tmp);
-      __ shift_left(left, log2_intptr(c + 1), left);
+      __ shift_left(left, log2_int(c + 1), left);
       __ sub(left, tmp, result);
       return true;
     } else if (is_power_of_2(c - 1)) {
       __ move(left, tmp);
-      __ shift_left(left, log2_intptr(c - 1), left);
+      __ shift_left(left, log2_int(c - 1), left);
       __ add(left, tmp, result);
       return true;
     }

Thanks,
-Aleksey




More information about the hotspot-dev mailing list