Mercurial > hg > graal-jvmci-8
comparison src/share/vm/classfile/systemDictionary.cpp @ 2357:8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
Summary: package and class renaming only; delete unused methods and classes
Reviewed-by: twisti
author | jrose |
---|---|
date | Fri, 11 Mar 2011 22:34:57 -0800 |
parents | 72dee110246f |
children | 38fea01eb669 |
comparison
equal
deleted
inserted
replaced
2356:72dee110246f | 2357:8033953d67ff |
---|---|
2448 } else { | 2448 } else { |
2449 return non_cached_result(); | 2449 return non_cached_result(); |
2450 } | 2450 } |
2451 } | 2451 } |
2452 | 2452 |
2453 // Ask Java code to find or construct a java.dyn.MethodType for the given | 2453 // Ask Java code to find or construct a java.lang.invoke.MethodType for the given |
2454 // signature, as interpreted relative to the given class loader. | 2454 // signature, as interpreted relative to the given class loader. |
2455 // Because of class loader constraints, all method handle usage must be | 2455 // Because of class loader constraints, all method handle usage must be |
2456 // consistent with this loader. | 2456 // consistent with this loader. |
2457 Handle SystemDictionary::find_method_handle_type(Symbol* signature, | 2457 Handle SystemDictionary::find_method_handle_type(Symbol* signature, |
2458 KlassHandle accessing_klass, | 2458 KlassHandle accessing_klass, |
2502 } | 2502 } |
2503 } | 2503 } |
2504 } | 2504 } |
2505 assert(arg == npts, ""); | 2505 assert(arg == npts, ""); |
2506 | 2506 |
2507 // call sun.dyn.MethodHandleNatives::findMethodType(Class rt, Class[] pts) -> MethodType | 2507 // call java.lang.invoke.MethodHandleNatives::findMethodType(Class rt, Class[] pts) -> MethodType |
2508 JavaCallArguments args(Handle(THREAD, rt())); | 2508 JavaCallArguments args(Handle(THREAD, rt())); |
2509 args.push_oop(pts()); | 2509 args.push_oop(pts()); |
2510 JavaValue result(T_OBJECT); | 2510 JavaValue result(T_OBJECT); |
2511 Symbol* findMethodHandleType_signature = vmSymbols::findMethodHandleType_signature(); | |
2512 if (AllowTransitionalJSR292 && SystemDictionaryHandles::MethodType_klass()->name() == vmSymbols::java_dyn_MethodType()) { | |
2513 findMethodHandleType_signature = vmSymbols::findMethodHandleType_TRANS_signature(); | |
2514 } | |
2511 JavaCalls::call_static(&result, | 2515 JavaCalls::call_static(&result, |
2512 SystemDictionary::MethodHandleNatives_klass(), | 2516 SystemDictionary::MethodHandleNatives_klass(), |
2513 vmSymbols::findMethodHandleType_name(), | 2517 vmSymbols::findMethodHandleType_name(), |
2514 vmSymbols::findMethodHandleType_signature(), | 2518 findMethodHandleType_signature, |
2515 &args, CHECK_(empty)); | 2519 &args, CHECK_(empty)); |
2516 Handle method_type(THREAD, (oop) result.get_jobject()); | 2520 Handle method_type(THREAD, (oop) result.get_jobject()); |
2517 | 2521 |
2518 if (for_invokeGeneric) { | 2522 if (for_invokeGeneric) { |
2519 // call sun.dyn.MethodHandleNatives::notifyGenericMethodType(MethodType) -> void | 2523 // call java.lang.invoke.MethodHandleNatives::notifyGenericMethodType(MethodType) -> void |
2520 JavaCallArguments args(Handle(THREAD, method_type())); | 2524 JavaCallArguments args(Handle(THREAD, method_type())); |
2521 JavaValue no_result(T_VOID); | 2525 JavaValue no_result(T_VOID); |
2526 Symbol* notifyGenericMethodType_signature = vmSymbols::notifyGenericMethodType_signature(); | |
2527 if (AllowTransitionalJSR292 && SystemDictionaryHandles::MethodType_klass()->name() == vmSymbols::java_dyn_MethodType()) { | |
2528 notifyGenericMethodType_signature = vmSymbols::notifyGenericMethodType_TRANS_signature(); | |
2529 } | |
2522 JavaCalls::call_static(&no_result, | 2530 JavaCalls::call_static(&no_result, |
2523 SystemDictionary::MethodHandleNatives_klass(), | 2531 SystemDictionary::MethodHandleNatives_klass(), |
2524 vmSymbols::notifyGenericMethodType_name(), | 2532 vmSymbols::notifyGenericMethodType_name(), |
2525 vmSymbols::notifyGenericMethodType_signature(), | 2533 notifyGenericMethodType_signature, |
2526 &args, THREAD); | 2534 &args, THREAD); |
2527 if (HAS_PENDING_EXCEPTION) { | 2535 if (HAS_PENDING_EXCEPTION) { |
2528 // If the notification fails, just kill it. | 2536 // If the notification fails, just kill it. |
2529 CLEAR_PENDING_EXCEPTION; | 2537 CLEAR_PENDING_EXCEPTION; |
2530 } | 2538 } |
2561 } | 2569 } |
2562 if (type.is_null()) { | 2570 if (type.is_null()) { |
2563 THROW_MSG_(vmSymbols::java_lang_LinkageError(), "bad signature", empty); | 2571 THROW_MSG_(vmSymbols::java_lang_LinkageError(), "bad signature", empty); |
2564 } | 2572 } |
2565 | 2573 |
2566 // call sun.dyn.MethodHandleNatives::linkMethodHandleConstant(Class caller, int refKind, Class callee, String name, Object type) -> MethodHandle | 2574 // call java.lang.invoke.MethodHandleNatives::linkMethodHandleConstant(Class caller, int refKind, Class callee, String name, Object type) -> MethodHandle |
2567 JavaCallArguments args; | 2575 JavaCallArguments args; |
2568 args.push_oop(caller->java_mirror()); // the referring class | 2576 args.push_oop(caller->java_mirror()); // the referring class |
2569 args.push_int(ref_kind); | 2577 args.push_int(ref_kind); |
2570 args.push_oop(callee->java_mirror()); // the target class | 2578 args.push_oop(callee->java_mirror()); // the target class |
2571 args.push_oop(name()); | 2579 args.push_oop(name()); |
2572 args.push_oop(type()); | 2580 args.push_oop(type()); |
2573 JavaValue result(T_OBJECT); | 2581 JavaValue result(T_OBJECT); |
2582 Symbol* linkMethodHandleConstant_signature = vmSymbols::linkMethodHandleConstant_signature(); | |
2583 if (AllowTransitionalJSR292 && SystemDictionaryHandles::MethodHandle_klass()->name() == vmSymbols::java_dyn_MethodHandle()) { | |
2584 linkMethodHandleConstant_signature = vmSymbols::linkMethodHandleConstant_TRANS_signature(); | |
2585 } | |
2574 JavaCalls::call_static(&result, | 2586 JavaCalls::call_static(&result, |
2575 SystemDictionary::MethodHandleNatives_klass(), | 2587 SystemDictionary::MethodHandleNatives_klass(), |
2576 vmSymbols::linkMethodHandleConstant_name(), | 2588 vmSymbols::linkMethodHandleConstant_name(), |
2577 vmSymbols::linkMethodHandleConstant_signature(), | 2589 linkMethodHandleConstant_signature, |
2578 &args, CHECK_(empty)); | 2590 &args, CHECK_(empty)); |
2579 return Handle(THREAD, (oop) result.get_jobject()); | 2591 return Handle(THREAD, (oop) result.get_jobject()); |
2580 } | 2592 } |
2581 | 2593 |
2582 // Ask Java code to find or construct a java.dyn.CallSite for the given | 2594 // Ask Java code to find or construct a java.lang.invoke.CallSite for the given |
2583 // name and signature, as interpreted relative to the given class loader. | 2595 // name and signature, as interpreted relative to the given class loader. |
2584 Handle SystemDictionary::make_dynamic_call_site(Handle bootstrap_method, | 2596 Handle SystemDictionary::make_dynamic_call_site(Handle bootstrap_method, |
2585 Symbol* name, | 2597 Symbol* name, |
2586 methodHandle signature_invoker, | 2598 methodHandle signature_invoker, |
2587 Handle info, | 2599 Handle info, |
2588 methodHandle caller_method, | 2600 methodHandle caller_method, |
2589 int caller_bci, | 2601 int caller_bci, |
2590 TRAPS) { | 2602 TRAPS) { |
2591 Handle empty; | 2603 Handle empty; |
2592 guarantee(bootstrap_method.not_null() && | 2604 guarantee(bootstrap_method.not_null() && |
2593 java_dyn_MethodHandle::is_instance(bootstrap_method()), | 2605 java_lang_invoke_MethodHandle::is_instance(bootstrap_method()), |
2594 "caller must supply a valid BSM"); | 2606 "caller must supply a valid BSM"); |
2595 | 2607 |
2596 Handle caller_mname = MethodHandles::new_MemberName(CHECK_(empty)); | 2608 Handle caller_mname = MethodHandles::new_MemberName(CHECK_(empty)); |
2597 MethodHandles::init_MemberName(caller_mname(), caller_method()); | 2609 MethodHandles::init_MemberName(caller_mname(), caller_method()); |
2598 | 2610 |
2599 // call sun.dyn.MethodHandleNatives::makeDynamicCallSite(bootm, name, mtype, info, caller_mname, caller_pos) | 2611 // call java.lang.invoke.MethodHandleNatives::makeDynamicCallSite(bootm, name, mtype, info, caller_mname, caller_pos) |
2600 oop name_str_oop = StringTable::intern(name, CHECK_(empty)); // not a handle! | 2612 oop name_str_oop = StringTable::intern(name, CHECK_(empty)); // not a handle! |
2601 JavaCallArguments args(Handle(THREAD, bootstrap_method())); | 2613 JavaCallArguments args(Handle(THREAD, bootstrap_method())); |
2602 args.push_oop(name_str_oop); | 2614 args.push_oop(name_str_oop); |
2603 args.push_oop(signature_invoker->method_handle_type()); | 2615 args.push_oop(signature_invoker->method_handle_type()); |
2604 args.push_oop(info()); | 2616 args.push_oop(info()); |
2607 JavaValue result(T_OBJECT); | 2619 JavaValue result(T_OBJECT); |
2608 Symbol* makeDynamicCallSite_signature = vmSymbols::makeDynamicCallSite_signature(); | 2620 Symbol* makeDynamicCallSite_signature = vmSymbols::makeDynamicCallSite_signature(); |
2609 if (AllowTransitionalJSR292 && SystemDictionaryHandles::MethodHandleNatives_klass()->name() == vmSymbols::sun_dyn_MethodHandleNatives()) { | 2621 if (AllowTransitionalJSR292 && SystemDictionaryHandles::MethodHandleNatives_klass()->name() == vmSymbols::sun_dyn_MethodHandleNatives()) { |
2610 makeDynamicCallSite_signature = vmSymbols::makeDynamicCallSite_TRANS_signature(); | 2622 makeDynamicCallSite_signature = vmSymbols::makeDynamicCallSite_TRANS_signature(); |
2611 } | 2623 } |
2624 if (AllowTransitionalJSR292 && SystemDictionaryHandles::MethodHandleNatives_klass()->name() == vmSymbols::java_dyn_MethodHandleNatives()) { | |
2625 makeDynamicCallSite_signature = vmSymbols::makeDynamicCallSite_TRANS2_signature(); | |
2626 } | |
2612 JavaCalls::call_static(&result, | 2627 JavaCalls::call_static(&result, |
2613 SystemDictionary::MethodHandleNatives_klass(), | 2628 SystemDictionary::MethodHandleNatives_klass(), |
2614 vmSymbols::makeDynamicCallSite_name(), | 2629 vmSymbols::makeDynamicCallSite_name(), |
2615 makeDynamicCallSite_signature, | 2630 makeDynamicCallSite_signature, |
2616 &args, CHECK_(empty)); | 2631 &args, CHECK_(empty)); |
2617 oop call_site_oop = (oop) result.get_jobject(); | 2632 oop call_site_oop = (oop) result.get_jobject(); |
2618 assert(call_site_oop->is_oop() | 2633 assert(call_site_oop->is_oop() |
2619 /*&& java_dyn_CallSite::is_instance(call_site_oop)*/, "must be sane"); | 2634 /*&& java_lang_invoke_CallSite::is_instance(call_site_oop)*/, "must be sane"); |
2620 if (TraceMethodHandles) { | 2635 if (TraceMethodHandles) { |
2621 #ifndef PRODUCT | 2636 #ifndef PRODUCT |
2622 tty->print_cr("Linked invokedynamic bci=%d site="INTPTR_FORMAT":", caller_bci, call_site_oop); | 2637 tty->print_cr("Linked invokedynamic bci=%d site="INTPTR_FORMAT":", caller_bci, call_site_oop); |
2623 call_site_oop->print(); | 2638 call_site_oop->print(); |
2624 tty->cr(); | 2639 tty->cr(); |