src/share/vm/interpreter/interpreterRuntime.cpp

changeset 2268
3b2dea75431e
parent 2258
87d6a4d1ecbc
child 2314
f95d63e2154a
     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:

mercurial