src/share/vm/c1/c1_LIR.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/c1/c1_LIR.cpp Tue Aug 25 15:22:48 2009
--- new/src/share/vm/c1/c1_LIR.cpp Tue Aug 25 15:22:48 2009
*** 565,576 ****
--- 565,574 ----
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:
*** 642,658 ****
--- 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;
// 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
+ // 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