131 template(reflect_AccessibleObject_klass, java_lang_reflect_AccessibleObject, Pre) \ |
131 template(reflect_AccessibleObject_klass, java_lang_reflect_AccessibleObject, Pre) \ |
132 template(reflect_Field_klass, java_lang_reflect_Field, Pre) \ |
132 template(reflect_Field_klass, java_lang_reflect_Field, Pre) \ |
133 template(reflect_Method_klass, java_lang_reflect_Method, Pre) \ |
133 template(reflect_Method_klass, java_lang_reflect_Method, Pre) \ |
134 template(reflect_Constructor_klass, java_lang_reflect_Constructor, Pre) \ |
134 template(reflect_Constructor_klass, java_lang_reflect_Constructor, Pre) \ |
135 \ |
135 \ |
136 /* NOTE: needed too early in bootstrapping process to have checks based on JDK version */ \ |
136 /* NOTE: needed too early in bootstrapping process to have checks based on JDK version */ \ |
137 /* Universe::is_gte_jdk14x_version() is not set up by this point. */ \ |
137 /* Universe::is_gte_jdk14x_version() is not set up by this point. */ \ |
138 /* It's okay if this turns out to be NULL in non-1.4 JDKs. */ \ |
138 /* It's okay if this turns out to be NULL in non-1.4 JDKs. */ \ |
139 template(reflect_MagicAccessorImpl_klass, sun_reflect_MagicAccessorImpl, Opt) \ |
139 template(reflect_MagicAccessorImpl_klass, sun_reflect_MagicAccessorImpl, Opt) \ |
140 template(reflect_MethodAccessorImpl_klass, sun_reflect_MethodAccessorImpl, Opt_Only_JDK14NewRef) \ |
140 template(reflect_MethodAccessorImpl_klass, sun_reflect_MethodAccessorImpl, Opt_Only_JDK14NewRef) \ |
141 template(reflect_ConstructorAccessorImpl_klass, sun_reflect_ConstructorAccessorImpl, Opt_Only_JDK14NewRef) \ |
141 template(reflect_ConstructorAccessorImpl_klass, sun_reflect_ConstructorAccessorImpl, Opt_Only_JDK14NewRef) \ |
142 template(reflect_DelegatingClassLoader_klass, sun_reflect_DelegatingClassLoader, Opt) \ |
142 template(reflect_DelegatingClassLoader_klass, sun_reflect_DelegatingClassLoader, Opt) \ |
143 template(reflect_ConstantPool_klass, sun_reflect_ConstantPool, Opt_Only_JDK15) \ |
143 template(reflect_ConstantPool_klass, sun_reflect_ConstantPool, Opt_Only_JDK15) \ |
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(MethodHandleNatives_klass, java_lang_invoke_MethodHandleNatives, Pre_JSR292) \ |
149 template(MethodHandleNatives_klass, java_lang_invoke_MethodHandleNatives, Pre_JSR292) \ |
166 \ |
166 \ |
167 /* It's NULL in non-1.4 JDKs. */ \ |
167 /* It's NULL in non-1.4 JDKs. */ \ |
168 template(StackTraceElement_klass, java_lang_StackTraceElement, Opt) \ |
168 template(StackTraceElement_klass, java_lang_StackTraceElement, Opt) \ |
169 /* Universe::is_gte_jdk14x_version() is not set up by this point. */ \ |
169 /* Universe::is_gte_jdk14x_version() is not set up by this point. */ \ |
170 /* It's okay if this turns out to be NULL in non-1.4 JDKs. */ \ |
170 /* It's okay if this turns out to be NULL in non-1.4 JDKs. */ \ |
171 template(java_nio_Buffer_klass, java_nio_Buffer, Opt) \ |
171 template(nio_Buffer_klass, java_nio_Buffer, Opt) \ |
172 \ |
172 \ |
173 /* If this class isn't present, it won't be referenced. */ \ |
173 /* If this class isn't present, it won't be referenced. */ \ |
174 template(sun_misc_AtomicLongCSImpl_klass, sun_misc_AtomicLongCSImpl, Opt) \ |
174 template(AtomicLongCSImpl_klass, sun_misc_AtomicLongCSImpl, Opt) \ |
175 \ |
175 \ |
176 template(sun_jkernel_DownloadManager_klass, sun_jkernel_DownloadManager, Opt_Kernel) \ |
176 template(DownloadManager_klass, sun_jkernel_DownloadManager, Opt_Kernel) \ |
177 \ |
177 \ |
178 template(sun_misc_PostVMInitHook_klass, sun_misc_PostVMInitHook, Opt) \ |
178 template(PostVMInitHook_klass, sun_misc_PostVMInitHook, Opt) \ |
179 \ |
179 \ |
180 /* Preload boxing klasses */ \ |
180 /* Preload boxing klasses */ \ |
181 template(Boolean_klass, java_lang_Boolean, Pre) \ |
181 template(Boolean_klass, java_lang_Boolean, Pre) \ |
182 template(Character_klass, java_lang_Character, Pre) \ |
182 template(Character_klass, java_lang_Character, Pre) \ |
183 template(Float_klass, java_lang_Float, Pre) \ |
183 template(Float_klass, java_lang_Float, Pre) \ |
424 int limit = (int)end_id + 1; |
424 int limit = (int)end_id + 1; |
425 initialize_wk_klasses_until((WKID) limit, start_id, THREAD); |
425 initialize_wk_klasses_until((WKID) limit, start_id, THREAD); |
426 } |
426 } |
427 |
427 |
428 public: |
428 public: |
429 #define WK_KLASS_DECLARE(name, ignore_symbol, option) \ |
429 #define WK_KLASS_DECLARE(name, symbol, option) \ |
430 static klassOop name() { return check_klass_##option(_well_known_klasses[WK_KLASS_ENUM_NAME(name)]); } |
430 static klassOop name() { return check_klass_##option(_well_known_klasses[WK_KLASS_ENUM_NAME(name)]); } |
431 WK_KLASSES_DO(WK_KLASS_DECLARE); |
431 WK_KLASSES_DO(WK_KLASS_DECLARE); |
432 #undef WK_KLASS_DECLARE |
432 #undef WK_KLASS_DECLARE |
|
433 |
|
434 static klassOop well_known_klass(WKID id) { |
|
435 assert(id >= (int)FIRST_WKID && id < (int)WKID_LIMIT, "oob"); |
|
436 return _well_known_klasses[id]; |
|
437 } |
433 |
438 |
434 // Local definition for direct access to the private array: |
439 // Local definition for direct access to the private array: |
435 #define WK_KLASS(name) _well_known_klasses[SystemDictionary::WK_KLASS_ENUM_NAME(name)] |
440 #define WK_KLASS(name) _well_known_klasses[SystemDictionary::WK_KLASS_ENUM_NAME(name)] |
436 |
441 |
437 static klassOop box_klass(BasicType t) { |
442 static klassOop box_klass(BasicType t) { |