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 }