8071731: Better scaling for C1
Reviewed-by: kvn, iveresov
This commit is contained in:
parent
8f84825191
commit
73bc9c4c0b
@ -2208,7 +2208,15 @@ void LIRGenerator::do_UnsafePutRaw(UnsafePutRaw* x) {
|
|||||||
if (log2_scale != 0) {
|
if (log2_scale != 0) {
|
||||||
// temporary fix (platform dependent code without shift on Intel would be better)
|
// temporary fix (platform dependent code without shift on Intel would be better)
|
||||||
// TODO: ARM also allows embedded shift in the address
|
// TODO: ARM also allows embedded shift in the address
|
||||||
__ shift_left(index_op, log2_scale, index_op);
|
LIR_Opr tmp = new_pointer_register();
|
||||||
|
if (TwoOperandLIRForm) {
|
||||||
|
__ move(index_op, tmp);
|
||||||
|
index_op = tmp;
|
||||||
|
}
|
||||||
|
__ shift_left(index_op, log2_scale, tmp);
|
||||||
|
if (!TwoOperandLIRForm) {
|
||||||
|
index_op = tmp;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LIR_Address* addr = new LIR_Address(base_op, index_op, x->basic_type());
|
LIR_Address* addr = new LIR_Address(base_op, index_op, x->basic_type());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user