1.1 --- a/src/share/vm/interpreter/interpreterRuntime.cpp Sat Oct 30 12:19:07 2010 -0700 1.2 +++ b/src/share/vm/interpreter/interpreterRuntime.cpp Sat Oct 30 13:08:23 2010 -0700 1.3 @@ -716,6 +716,7 @@ 1.4 assert(constantPoolCacheOopDesc::is_secondary_index(site_index), "proper format"); 1.5 // there is a second CPC entries that is of interest; it caches signature info: 1.6 int main_index = pool->cache()->secondary_entry_at(site_index)->main_entry_index(); 1.7 + int pool_index = pool->cache()->entry_at(main_index)->constant_pool_index(); 1.8 1.9 // first resolve the signature to a MH.invoke methodOop 1.10 if (!pool->cache()->entry_at(main_index)->is_resolved(bytecode)) { 1.11 @@ -740,9 +741,10 @@ 1.12 assert(signature_invoker.not_null() && signature_invoker->is_method() && signature_invoker->is_method_handle_invoke(), 1.13 "correct result from LinkResolver::resolve_invokedynamic"); 1.14 1.15 + Handle info; // optional argument(s) in JVM_CONSTANT_InvokeDynamic 1.16 Handle bootm = SystemDictionary::find_bootstrap_method(caller_method, caller_bci, 1.17 - main_index, CHECK); 1.18 - if (bootm.is_null()) { 1.19 + main_index, info, CHECK); 1.20 + if (!java_dyn_MethodHandle::is_instance(bootm())) { 1.21 THROW_MSG(vmSymbols::java_lang_IllegalStateException(), 1.22 "no bootstrap method found for invokedynamic"); 1.23 } 1.24 @@ -753,8 +755,6 @@ 1.25 1.26 symbolHandle call_site_name(THREAD, pool->name_ref_at(site_index)); 1.27 1.28 - Handle info; // NYI: Other metadata from a new kind of CP entry. (Annotations?) 1.29 - 1.30 Handle call_site 1.31 = SystemDictionary::make_dynamic_call_site(bootm, 1.32 // Callee information: