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