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();