< prev index next >

src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp

Print this page

        

*** 596,611 **** rlock_result(x); arithmetic_op_int(x->op(), x->operand(), left_arg->result(), right_arg->result(), LIR_OprFact::illegalOpr); } 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)) { ! // Cannot use constant op. ! right.load_item(); } else { ! right.dont_load_item(); } } else { right.load_item(); } rlock_result(x); --- 596,611 ---- rlock_result(x); arithmetic_op_int(x->op(), x->operand(), left_arg->result(), right_arg->result(), LIR_OprFact::illegalOpr); } else { assert (x->op() == Bytecodes::_imul, "expect imul"); if (right.is_constant()) { ! 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_arg->load_item(); } } else { right.load_item(); } rlock_result(x);
< prev index next >