# HG changeset patch # User vlivanov # Date 1619594499 -28800 # Node ID c42cb799628c3635e4f37f21554b0c20dc7460c9 # Parent 2c95a7981541c21cd774e0cb545c9fd7d42b0704 8266191: Missing aarch64 parts of JDK-8181872(C1: possible overflow when strength reducing integer multiply by constant) Reviewed-by: kvn, aph diff -r 2c95a7981541 -r c42cb799628c src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp --- a/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Fri Dec 18 20:23:26 2015 +0300 +++ b/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Wed Apr 28 15:21:39 2021 +0800 @@ -603,12 +603,12 @@ } else { assert (x->op() == Bytecodes::_imul, "expect imul"); if (right.is_constant()) { - int c = right.get_jint_constant(); - if (! is_power_of_2(c) && ! is_power_of_2(c + 1) && ! is_power_of_2(c - 1)) { + jint c = right.get_jint_constant(); + if (c > 0 && c < max_jint && (is_power_of_2(c) || is_power_of_2(c - 1) || is_power_of_2(c + 1))) { + right_arg->dont_load_item(); + } else { // Cannot use constant op. - right.load_item(); - } else { - right.dont_load_item(); + right_arg->load_item(); } } else { right.load_item();