src/share/vm/c1/c1_LIR.cpp

changeset 1388
ff1a29907b6c
parent 739
dc7f315e41f7
child 1730
3cf667df43ef
     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);

mercurial