src/share/vm/opto/doCall.cpp

changeset 1161
be93aad57795
parent 802
194b8e3a2fc4
child 1215
c96bf21b756f
     1.1 --- a/src/share/vm/opto/doCall.cpp	Mon Apr 20 14:48:03 2009 -0700
     1.2 +++ b/src/share/vm/opto/doCall.cpp	Tue Apr 21 23:21:04 2009 -0700
     1.3 @@ -248,6 +248,14 @@
     1.4                    holder_klass);
     1.5      return true;
     1.6    }
     1.7 +  if (dest_method->is_method_handle_invoke()
     1.8 +      && holder_klass->name() == ciSymbol::java_dyn_Dynamic()) {
     1.9 +    // FIXME: NYI
    1.10 +    uncommon_trap(Deoptimization::Reason_unhandled,
    1.11 +                  Deoptimization::Action_none,
    1.12 +                  holder_klass);
    1.13 +    return true;
    1.14 +  }
    1.15  
    1.16    assert(dest_method->will_link(method()->holder(), klass, bc()), "dest_method: typeflow responsibility");
    1.17    return false;
    1.18 @@ -748,6 +756,7 @@
    1.19        case Bytecodes::_invokevirtual:   increment_counter(SharedRuntime::nof_inlined_calls_addr()); break;
    1.20        case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_inlined_interface_calls_addr()); break;
    1.21        case Bytecodes::_invokestatic:
    1.22 +      case Bytecodes::_invokedynamic:
    1.23        case Bytecodes::_invokespecial:   increment_counter(SharedRuntime::nof_inlined_static_calls_addr()); break;
    1.24        default: fatal("unexpected call bytecode");
    1.25        }
    1.26 @@ -756,6 +765,7 @@
    1.27        case Bytecodes::_invokevirtual:   increment_counter(SharedRuntime::nof_normal_calls_addr()); break;
    1.28        case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_interface_calls_addr()); break;
    1.29        case Bytecodes::_invokestatic:
    1.30 +      case Bytecodes::_invokedynamic:
    1.31        case Bytecodes::_invokespecial:   increment_counter(SharedRuntime::nof_static_calls_addr()); break;
    1.32        default: fatal("unexpected call bytecode");
    1.33        }

mercurial