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