Mercurial > hg > truffle
comparison src/share/vm/classfile/systemDictionary.hpp @ 3938:e6b1331a51d2
7086585: make Java field injection more flexible
Reviewed-by: jrose, twisti, kvn, coleenp
author | never |
---|---|
date | Sat, 10 Sep 2011 17:29:02 -0700 |
parents | c26de9aef2ed |
children | 04b9a2566eec b2cd0ee8f778 |
comparison
equal
deleted
inserted
replaced
3937:c565834fb592 | 3938:e6b1331a51d2 |
---|---|
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) \ |
197 | 197 |
198 public: | 198 public: |
199 enum WKID { | 199 enum WKID { |
200 NO_WKID = 0, | 200 NO_WKID = 0, |
201 | 201 |
202 #define WK_KLASS_ENUM(name, ignore_s, ignore_o) WK_KLASS_ENUM_NAME(name), | 202 #define WK_KLASS_ENUM(name, symbol, ignore_o) WK_KLASS_ENUM_NAME(name), WK_KLASS_ENUM_NAME(symbol) = WK_KLASS_ENUM_NAME(name), |
203 WK_KLASSES_DO(WK_KLASS_ENUM) | 203 WK_KLASSES_DO(WK_KLASS_ENUM) |
204 #undef WK_KLASS_ENUM | 204 #undef WK_KLASS_ENUM |
205 | 205 |
206 WKID_LIMIT, | 206 WKID_LIMIT, |
207 | 207 |
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) { |