1.1 --- a/src/share/vm/c1/c1_LIR.cpp Mon Aug 31 08:31:45 2009 -0700 1.2 +++ b/src/share/vm/c1/c1_LIR.cpp Mon Aug 31 17:07:53 2009 -0700 1.3 @@ -567,8 +567,6 @@ 1.4 case lir_rem: 1.5 case lir_sqrt: 1.6 case lir_abs: 1.7 - case lir_log: 1.8 - case lir_log10: 1.9 case lir_logic_and: 1.10 case lir_logic_or: 1.11 case lir_logic_xor: 1.12 @@ -644,13 +642,16 @@ 1.13 1.14 case lir_tan: 1.15 case lir_sin: 1.16 - case lir_cos: { 1.17 + case lir_cos: 1.18 + case lir_log: 1.19 + case lir_log10: { 1.20 assert(op->as_Op2() != NULL, "must be"); 1.21 LIR_Op2* op2 = (LIR_Op2*)op; 1.22 1.23 - // sin and cos need two temporary fpu stack slots, so register 1.24 - // two temp operands. Register input operand as temp to 1.25 - // guarantee that they do not overlap 1.26 + // On x86 tan/sin/cos need two temporary fpu stack slots and 1.27 + // log/log10 need one so handle opr2 and tmp as temp inputs. 1.28 + // Register input operand as temp to guarantee that it doesn't 1.29 + // overlap with the input. 1.30 assert(op2->_info == NULL, "not used"); 1.31 assert(op2->_opr1->is_valid(), "used"); 1.32 do_input(op2->_opr1); do_temp(op2->_opr1);