src/share/vm/c1/c1_LIR.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
6855215 Cdiff src/share/vm/c1/c1_LIR.cpp
src/share/vm/c1/c1_LIR.cpp
Print this page
*** 565,576 ****
case lir_mul:
case lir_div:
case lir_rem:
case lir_sqrt:
case lir_abs:
- case lir_log:
- case lir_log10:
case lir_logic_and:
case lir_logic_or:
case lir_logic_xor:
case lir_shl:
case lir_shr:
--- 565,574 ----
*** 642,658 ****
}
case lir_tan:
case lir_sin:
! case lir_cos: {
assert(op->as_Op2() != NULL, "must be");
LIR_Op2* op2 = (LIR_Op2*)op;
! // sin and cos need two temporary fpu stack slots, so register
! // two temp operands. Register input operand as temp to
! // guarantee that they do not overlap
assert(op2->_info == NULL, "not used");
assert(op2->_opr1->is_valid(), "used");
do_input(op2->_opr1); do_temp(op2->_opr1);
if (op2->_opr2->is_valid()) do_temp(op2->_opr2);
--- 640,659 ----
}
case lir_tan:
case lir_sin:
! case lir_cos:
! case lir_log:
! case lir_log10: {
assert(op->as_Op2() != NULL, "must be");
LIR_Op2* op2 = (LIR_Op2*)op;
! // On x86 tan/sin/cos need two temporary fpu stack slots and
! // log/log10 need one so handle opr2 and tmp as temp inputs.
! // Register input operand as temp to guarantee that it doesn't
! // overlap with the input.
assert(op2->_info == NULL, "not used");
assert(op2->_opr1->is_valid(), "used");
do_input(op2->_opr1); do_temp(op2->_opr1);
if (op2->_opr2->is_valid()) do_temp(op2->_opr2);
src/share/vm/c1/c1_LIR.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File