hotspot/src/share/vm/classfile/systemDictionary.cpp
changeset 13929 8da0dc50a6e4
parent 13753 1df4fd11c5b8
child 14075 53f86368a6a6
child 13968 8c9029c01470
child 13961 aeaa21c167d1
equal deleted inserted replaced
13918:b01a48301e67 13929:8da0dc50a6e4
  2427 }
  2427 }
  2428 
  2428 
  2429 methodHandle SystemDictionary::find_method_handle_invoker(Symbol* name,
  2429 methodHandle SystemDictionary::find_method_handle_invoker(Symbol* name,
  2430                                                           Symbol* signature,
  2430                                                           Symbol* signature,
  2431                                                           KlassHandle accessing_klass,
  2431                                                           KlassHandle accessing_klass,
  2432                                                           Handle* appendix_result,
  2432                                                           Handle *appendix_result,
       
  2433                                                           Handle *method_type_result,
  2433                                                           TRAPS) {
  2434                                                           TRAPS) {
  2434   methodHandle empty;
  2435   methodHandle empty;
  2435   assert(EnableInvokeDynamic, "");
  2436   assert(EnableInvokeDynamic, "");
  2436   assert(!THREAD->is_Compiler_thread(), "");
  2437   assert(!THREAD->is_Compiler_thread(), "");
  2437   Handle method_type =
  2438   Handle method_type =
  2459                          SystemDictionary::MethodHandleNatives_klass(),
  2460                          SystemDictionary::MethodHandleNatives_klass(),
  2460                          vmSymbols::linkMethod_name(),
  2461                          vmSymbols::linkMethod_name(),
  2461                          vmSymbols::linkMethod_signature(),
  2462                          vmSymbols::linkMethod_signature(),
  2462                          &args, CHECK_(empty));
  2463                          &args, CHECK_(empty));
  2463   Handle mname(THREAD, (oop) result.get_jobject());
  2464   Handle mname(THREAD, (oop) result.get_jobject());
       
  2465   (*method_type_result) = method_type;
  2464   return unpack_method_and_appendix(mname, appendix_box, appendix_result, THREAD);
  2466   return unpack_method_and_appendix(mname, appendix_box, appendix_result, THREAD);
  2465 }
  2467 }
  2466 
  2468 
  2467 
  2469 
  2468 // Ask Java code to find or construct a java.lang.invoke.MethodType for the given
  2470 // Ask Java code to find or construct a java.lang.invoke.MethodType for the given
  2605 // name and signature, as interpreted relative to the given class loader.
  2607 // name and signature, as interpreted relative to the given class loader.
  2606 methodHandle SystemDictionary::find_dynamic_call_site_invoker(KlassHandle caller,
  2608 methodHandle SystemDictionary::find_dynamic_call_site_invoker(KlassHandle caller,
  2607                                                               Handle bootstrap_specifier,
  2609                                                               Handle bootstrap_specifier,
  2608                                                               Symbol* name,
  2610                                                               Symbol* name,
  2609                                                               Symbol* type,
  2611                                                               Symbol* type,
  2610                                                               Handle* appendix_result,
  2612                                                               Handle *appendix_result,
       
  2613                                                               Handle *method_type_result,
  2611                                                               TRAPS) {
  2614                                                               TRAPS) {
  2612   methodHandle empty;
  2615   methodHandle empty;
  2613   Handle bsm, info;
  2616   Handle bsm, info;
  2614   if (java_lang_invoke_MethodHandle::is_instance(bootstrap_specifier())) {
  2617   if (java_lang_invoke_MethodHandle::is_instance(bootstrap_specifier())) {
  2615     bsm = bootstrap_specifier;
  2618     bsm = bootstrap_specifier;
  2648                          SystemDictionary::MethodHandleNatives_klass(),
  2651                          SystemDictionary::MethodHandleNatives_klass(),
  2649                          vmSymbols::linkCallSite_name(),
  2652                          vmSymbols::linkCallSite_name(),
  2650                          vmSymbols::linkCallSite_signature(),
  2653                          vmSymbols::linkCallSite_signature(),
  2651                          &args, CHECK_(empty));
  2654                          &args, CHECK_(empty));
  2652   Handle mname(THREAD, (oop) result.get_jobject());
  2655   Handle mname(THREAD, (oop) result.get_jobject());
       
  2656   (*method_type_result) = method_type;
  2653   return unpack_method_and_appendix(mname, appendix_box, appendix_result, THREAD);
  2657   return unpack_method_and_appendix(mname, appendix_box, appendix_result, THREAD);
  2654 }
  2658 }
  2655 
  2659 
  2656 // Since the identity hash code for symbols changes when the symbols are
  2660 // Since the identity hash code for symbols changes when the symbols are
  2657 // moved from the regular perm gen (hash in the mark word) to the shared
  2661 // moved from the regular perm gen (hash in the mark word) to the shared