src/share/vm/ci/ciTypeFlow.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/ci/ciTypeFlow.cpp	Wed Oct 28 19:51:16 2009
--- new/src/share/vm/ci/ciTypeFlow.cpp	Wed Oct 28 19:51:15 2009

*** 633,644 **** --- 633,651 ---- bool has_receiver) { bool will_link; ciMethod* method = str->get_method(will_link); if (!will_link) { // We weren't able to find the method. + if (str->cur_bc() == Bytecodes::_invokedynamic) { + trap(str, NULL, + Deoptimization::make_trap_request + (Deoptimization::Reason_uninitialized, + Deoptimization::Action_reinterpret)); + } else { ciKlass* unloaded_holder = method->holder(); trap(str, unloaded_holder, str->get_method_holder_index()); + } } else { ciSignature* signature = method->signature(); ciSignatureStream sigstr(signature); int arg_size = signature->size(); int stack_base = stack_size() - arg_size;
*** 1290,1301 **** --- 1297,1308 ---- break; } case Bytecodes::_invokeinterface: do_invoke(str, true); break; case Bytecodes::_invokespecial: do_invoke(str, true); break; case Bytecodes::_invokestatic: do_invoke(str, false); break; case Bytecodes::_invokevirtual: do_invoke(str, true); break; + case Bytecodes::_invokedynamic: do_invoke(str, false); break; case Bytecodes::_istore: store_local_int(str->get_index()); break; case Bytecodes::_istore_0: store_local_int(0); break; case Bytecodes::_istore_1: store_local_int(1); break; case Bytecodes::_istore_2: store_local_int(2); break;

src/share/vm/ci/ciTypeFlow.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File