src/share/vm/c1/c1_LIRGenerator.cpp

changeset 7924
3816de51b5e7
parent 7233
b29261b17343
child 7944
8dddcd728302
equal deleted inserted replaced
7923:23bf458e359f 7924:3816de51b5e7
2202 #endif 2202 #endif
2203 2203
2204 if (log2_scale != 0) { 2204 if (log2_scale != 0) {
2205 // temporary fix (platform dependent code without shift on Intel would be better) 2205 // temporary fix (platform dependent code without shift on Intel would be better)
2206 // TODO: ARM also allows embedded shift in the address 2206 // TODO: ARM also allows embedded shift in the address
2207 __ shift_left(index_op, log2_scale, index_op); 2207 LIR_Opr tmp = new_pointer_register();
2208 if (TwoOperandLIRForm) {
2209 __ move(index_op, tmp);
2210 index_op = tmp;
2211 }
2212 __ shift_left(index_op, log2_scale, tmp);
2213 if (!TwoOperandLIRForm) {
2214 index_op = tmp;
2215 }
2208 } 2216 }
2209 2217
2210 LIR_Address* addr = new LIR_Address(base_op, index_op, x->basic_type()); 2218 LIR_Address* addr = new LIR_Address(base_op, index_op, x->basic_type());
2211 __ move(value.result(), addr); 2219 __ move(value.result(), addr);
2212 } 2220 }

mercurial