8000740: remove LinkWellKnownClasses

Thu, 11 Oct 2012 14:46:20 -0700

author
twisti
date
Thu, 11 Oct 2012 14:46:20 -0700
changeset 4163
19eb999cb72c
parent 4162
94e9408dbf50
child 4164
d804e148cff8

8000740: remove LinkWellKnownClasses
Reviewed-by: kvn, jrose

src/share/vm/classfile/classFileParser.cpp file | annotate | diff | comparison | revisions
src/share/vm/classfile/classFileParser.hpp file | annotate | diff | comparison | revisions
src/share/vm/classfile/systemDictionary.cpp file | annotate | diff | comparison | revisions
src/share/vm/classfile/systemDictionary.hpp file | annotate | diff | comparison | revisions
src/share/vm/prims/methodHandles.cpp file | annotate | diff | comparison | revisions
src/share/vm/runtime/globals.hpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/classfile/classFileParser.cpp	Thu Oct 11 18:21:01 2012 +0200
     1.2 +++ b/src/share/vm/classfile/classFileParser.cpp	Thu Oct 11 14:46:20 2012 -0700
     1.3 @@ -816,9 +816,6 @@
     1.4                      unresolved_klass, class_loader, protection_domain,
     1.5                      false, CHECK_NULL);
     1.6        interf = KlassHandle(THREAD, k);
     1.7 -
     1.8 -      if (LinkWellKnownClasses)  // my super type is well known to me
     1.9 -        cp->klass_at_put(interface_index, interf()); // eagerly resolve
    1.10      }
    1.11  
    1.12      if (!Klass::cast(interf())->is_interface()) {
    1.13 @@ -3197,8 +3194,6 @@
    1.14  
    1.15        KlassHandle kh (THREAD, k);
    1.16        super_klass = instanceKlassHandle(THREAD, kh());
    1.17 -      if (LinkWellKnownClasses)  // my super class is well known to me
    1.18 -        cp->klass_at_put(super_class_index, super_klass()); // eagerly resolve
    1.19      }
    1.20      if (super_klass.not_null()) {
    1.21        if (super_klass->is_interface()) {
    1.22 @@ -3644,7 +3639,7 @@
    1.23      // has to be changed accordingly.
    1.24      this_klass->set_initial_method_idnum(methods->length());
    1.25      this_klass->set_name(cp->klass_name_at(this_class_index));
    1.26 -    if (LinkWellKnownClasses || is_anonymous())  // I am well known to myself
    1.27 +    if (is_anonymous())  // I am well known to myself
    1.28        cp->klass_at_put(this_class_index, this_klass()); // eagerly resolve
    1.29  
    1.30      if (fields_annotations != NULL ||
     2.1 --- a/src/share/vm/classfile/classFileParser.hpp	Thu Oct 11 18:21:01 2012 +0200
     2.2 +++ b/src/share/vm/classfile/classFileParser.hpp	Thu Oct 11 14:46:20 2012 -0700
     2.3 @@ -344,7 +344,7 @@
     2.4    // constant pool construction, but in later versions they can.
     2.5    // %%% Let's phase out the old is_klass_reference.
     2.6    bool is_klass_reference(constantPoolHandle cp, int index) {
     2.7 -    return ((LinkWellKnownClasses || EnableInvokeDynamic)
     2.8 +    return (EnableInvokeDynamic
     2.9              ? cp->tag_at(index).is_klass_or_reference()
    2.10              : cp->tag_at(index).is_klass_reference());
    2.11    }
     3.1 --- a/src/share/vm/classfile/systemDictionary.cpp	Thu Oct 11 18:21:01 2012 +0200
     3.2 +++ b/src/share/vm/classfile/systemDictionary.cpp	Thu Oct 11 14:46:20 2012 -0700
     3.3 @@ -291,16 +291,6 @@
     3.4                                                   Handle protection_domain,
     3.5                                                   bool is_superclass,
     3.6                                                   TRAPS) {
     3.7 -
     3.8 -  // Try to get one of the well-known klasses.
     3.9 -  // They are trusted, and do not participate in circularities.
    3.10 -  if (LinkWellKnownClasses) {
    3.11 -    Klass* k = find_well_known_klass(class_name);
    3.12 -    if (k != NULL) {
    3.13 -      return k;
    3.14 -    }
    3.15 -  }
    3.16 -
    3.17    // Double-check, if child class is already loaded, just return super-class,interface
    3.18    // Don't add a placedholder if already loaded, i.e. already in system dictionary
    3.19    // Make sure there's a placeholder for the *child* before resolving.
    3.20 @@ -926,14 +916,6 @@
    3.21    Klass* k = NULL;
    3.22    assert(class_name != NULL, "class name must be non NULL");
    3.23  
    3.24 -  // Try to get one of the well-known klasses.
    3.25 -  if (LinkWellKnownClasses) {
    3.26 -    k = find_well_known_klass(class_name);
    3.27 -    if (k != NULL) {
    3.28 -      return k;
    3.29 -    }
    3.30 -  }
    3.31 -
    3.32    if (FieldType::is_array(class_name)) {
    3.33      // The name refers to an array.  Parse the name.
    3.34      // dimension and object_key in FieldArrayInfo are assigned as a
    3.35 @@ -954,41 +936,6 @@
    3.36    return k;
    3.37  }
    3.38  
    3.39 -// Quick range check for names of well-known classes:
    3.40 -static Symbol* wk_klass_name_limits[2] = {NULL, NULL};
    3.41 -
    3.42 -#ifndef PRODUCT
    3.43 -static int find_wkk_calls, find_wkk_probes, find_wkk_wins;
    3.44 -// counts for "hello world": 3983, 1616, 1075
    3.45 -//  => 60% hit after limit guard, 25% total win rate
    3.46 -#endif
    3.47 -
    3.48 -Klass* SystemDictionary::find_well_known_klass(Symbol* class_name) {
    3.49 -  // A bounds-check on class_name will quickly get a negative result.
    3.50 -  NOT_PRODUCT(find_wkk_calls++);
    3.51 -  if (class_name >= wk_klass_name_limits[0] &&
    3.52 -      class_name <= wk_klass_name_limits[1]) {
    3.53 -    NOT_PRODUCT(find_wkk_probes++);
    3.54 -    vmSymbols::SID sid = vmSymbols::find_sid(class_name);
    3.55 -    if (sid != vmSymbols::NO_SID) {
    3.56 -      Klass* k = NULL;
    3.57 -      switch (sid) {
    3.58 -        #define WK_KLASS_CASE(name, symbol, option) \
    3.59 -        case vmSymbols::VM_SYMBOL_ENUM_NAME(symbol): \
    3.60 -          if (option == Pre_Link) { \
    3.61 -            k = WK_KLASS(name); \
    3.62 -          } \
    3.63 -          break;
    3.64 -        WK_KLASSES_DO(WK_KLASS_CASE)
    3.65 -        #undef WK_KLASS_CASE
    3.66 -      }
    3.67 -      NOT_PRODUCT(if (k != NULL)  find_wkk_wins++);
    3.68 -      return k;
    3.69 -    }
    3.70 -  }
    3.71 -  return NULL;
    3.72 -}
    3.73 -
    3.74  // Note: this method is much like resolve_from_stream, but
    3.75  // updates no supplemental data structures.
    3.76  // TODO consolidate the two methods with a helper routine?
    3.77 @@ -1942,33 +1889,12 @@
    3.78      int opt  = (info & right_n_bits(CEIL_LG_OPTION_LIMIT));
    3.79  
    3.80      initialize_wk_klass((WKID)id, opt, CHECK);
    3.81 -
    3.82 -    // Update limits, so find_well_known_klass can be very fast:
    3.83 -    Symbol* s = vmSymbols::symbol_at((vmSymbols::SID)sid);
    3.84 -    if (wk_klass_name_limits[1] == NULL) {
    3.85 -      wk_klass_name_limits[0] = wk_klass_name_limits[1] = s;
    3.86 -    } else if (wk_klass_name_limits[1] < s) {
    3.87 -      wk_klass_name_limits[1] = s;
    3.88 -    } else if (wk_klass_name_limits[0] > s) {
    3.89 -      wk_klass_name_limits[0] = s;
    3.90 -    }
    3.91    }
    3.92  
    3.93    // move the starting value forward to the limit:
    3.94    start_id = limit_id;
    3.95  }
    3.96  
    3.97 -#ifdef ASSERT
    3.98 -void SystemDictionary::check_wk_pre_link_klasses() {
    3.99 -  #define WK_KLASS_CHECK(name, symbol, option) \
   3.100 -    if (option == Pre_Link) { \
   3.101 -      assert(name()->is_public(), ""); \
   3.102 -    }
   3.103 -  WK_KLASSES_DO(WK_KLASS_CHECK);
   3.104 -  #undef WK_KLASS_CHECK
   3.105 -}
   3.106 -#endif
   3.107 -
   3.108  void SystemDictionary::initialize_preloaded_classes(TRAPS) {
   3.109    assert(WK_KLASS(Object_klass) == NULL, "preloaded classes should only be initialized once");
   3.110    // Preload commonly used klasses
   3.111 @@ -2023,8 +1949,6 @@
   3.112  
   3.113    initialize_wk_klasses_until(WKID_LIMIT, scan, CHECK);
   3.114  
   3.115 -  check_wk_pre_link_klasses();
   3.116 -
   3.117    _box_klasses[T_BOOLEAN] = WK_KLASS(Boolean_klass);
   3.118    _box_klasses[T_CHAR]    = WK_KLASS(Character_klass);
   3.119    _box_klasses[T_FLOAT]   = WK_KLASS(Float_klass);
     4.1 --- a/src/share/vm/classfile/systemDictionary.hpp	Thu Oct 11 18:21:01 2012 +0200
     4.2 +++ b/src/share/vm/classfile/systemDictionary.hpp	Thu Oct 11 14:46:20 2012 -0700
     4.3 @@ -94,45 +94,45 @@
     4.4  
     4.5  #define WK_KLASSES_DO(do_klass)                                                                                          \
     4.6    /* well-known classes */                                                                                               \
     4.7 -  do_klass(Object_klass,                                java_lang_Object,                          Pre_Link            ) \
     4.8 -  do_klass(String_klass,                                java_lang_String,                          Pre_Link            ) \
     4.9 -  do_klass(Class_klass,                                 java_lang_Class,                           Pre_Link            ) \
    4.10 -  do_klass(Cloneable_klass,                             java_lang_Cloneable,                       Pre_Link            ) \
    4.11 -  do_klass(ClassLoader_klass,                           java_lang_ClassLoader,                     Pre_Link            ) \
    4.12 -  do_klass(Serializable_klass,                          java_io_Serializable,                      Pre_Link            ) \
    4.13 -  do_klass(System_klass,                                java_lang_System,                          Pre_Link            ) \
    4.14 -  do_klass(Throwable_klass,                             java_lang_Throwable,                       Pre_Link            ) \
    4.15 -  do_klass(Error_klass,                                 java_lang_Error,                           Pre_Link            ) \
    4.16 -  do_klass(ThreadDeath_klass,                           java_lang_ThreadDeath,                     Pre_Link            ) \
    4.17 -  do_klass(Exception_klass,                             java_lang_Exception,                       Pre_Link            ) \
    4.18 -  do_klass(RuntimeException_klass,                      java_lang_RuntimeException,                Pre_Link            ) \
    4.19 -  do_klass(ProtectionDomain_klass,                      java_security_ProtectionDomain,            Pre_Link            ) \
    4.20 -  do_klass(AccessControlContext_klass,                  java_security_AccessControlContext,        Pre_Link            ) \
    4.21 -  do_klass(ClassNotFoundException_klass,                java_lang_ClassNotFoundException,          Pre_Link            ) \
    4.22 -  do_klass(NoClassDefFoundError_klass,                  java_lang_NoClassDefFoundError,            Pre_Link            ) \
    4.23 -  do_klass(LinkageError_klass,                          java_lang_LinkageError,                    Pre_Link            ) \
    4.24 -  do_klass(ClassCastException_klass,                    java_lang_ClassCastException,              Pre_Link            ) \
    4.25 -  do_klass(ArrayStoreException_klass,                   java_lang_ArrayStoreException,             Pre_Link            ) \
    4.26 -  do_klass(VirtualMachineError_klass,                   java_lang_VirtualMachineError,             Pre_Link            ) \
    4.27 -  do_klass(OutOfMemoryError_klass,                      java_lang_OutOfMemoryError,                Pre_Link            ) \
    4.28 -  do_klass(StackOverflowError_klass,                    java_lang_StackOverflowError,              Pre_Link            ) \
    4.29 -  do_klass(IllegalMonitorStateException_klass,          java_lang_IllegalMonitorStateException,    Pre_Link            ) \
    4.30 -  do_klass(Reference_klass,                             java_lang_ref_Reference,                   Pre_Link            ) \
    4.31 +  do_klass(Object_klass,                                java_lang_Object,                          Pre                 ) \
    4.32 +  do_klass(String_klass,                                java_lang_String,                          Pre                 ) \
    4.33 +  do_klass(Class_klass,                                 java_lang_Class,                           Pre                 ) \
    4.34 +  do_klass(Cloneable_klass,                             java_lang_Cloneable,                       Pre                 ) \
    4.35 +  do_klass(ClassLoader_klass,                           java_lang_ClassLoader,                     Pre                 ) \
    4.36 +  do_klass(Serializable_klass,                          java_io_Serializable,                      Pre                 ) \
    4.37 +  do_klass(System_klass,                                java_lang_System,                          Pre                 ) \
    4.38 +  do_klass(Throwable_klass,                             java_lang_Throwable,                       Pre                 ) \
    4.39 +  do_klass(Error_klass,                                 java_lang_Error,                           Pre                 ) \
    4.40 +  do_klass(ThreadDeath_klass,                           java_lang_ThreadDeath,                     Pre                 ) \
    4.41 +  do_klass(Exception_klass,                             java_lang_Exception,                       Pre                 ) \
    4.42 +  do_klass(RuntimeException_klass,                      java_lang_RuntimeException,                Pre                 ) \
    4.43 +  do_klass(ProtectionDomain_klass,                      java_security_ProtectionDomain,            Pre                 ) \
    4.44 +  do_klass(AccessControlContext_klass,                  java_security_AccessControlContext,        Pre                 ) \
    4.45 +  do_klass(ClassNotFoundException_klass,                java_lang_ClassNotFoundException,          Pre                 ) \
    4.46 +  do_klass(NoClassDefFoundError_klass,                  java_lang_NoClassDefFoundError,            Pre                 ) \
    4.47 +  do_klass(LinkageError_klass,                          java_lang_LinkageError,                    Pre                 ) \
    4.48 +  do_klass(ClassCastException_klass,                    java_lang_ClassCastException,              Pre                 ) \
    4.49 +  do_klass(ArrayStoreException_klass,                   java_lang_ArrayStoreException,             Pre                 ) \
    4.50 +  do_klass(VirtualMachineError_klass,                   java_lang_VirtualMachineError,             Pre                 ) \
    4.51 +  do_klass(OutOfMemoryError_klass,                      java_lang_OutOfMemoryError,                Pre                 ) \
    4.52 +  do_klass(StackOverflowError_klass,                    java_lang_StackOverflowError,              Pre                 ) \
    4.53 +  do_klass(IllegalMonitorStateException_klass,          java_lang_IllegalMonitorStateException,    Pre                 ) \
    4.54 +  do_klass(Reference_klass,                             java_lang_ref_Reference,                   Pre                 ) \
    4.55                                                                                                                           \
    4.56    /* Preload ref klasses and set reference types */                                                                      \
    4.57 -  do_klass(SoftReference_klass,                         java_lang_ref_SoftReference,               Pre_Link            ) \
    4.58 -  do_klass(WeakReference_klass,                         java_lang_ref_WeakReference,               Pre_Link            ) \
    4.59 +  do_klass(SoftReference_klass,                         java_lang_ref_SoftReference,               Pre                 ) \
    4.60 +  do_klass(WeakReference_klass,                         java_lang_ref_WeakReference,               Pre                 ) \
    4.61    do_klass(FinalReference_klass,                        java_lang_ref_FinalReference,              Pre                 ) \
    4.62 -  do_klass(PhantomReference_klass,                      java_lang_ref_PhantomReference,            Pre_Link            ) \
    4.63 +  do_klass(PhantomReference_klass,                      java_lang_ref_PhantomReference,            Pre                 ) \
    4.64    do_klass(Finalizer_klass,                             java_lang_ref_Finalizer,                   Pre                 ) \
    4.65                                                                                                                           \
    4.66 -  do_klass(Thread_klass,                                java_lang_Thread,                          Pre_Link            ) \
    4.67 -  do_klass(ThreadGroup_klass,                           java_lang_ThreadGroup,                     Pre_Link            ) \
    4.68 -  do_klass(Properties_klass,                            java_util_Properties,                      Pre_Link            ) \
    4.69 -  do_klass(reflect_AccessibleObject_klass,              java_lang_reflect_AccessibleObject,        Pre_Link            ) \
    4.70 -  do_klass(reflect_Field_klass,                         java_lang_reflect_Field,                   Pre_Link            ) \
    4.71 -  do_klass(reflect_Method_klass,                        java_lang_reflect_Method,                  Pre_Link            ) \
    4.72 -  do_klass(reflect_Constructor_klass,                   java_lang_reflect_Constructor,             Pre_Link            ) \
    4.73 +  do_klass(Thread_klass,                                java_lang_Thread,                          Pre                 ) \
    4.74 +  do_klass(ThreadGroup_klass,                           java_lang_ThreadGroup,                     Pre                 ) \
    4.75 +  do_klass(Properties_klass,                            java_util_Properties,                      Pre                 ) \
    4.76 +  do_klass(reflect_AccessibleObject_klass,              java_lang_reflect_AccessibleObject,        Pre                 ) \
    4.77 +  do_klass(reflect_Field_klass,                         java_lang_reflect_Field,                   Pre                 ) \
    4.78 +  do_klass(reflect_Method_klass,                        java_lang_reflect_Method,                  Pre                 ) \
    4.79 +  do_klass(reflect_Constructor_klass,                   java_lang_reflect_Constructor,             Pre                 ) \
    4.80                                                                                                                           \
    4.81    /* NOTE: needed too early in bootstrapping process to have checks based on JDK version */                              \
    4.82    /* Universe::is_gte_jdk14x_version() is not set up by this point. */                                                   \
    4.83 @@ -145,20 +145,20 @@
    4.84    do_klass(reflect_UnsafeStaticFieldAccessorImpl_klass, sun_reflect_UnsafeStaticFieldAccessorImpl, Opt_Only_JDK15      ) \
    4.85                                                                                                                           \
    4.86    /* support for dynamic typing; it's OK if these are NULL in earlier JDKs */                                            \
    4.87 -  do_klass(MethodHandle_klass,                          java_lang_invoke_MethodHandle,             Pre_Link            ) \
    4.88 -  do_klass(MemberName_klass,                            java_lang_invoke_MemberName,               Pre                 ) \
    4.89 -  do_klass(MethodHandleNatives_klass,                   java_lang_invoke_MethodHandleNatives,      Pre                 ) \
    4.90 +  do_klass(MethodHandle_klass,                          java_lang_invoke_MethodHandle,             Pre_JSR292          ) \
    4.91 +  do_klass(MemberName_klass,                            java_lang_invoke_MemberName,               Pre_JSR292          ) \
    4.92 +  do_klass(MethodHandleNatives_klass,                   java_lang_invoke_MethodHandleNatives,      Pre_JSR292          ) \
    4.93    do_klass(LambdaForm_klass,                            java_lang_invoke_LambdaForm,               Opt                 ) \
    4.94 -  do_klass(MethodType_klass,                            java_lang_invoke_MethodType,               Pre_Link            ) \
    4.95 -  do_klass(BootstrapMethodError_klass,                  java_lang_BootstrapMethodError,            Pre_Link            ) \
    4.96 -  do_klass(CallSite_klass,                              java_lang_invoke_CallSite,                 Pre_Link            ) \
    4.97 -  do_klass(ConstantCallSite_klass,                      java_lang_invoke_ConstantCallSite,         Pre_Link            ) \
    4.98 -  do_klass(MutableCallSite_klass,                       java_lang_invoke_MutableCallSite,          Pre_Link            ) \
    4.99 -  do_klass(VolatileCallSite_klass,                      java_lang_invoke_VolatileCallSite,         Pre_Link            ) \
   4.100 +  do_klass(MethodType_klass,                            java_lang_invoke_MethodType,               Pre_JSR292          ) \
   4.101 +  do_klass(BootstrapMethodError_klass,                  java_lang_BootstrapMethodError,            Pre_JSR292          ) \
   4.102 +  do_klass(CallSite_klass,                              java_lang_invoke_CallSite,                 Pre_JSR292          ) \
   4.103 +  do_klass(ConstantCallSite_klass,                      java_lang_invoke_ConstantCallSite,         Pre_JSR292          ) \
   4.104 +  do_klass(MutableCallSite_klass,                       java_lang_invoke_MutableCallSite,          Pre_JSR292          ) \
   4.105 +  do_klass(VolatileCallSite_klass,                      java_lang_invoke_VolatileCallSite,         Pre_JSR292          ) \
   4.106    /* Note: MethodHandle must be first, and VolatileCallSite last in group */                                             \
   4.107                                                                                                                           \
   4.108 -  do_klass(StringBuffer_klass,                          java_lang_StringBuffer,                    Pre_Link            ) \
   4.109 -  do_klass(StringBuilder_klass,                         java_lang_StringBuilder,                   Pre_Link            ) \
   4.110 +  do_klass(StringBuffer_klass,                          java_lang_StringBuffer,                    Pre                 ) \
   4.111 +  do_klass(StringBuilder_klass,                         java_lang_StringBuilder,                   Pre                 ) \
   4.112                                                                                                                           \
   4.113    /* It's NULL in non-1.4 JDKs. */                                                                                       \
   4.114    do_klass(StackTraceElement_klass,                     java_lang_StackTraceElement,               Opt                 ) \
   4.115 @@ -171,14 +171,14 @@
   4.116    do_klass(PostVMInitHook_klass,                        sun_misc_PostVMInitHook,                   Opt                 ) \
   4.117                                                                                                                           \
   4.118    /* Preload boxing klasses */                                                                                           \
   4.119 -  do_klass(Boolean_klass,                               java_lang_Boolean,                         Pre_Link            ) \
   4.120 -  do_klass(Character_klass,                             java_lang_Character,                       Pre_Link            ) \
   4.121 -  do_klass(Float_klass,                                 java_lang_Float,                           Pre_Link            ) \
   4.122 -  do_klass(Double_klass,                                java_lang_Double,                          Pre_Link            ) \
   4.123 -  do_klass(Byte_klass,                                  java_lang_Byte,                            Pre_Link            ) \
   4.124 -  do_klass(Short_klass,                                 java_lang_Short,                           Pre_Link            ) \
   4.125 -  do_klass(Integer_klass,                               java_lang_Integer,                         Pre_Link            ) \
   4.126 -  do_klass(Long_klass,                                  java_lang_Long,                            Pre_Link            ) \
   4.127 +  do_klass(Boolean_klass,                               java_lang_Boolean,                         Pre                 ) \
   4.128 +  do_klass(Character_klass,                             java_lang_Character,                       Pre                 ) \
   4.129 +  do_klass(Float_klass,                                 java_lang_Float,                           Pre                 ) \
   4.130 +  do_klass(Double_klass,                                java_lang_Double,                          Pre                 ) \
   4.131 +  do_klass(Byte_klass,                                  java_lang_Byte,                            Pre                 ) \
   4.132 +  do_klass(Short_klass,                                 java_lang_Short,                           Pre                 ) \
   4.133 +  do_klass(Integer_klass,                               java_lang_Integer,                         Pre                 ) \
   4.134 +  do_klass(Long_klass,                                  java_lang_Long,                            Pre                 ) \
   4.135    /*end*/
   4.136  
   4.137  
   4.138 @@ -201,7 +201,7 @@
   4.139  
   4.140    enum InitOption {
   4.141      Pre,                        // preloaded; error if not present
   4.142 -    Pre_Link,                   // preloaded; error if not present; link as well-known
   4.143 +    Pre_JSR292,                 // preloaded if EnableInvokeDynamic
   4.144  
   4.145      // Order is significant.  Options before this point require resolve_or_fail.
   4.146      // Options after this point will use resolve_or_null instead.
   4.147 @@ -280,9 +280,6 @@
   4.148                                                 Handle protection_domain,
   4.149                                                 TRAPS);
   4.150  
   4.151 -  // If the given name is known to vmSymbols, return the well-know klass:
   4.152 -  static Klass* find_well_known_klass(Symbol* class_name);
   4.153 -
   4.154    // Lookup an instance or array class that has already been loaded
   4.155    // either into the given class loader, or else into another class
   4.156    // loader that is constrained (via loader constraints) to produce
   4.157 @@ -393,7 +390,7 @@
   4.158    }
   4.159  
   4.160    static Klass* check_klass_Pre(       Klass* k) { return check_klass(k); }
   4.161 -  static Klass* check_klass_Pre_Link(  Klass* k) { return check_klass(k); }
   4.162 +  static Klass* check_klass_Pre_JSR292(Klass* k) { return EnableInvokeDynamic ? check_klass(k) : k; }
   4.163    static Klass* check_klass_Opt(       Klass* k) { return k; }
   4.164    static Klass* check_klass_Opt_Kernel(Klass* k) { return k; } //== Opt
   4.165    static Klass* check_klass_Opt_Only_JDK15(Klass* k) {
   4.166 @@ -413,8 +410,6 @@
   4.167      initialize_wk_klasses_until((WKID) limit, start_id, THREAD);
   4.168    }
   4.169  
   4.170 -  static void check_wk_pre_link_klasses() NOT_DEBUG_RETURN;
   4.171 -
   4.172  public:
   4.173    #define WK_KLASS_DECLARE(name, symbol, option) \
   4.174      static Klass* name() { return check_klass_##option(_well_known_klasses[WK_KLASS_ENUM_NAME(name)]); } \
     5.1 --- a/src/share/vm/prims/methodHandles.cpp	Thu Oct 11 18:21:01 2012 +0200
     5.2 +++ b/src/share/vm/prims/methodHandles.cpp	Thu Oct 11 14:46:20 2012 -0700
     5.3 @@ -563,15 +563,6 @@
     5.4        return Klass::cast(SystemDictionary::Class_klass())->java_mirror();
     5.5      } else if (s == vmSymbols::string_signature()) {
     5.6        return Klass::cast(SystemDictionary::String_klass())->java_mirror();
     5.7 -    } else {
     5.8 -      int len = s->utf8_length();
     5.9 -      if (s->byte_at(0) == 'L' && s->byte_at(len-1) == ';') {
    5.10 -        TempNewSymbol cname = SymbolTable::probe((const char*)&s->bytes()[1], len-2);
    5.11 -        if (cname == NULL)  return NULL;
    5.12 -        Klass* wkk = SystemDictionary::find_well_known_klass(cname);
    5.13 -        if (wkk == NULL)  return NULL;
    5.14 -        return Klass::cast(wkk)->java_mirror();
    5.15 -      }
    5.16      }
    5.17    }
    5.18    return NULL;
     6.1 --- a/src/share/vm/runtime/globals.hpp	Thu Oct 11 18:21:01 2012 +0200
     6.2 +++ b/src/share/vm/runtime/globals.hpp	Thu Oct 11 14:46:20 2012 -0700
     6.3 @@ -1000,9 +1000,6 @@
     6.4    product(bool, ClassUnloading, true,                                       \
     6.5            "Do unloading of classes")                                        \
     6.6                                                                              \
     6.7 -  diagnostic(bool, LinkWellKnownClasses, true,                              \
     6.8 -          "Resolve a well known class as soon as its name is seen")         \
     6.9 -                                                                            \
    6.10    develop(bool, DisableStartThread, false,                                  \
    6.11            "Disable starting of additional Java threads "                    \
    6.12            "(for debugging only)")                                           \

mercurial