equal
deleted
inserted
replaced
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 |