提交 535984b8 编写于 作者: T twisti

7001363: java/dyn/InvokeDynamic should not be a well-known class in the JVM

Summary: Because of the removal of language support, the JDK 7 API for JSR 292 no longer includes a public class named java/dyn/InvokeDynamic.
Reviewed-by: jrose, kvn
上级 75e08dfa
...@@ -2010,7 +2010,7 @@ void SystemDictionary::initialize_preloaded_classes(TRAPS) { ...@@ -2010,7 +2010,7 @@ void SystemDictionary::initialize_preloaded_classes(TRAPS) {
scan = WKID(meth_group_end+1); scan = WKID(meth_group_end+1);
} }
WKID indy_group_start = WK_KLASS_ENUM_NAME(Linkage_klass); WKID indy_group_start = WK_KLASS_ENUM_NAME(Linkage_klass);
WKID indy_group_end = WK_KLASS_ENUM_NAME(InvokeDynamic_klass); WKID indy_group_end = WK_KLASS_ENUM_NAME(CallSite_klass);
initialize_wk_klasses_until(indy_group_start, scan, CHECK); initialize_wk_klasses_until(indy_group_start, scan, CHECK);
if (EnableInvokeDynamic) { if (EnableInvokeDynamic) {
initialize_wk_klasses_through(indy_group_end, scan, CHECK); initialize_wk_klasses_through(indy_group_end, scan, CHECK);
......
...@@ -156,8 +156,7 @@ class SymbolPropertyTable; ...@@ -156,8 +156,7 @@ class SymbolPropertyTable;
template(WrongMethodTypeException_klass, java_dyn_WrongMethodTypeException, Opt) \ template(WrongMethodTypeException_klass, java_dyn_WrongMethodTypeException, Opt) \
template(Linkage_klass, java_dyn_Linkage, Opt) \ template(Linkage_klass, java_dyn_Linkage, Opt) \
template(CallSite_klass, java_dyn_CallSite, Opt) \ template(CallSite_klass, java_dyn_CallSite, Opt) \
template(InvokeDynamic_klass, java_dyn_InvokeDynamic, Opt) \ /* Note: MethodHandle must be first, and CallSite last in group */ \
/* Note: MethodHandle must be first, and InvokeDynamic last in group */ \
\ \
template(StringBuffer_klass, java_lang_StringBuffer, Pre) \ template(StringBuffer_klass, java_lang_StringBuffer, Pre) \
template(StringBuilder_klass, java_lang_StringBuilder, Pre) \ template(StringBuilder_klass, java_lang_StringBuilder, Pre) \
......
...@@ -968,16 +968,11 @@ MethodHandleCompiler::make_invoke(methodOop m, vmIntrinsics::ID iid, ...@@ -968,16 +968,11 @@ MethodHandleCompiler::make_invoke(methodOop m, vmIntrinsics::ID iid,
if (tailcall) { if (tailcall) {
// Actually, in order to make these methods more recognizable, // Actually, in order to make these methods more recognizable,
// let's put them in holder classes MethodHandle and InvokeDynamic. // let's put them in holder class MethodHandle. That way stack
// That way stack walkers and compiler heuristics can recognize them. // walkers and compiler heuristics can recognize them.
_target_klass = (for_invokedynamic() _target_klass = SystemDictionary::MethodHandle_klass();
? SystemDictionary::InvokeDynamic_klass()
: SystemDictionary::MethodHandle_klass());
} }
// instanceKlass* ik = instanceKlass::cast(klass);
// tty->print_cr("MethodHandleCompiler::make_invoke: %s %s.%s%s", Bytecodes::name(op), ik->external_name(), name->as_C_string(), signature->as_C_string());
// Inline the method. // Inline the method.
InvocationCounter* ic = m->invocation_counter(); InvocationCounter* ic = m->invocation_counter();
ic->set_carry_flag(); ic->set_carry_flag();
......
...@@ -412,8 +412,7 @@ public: ...@@ -412,8 +412,7 @@ public:
// Tests if the given class is a MH adapter holder. // Tests if the given class is a MH adapter holder.
static bool klass_is_method_handle_adapter_holder(klassOop klass) { static bool klass_is_method_handle_adapter_holder(klassOop klass) {
return (klass == SystemDictionary::MethodHandle_klass() || return (klass == SystemDictionary::MethodHandle_klass());
klass == SystemDictionary::InvokeDynamic_klass());
} }
}; };
......
...@@ -485,9 +485,8 @@ void MethodHandles::resolve_MemberName(Handle mname, TRAPS) { ...@@ -485,9 +485,8 @@ void MethodHandles::resolve_MemberName(Handle mname, TRAPS) {
Handle polymorphic_method_type; Handle polymorphic_method_type;
bool polymorphic_signature = false; bool polymorphic_signature = false;
if ((flags & ALL_KINDS) == IS_METHOD && if ((flags & ALL_KINDS) == IS_METHOD &&
(defc() == SystemDictionary::InvokeDynamic_klass() || (defc() == SystemDictionary::MethodHandle_klass() &&
(defc() == SystemDictionary::MethodHandle_klass() && methodOopDesc::is_method_handle_invoke_name(name())))
methodOopDesc::is_method_handle_invoke_name(name()))))
polymorphic_signature = true; polymorphic_signature = true;
// convert the external string or reflective type to an internal signature // convert the external string or reflective type to an internal signature
......
...@@ -3232,12 +3232,6 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { ...@@ -3232,12 +3232,6 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
warning("java.lang.ArithmeticException has not been initialized"); warning("java.lang.ArithmeticException has not been initialized");
warning("java.lang.StackOverflowError has not been initialized"); warning("java.lang.StackOverflowError has not been initialized");
} }
if (EnableInvokeDynamic) {
// JSR 292: An intialized java.dyn.InvokeDynamic is required in
// the compiler.
initialize_class(vmSymbolHandles::java_dyn_InvokeDynamic(), CHECK_0);
}
} }
// See : bugid 4211085. // See : bugid 4211085.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册