From 535984b8b8acd42e77e1b4298b9c2e1344268369 Mon Sep 17 00:00:00 2001 From: twisti Date: Tue, 30 Nov 2010 09:53:04 -0800 Subject: [PATCH] 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 --- src/share/vm/classfile/systemDictionary.cpp | 2 +- src/share/vm/classfile/systemDictionary.hpp | 3 +-- src/share/vm/prims/methodHandleWalk.cpp | 11 +++-------- src/share/vm/prims/methodHandleWalk.hpp | 3 +-- src/share/vm/prims/methodHandles.cpp | 5 ++--- src/share/vm/runtime/thread.cpp | 6 ------ 6 files changed, 8 insertions(+), 22 deletions(-) diff --git a/src/share/vm/classfile/systemDictionary.cpp b/src/share/vm/classfile/systemDictionary.cpp index b6f8481a9..5716e8716 100644 --- a/src/share/vm/classfile/systemDictionary.cpp +++ b/src/share/vm/classfile/systemDictionary.cpp @@ -2010,7 +2010,7 @@ void SystemDictionary::initialize_preloaded_classes(TRAPS) { scan = WKID(meth_group_end+1); } 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); if (EnableInvokeDynamic) { initialize_wk_klasses_through(indy_group_end, scan, CHECK); diff --git a/src/share/vm/classfile/systemDictionary.hpp b/src/share/vm/classfile/systemDictionary.hpp index d18e34192..a83c8d551 100644 --- a/src/share/vm/classfile/systemDictionary.hpp +++ b/src/share/vm/classfile/systemDictionary.hpp @@ -156,8 +156,7 @@ class SymbolPropertyTable; template(WrongMethodTypeException_klass, java_dyn_WrongMethodTypeException, Opt) \ template(Linkage_klass, java_dyn_Linkage, Opt) \ template(CallSite_klass, java_dyn_CallSite, Opt) \ - template(InvokeDynamic_klass, java_dyn_InvokeDynamic, Opt) \ - /* Note: MethodHandle must be first, and InvokeDynamic last in group */ \ + /* Note: MethodHandle must be first, and CallSite last in group */ \ \ template(StringBuffer_klass, java_lang_StringBuffer, Pre) \ template(StringBuilder_klass, java_lang_StringBuilder, Pre) \ diff --git a/src/share/vm/prims/methodHandleWalk.cpp b/src/share/vm/prims/methodHandleWalk.cpp index 3965109f2..f20859dac 100644 --- a/src/share/vm/prims/methodHandleWalk.cpp +++ b/src/share/vm/prims/methodHandleWalk.cpp @@ -968,16 +968,11 @@ MethodHandleCompiler::make_invoke(methodOop m, vmIntrinsics::ID iid, if (tailcall) { // Actually, in order to make these methods more recognizable, - // let's put them in holder classes MethodHandle and InvokeDynamic. - // That way stack walkers and compiler heuristics can recognize them. - _target_klass = (for_invokedynamic() - ? SystemDictionary::InvokeDynamic_klass() - : SystemDictionary::MethodHandle_klass()); + // let's put them in holder class MethodHandle. That way stack + // walkers and compiler heuristics can recognize them. + _target_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. InvocationCounter* ic = m->invocation_counter(); ic->set_carry_flag(); diff --git a/src/share/vm/prims/methodHandleWalk.hpp b/src/share/vm/prims/methodHandleWalk.hpp index f4a6ad7b3..91e71da33 100644 --- a/src/share/vm/prims/methodHandleWalk.hpp +++ b/src/share/vm/prims/methodHandleWalk.hpp @@ -412,8 +412,7 @@ public: // Tests if the given class is a MH adapter holder. static bool klass_is_method_handle_adapter_holder(klassOop klass) { - return (klass == SystemDictionary::MethodHandle_klass() || - klass == SystemDictionary::InvokeDynamic_klass()); + return (klass == SystemDictionary::MethodHandle_klass()); } }; diff --git a/src/share/vm/prims/methodHandles.cpp b/src/share/vm/prims/methodHandles.cpp index 67974a665..6c3318656 100644 --- a/src/share/vm/prims/methodHandles.cpp +++ b/src/share/vm/prims/methodHandles.cpp @@ -485,9 +485,8 @@ void MethodHandles::resolve_MemberName(Handle mname, TRAPS) { Handle polymorphic_method_type; bool polymorphic_signature = false; if ((flags & ALL_KINDS) == IS_METHOD && - (defc() == SystemDictionary::InvokeDynamic_klass() || - (defc() == SystemDictionary::MethodHandle_klass() && - methodOopDesc::is_method_handle_invoke_name(name())))) + (defc() == SystemDictionary::MethodHandle_klass() && + methodOopDesc::is_method_handle_invoke_name(name()))) polymorphic_signature = true; // convert the external string or reflective type to an internal signature diff --git a/src/share/vm/runtime/thread.cpp b/src/share/vm/runtime/thread.cpp index 9447249ed..b7a224b93 100644 --- a/src/share/vm/runtime/thread.cpp +++ b/src/share/vm/runtime/thread.cpp @@ -3232,12 +3232,6 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { warning("java.lang.ArithmeticException 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. -- GitLab