144 template(reflect_UnsafeStaticFieldAccessorImpl_klass, sun_reflect_UnsafeStaticFieldAccessorImpl, Opt_Only_JDK15) \ |
144 template(reflect_UnsafeStaticFieldAccessorImpl_klass, sun_reflect_UnsafeStaticFieldAccessorImpl, Opt_Only_JDK15) \ |
145 \ |
145 \ |
146 /* support for dynamic typing; it's OK if these are NULL in earlier JDKs */ \ |
146 /* support for dynamic typing; it's OK if these are NULL in earlier JDKs */ \ |
147 template(MethodHandle_klass, java_lang_invoke_MethodHandle, Pre_JSR292) \ |
147 template(MethodHandle_klass, java_lang_invoke_MethodHandle, Pre_JSR292) \ |
148 template(MemberName_klass, java_lang_invoke_MemberName, Pre_JSR292) \ |
148 template(MemberName_klass, java_lang_invoke_MemberName, Pre_JSR292) \ |
149 template(MethodHandleImpl_klass, sun_dyn_MethodHandleImpl, Opt) /* AllowTransitionalJSR292 ONLY */ \ |
|
150 template(MethodHandleNatives_klass, java_lang_invoke_MethodHandleNatives, Pre_JSR292) \ |
149 template(MethodHandleNatives_klass, java_lang_invoke_MethodHandleNatives, Pre_JSR292) \ |
151 template(AdapterMethodHandle_klass, java_lang_invoke_AdapterMethodHandle, Pre_JSR292) \ |
150 template(AdapterMethodHandle_klass, java_lang_invoke_AdapterMethodHandle, Pre_JSR292) \ |
152 template(BoundMethodHandle_klass, java_lang_invoke_BoundMethodHandle, Pre_JSR292) \ |
151 template(BoundMethodHandle_klass, java_lang_invoke_BoundMethodHandle, Pre_JSR292) \ |
153 template(DirectMethodHandle_klass, java_lang_invoke_DirectMethodHandle, Pre_JSR292) \ |
152 template(DirectMethodHandle_klass, java_lang_invoke_DirectMethodHandle, Pre_JSR292) \ |
154 template(MethodType_klass, java_lang_invoke_MethodType, Pre_JSR292) \ |
153 template(MethodType_klass, java_lang_invoke_MethodType, Pre_JSR292) \ |
155 template(MethodTypeForm_klass, java_lang_invoke_MethodTypeForm, Pre_JSR292) \ |
154 template(MethodTypeForm_klass, java_lang_invoke_MethodTypeForm, Pre_JSR292) \ |
156 template(WrongMethodTypeException_klass, java_lang_invoke_WrongMethodTypeException, Pre_JSR292) \ |
155 template(WrongMethodTypeException_klass, java_lang_invoke_WrongMethodTypeException, Pre_JSR292) \ |
157 template(Linkage_klass, java_lang_invoke_Linkage, Opt) /* AllowTransitionalJSR292 ONLY */ \ |
|
158 template(CallSite_klass, java_lang_invoke_CallSite, Pre_JSR292) \ |
156 template(CallSite_klass, java_lang_invoke_CallSite, Pre_JSR292) \ |
159 /* Note: MethodHandle must be first, and CallSite last in group */ \ |
157 /* Note: MethodHandle must be first, and CallSite last in group */ \ |
160 \ |
158 \ |
161 template(StringBuffer_klass, java_lang_StringBuffer, Pre) \ |
159 template(StringBuffer_klass, java_lang_StringBuffer, Pre) \ |
162 template(StringBuilder_klass, java_lang_StringBuilder, Pre) \ |
160 template(StringBuilder_klass, java_lang_StringBuilder, Pre) \ |
420 static void initialize_wk_klasses_through(WKID end_id, WKID &start_id, TRAPS) { |
418 static void initialize_wk_klasses_through(WKID end_id, WKID &start_id, TRAPS) { |
421 int limit = (int)end_id + 1; |
419 int limit = (int)end_id + 1; |
422 initialize_wk_klasses_until((WKID) limit, start_id, THREAD); |
420 initialize_wk_klasses_until((WKID) limit, start_id, THREAD); |
423 } |
421 } |
424 |
422 |
425 static Symbol* find_backup_symbol(Symbol* symbol, const char* from_prefix, const char* to_prefix); |
|
426 |
|
427 public: |
423 public: |
428 #define WK_KLASS_DECLARE(name, ignore_symbol, option) \ |
424 #define WK_KLASS_DECLARE(name, ignore_symbol, option) \ |
429 static klassOop name() { return check_klass_##option(_well_known_klasses[WK_KLASS_ENUM_NAME(name)]); } |
425 static klassOop name() { return check_klass_##option(_well_known_klasses[WK_KLASS_ENUM_NAME(name)]); } |
430 WK_KLASSES_DO(WK_KLASS_DECLARE); |
426 WK_KLASSES_DO(WK_KLASS_DECLARE); |
431 #undef WK_KLASS_DECLARE |
427 #undef WK_KLASS_DECLARE |
442 // methods returning lazily loaded klasses |
438 // methods returning lazily loaded klasses |
443 // The corresponding method to load the class must be called before calling them. |
439 // The corresponding method to load the class must be called before calling them. |
444 static klassOop abstract_ownable_synchronizer_klass() { return check_klass(_abstract_ownable_synchronizer_klass); } |
440 static klassOop abstract_ownable_synchronizer_klass() { return check_klass(_abstract_ownable_synchronizer_klass); } |
445 |
441 |
446 static void load_abstract_ownable_synchronizer_klass(TRAPS); |
442 static void load_abstract_ownable_synchronizer_klass(TRAPS); |
447 |
|
448 static Symbol* find_backup_class_name(Symbol* class_name_symbol); |
|
449 static Symbol* find_backup_signature(Symbol* signature_symbol); |
|
450 |
443 |
451 private: |
444 private: |
452 // Tells whether ClassLoader.loadClassInternal is present |
445 // Tells whether ClassLoader.loadClassInternal is present |
453 static bool has_loadClassInternal() { return _has_loadClassInternal; } |
446 static bool has_loadClassInternal() { return _has_loadClassInternal; } |
454 |
447 |