Mercurial > hg > graal-jvmci-8
comparison src/share/vm/classfile/systemDictionary.hpp @ 6853:d804e148cff8
Merge
author | kvn |
---|---|
date | Fri, 12 Oct 2012 09:22:52 -0700 |
parents | 19eb999cb72c |
children | 4735d2c84362 |
comparison
equal
deleted
inserted
replaced
6842:b9a9ed0f8eeb | 6853:d804e148cff8 |
---|---|
90 // that makes some minor distinctions, like whether the klass | 90 // that makes some minor distinctions, like whether the klass |
91 // is preloaded, optional, release-specific, etc. | 91 // is preloaded, optional, release-specific, etc. |
92 // The order of these definitions is significant; it is the order in which | 92 // The order of these definitions is significant; it is the order in which |
93 // preloading is actually performed by initialize_preloaded_classes. | 93 // preloading is actually performed by initialize_preloaded_classes. |
94 | 94 |
95 #define WK_KLASSES_DO(template) \ | 95 #define WK_KLASSES_DO(do_klass) \ |
96 /* well-known classes */ \ | 96 /* well-known classes */ \ |
97 template(Object_klass, java_lang_Object, Pre) \ | 97 do_klass(Object_klass, java_lang_Object, Pre ) \ |
98 template(String_klass, java_lang_String, Pre) \ | 98 do_klass(String_klass, java_lang_String, Pre ) \ |
99 template(Class_klass, java_lang_Class, Pre) \ | 99 do_klass(Class_klass, java_lang_Class, Pre ) \ |
100 template(Cloneable_klass, java_lang_Cloneable, Pre) \ | 100 do_klass(Cloneable_klass, java_lang_Cloneable, Pre ) \ |
101 template(ClassLoader_klass, java_lang_ClassLoader, Pre) \ | 101 do_klass(ClassLoader_klass, java_lang_ClassLoader, Pre ) \ |
102 template(Serializable_klass, java_io_Serializable, Pre) \ | 102 do_klass(Serializable_klass, java_io_Serializable, Pre ) \ |
103 template(System_klass, java_lang_System, Pre) \ | 103 do_klass(System_klass, java_lang_System, Pre ) \ |
104 template(Throwable_klass, java_lang_Throwable, Pre) \ | 104 do_klass(Throwable_klass, java_lang_Throwable, Pre ) \ |
105 template(Error_klass, java_lang_Error, Pre) \ | 105 do_klass(Error_klass, java_lang_Error, Pre ) \ |
106 template(ThreadDeath_klass, java_lang_ThreadDeath, Pre) \ | 106 do_klass(ThreadDeath_klass, java_lang_ThreadDeath, Pre ) \ |
107 template(Exception_klass, java_lang_Exception, Pre) \ | 107 do_klass(Exception_klass, java_lang_Exception, Pre ) \ |
108 template(RuntimeException_klass, java_lang_RuntimeException, Pre) \ | 108 do_klass(RuntimeException_klass, java_lang_RuntimeException, Pre ) \ |
109 template(ProtectionDomain_klass, java_security_ProtectionDomain, Pre) \ | 109 do_klass(ProtectionDomain_klass, java_security_ProtectionDomain, Pre ) \ |
110 template(AccessControlContext_klass, java_security_AccessControlContext, Pre) \ | 110 do_klass(AccessControlContext_klass, java_security_AccessControlContext, Pre ) \ |
111 template(ClassNotFoundException_klass, java_lang_ClassNotFoundException, Pre) \ | 111 do_klass(ClassNotFoundException_klass, java_lang_ClassNotFoundException, Pre ) \ |
112 template(NoClassDefFoundError_klass, java_lang_NoClassDefFoundError, Pre) \ | 112 do_klass(NoClassDefFoundError_klass, java_lang_NoClassDefFoundError, Pre ) \ |
113 template(LinkageError_klass, java_lang_LinkageError, Pre) \ | 113 do_klass(LinkageError_klass, java_lang_LinkageError, Pre ) \ |
114 template(ClassCastException_klass, java_lang_ClassCastException, Pre) \ | 114 do_klass(ClassCastException_klass, java_lang_ClassCastException, Pre ) \ |
115 template(ArrayStoreException_klass, java_lang_ArrayStoreException, Pre) \ | 115 do_klass(ArrayStoreException_klass, java_lang_ArrayStoreException, Pre ) \ |
116 template(VirtualMachineError_klass, java_lang_VirtualMachineError, Pre) \ | 116 do_klass(VirtualMachineError_klass, java_lang_VirtualMachineError, Pre ) \ |
117 template(OutOfMemoryError_klass, java_lang_OutOfMemoryError, Pre) \ | 117 do_klass(OutOfMemoryError_klass, java_lang_OutOfMemoryError, Pre ) \ |
118 template(StackOverflowError_klass, java_lang_StackOverflowError, Pre) \ | 118 do_klass(StackOverflowError_klass, java_lang_StackOverflowError, Pre ) \ |
119 template(IllegalMonitorStateException_klass, java_lang_IllegalMonitorStateException, Pre) \ | 119 do_klass(IllegalMonitorStateException_klass, java_lang_IllegalMonitorStateException, Pre ) \ |
120 template(Reference_klass, java_lang_ref_Reference, Pre) \ | 120 do_klass(Reference_klass, java_lang_ref_Reference, Pre ) \ |
121 \ | 121 \ |
122 /* Preload ref klasses and set reference types */ \ | 122 /* Preload ref klasses and set reference types */ \ |
123 template(SoftReference_klass, java_lang_ref_SoftReference, Pre) \ | 123 do_klass(SoftReference_klass, java_lang_ref_SoftReference, Pre ) \ |
124 template(WeakReference_klass, java_lang_ref_WeakReference, Pre) \ | 124 do_klass(WeakReference_klass, java_lang_ref_WeakReference, Pre ) \ |
125 template(FinalReference_klass, java_lang_ref_FinalReference, Pre) \ | 125 do_klass(FinalReference_klass, java_lang_ref_FinalReference, Pre ) \ |
126 template(PhantomReference_klass, java_lang_ref_PhantomReference, Pre) \ | 126 do_klass(PhantomReference_klass, java_lang_ref_PhantomReference, Pre ) \ |
127 template(Finalizer_klass, java_lang_ref_Finalizer, Pre) \ | 127 do_klass(Finalizer_klass, java_lang_ref_Finalizer, Pre ) \ |
128 \ | 128 \ |
129 template(Thread_klass, java_lang_Thread, Pre) \ | 129 do_klass(Thread_klass, java_lang_Thread, Pre ) \ |
130 template(ThreadGroup_klass, java_lang_ThreadGroup, Pre) \ | 130 do_klass(ThreadGroup_klass, java_lang_ThreadGroup, Pre ) \ |
131 template(Properties_klass, java_util_Properties, Pre) \ | 131 do_klass(Properties_klass, java_util_Properties, Pre ) \ |
132 template(reflect_AccessibleObject_klass, java_lang_reflect_AccessibleObject, Pre) \ | 132 do_klass(reflect_AccessibleObject_klass, java_lang_reflect_AccessibleObject, Pre ) \ |
133 template(reflect_Field_klass, java_lang_reflect_Field, Pre) \ | 133 do_klass(reflect_Field_klass, java_lang_reflect_Field, Pre ) \ |
134 template(reflect_Method_klass, java_lang_reflect_Method, Pre) \ | 134 do_klass(reflect_Method_klass, java_lang_reflect_Method, Pre ) \ |
135 template(reflect_Constructor_klass, java_lang_reflect_Constructor, Pre) \ | 135 do_klass(reflect_Constructor_klass, java_lang_reflect_Constructor, Pre ) \ |
136 \ | 136 \ |
137 /* NOTE: needed too early in bootstrapping process to have checks based on JDK version */ \ | 137 /* NOTE: needed too early in bootstrapping process to have checks based on JDK version */ \ |
138 /* Universe::is_gte_jdk14x_version() is not set up by this point. */ \ | 138 /* Universe::is_gte_jdk14x_version() is not set up by this point. */ \ |
139 /* It's okay if this turns out to be NULL in non-1.4 JDKs. */ \ | 139 /* It's okay if this turns out to be NULL in non-1.4 JDKs. */ \ |
140 template(reflect_MagicAccessorImpl_klass, sun_reflect_MagicAccessorImpl, Opt) \ | 140 do_klass(reflect_MagicAccessorImpl_klass, sun_reflect_MagicAccessorImpl, Opt ) \ |
141 template(reflect_MethodAccessorImpl_klass, sun_reflect_MethodAccessorImpl, Opt_Only_JDK14NewRef) \ | 141 do_klass(reflect_MethodAccessorImpl_klass, sun_reflect_MethodAccessorImpl, Opt_Only_JDK14NewRef) \ |
142 template(reflect_ConstructorAccessorImpl_klass, sun_reflect_ConstructorAccessorImpl, Opt_Only_JDK14NewRef) \ | 142 do_klass(reflect_ConstructorAccessorImpl_klass, sun_reflect_ConstructorAccessorImpl, Opt_Only_JDK14NewRef) \ |
143 template(reflect_DelegatingClassLoader_klass, sun_reflect_DelegatingClassLoader, Opt) \ | 143 do_klass(reflect_DelegatingClassLoader_klass, sun_reflect_DelegatingClassLoader, Opt ) \ |
144 template(reflect_ConstantPool_klass, sun_reflect_ConstantPool, Opt_Only_JDK15) \ | 144 do_klass(reflect_ConstantPool_klass, sun_reflect_ConstantPool, Opt_Only_JDK15 ) \ |
145 template(reflect_UnsafeStaticFieldAccessorImpl_klass, sun_reflect_UnsafeStaticFieldAccessorImpl, Opt_Only_JDK15) \ | 145 do_klass(reflect_UnsafeStaticFieldAccessorImpl_klass, sun_reflect_UnsafeStaticFieldAccessorImpl, Opt_Only_JDK15 ) \ |
146 \ | 146 \ |
147 /* support for dynamic typing; it's OK if these are NULL in earlier JDKs */ \ | 147 /* support for dynamic typing; it's OK if these are NULL in earlier JDKs */ \ |
148 template(MethodHandle_klass, java_lang_invoke_MethodHandle, Pre_JSR292) \ | 148 do_klass(MethodHandle_klass, java_lang_invoke_MethodHandle, Pre_JSR292 ) \ |
149 template(MemberName_klass, java_lang_invoke_MemberName, Pre_JSR292) \ | 149 do_klass(MemberName_klass, java_lang_invoke_MemberName, Pre_JSR292 ) \ |
150 template(MethodHandleNatives_klass, java_lang_invoke_MethodHandleNatives, Pre_JSR292) \ | 150 do_klass(MethodHandleNatives_klass, java_lang_invoke_MethodHandleNatives, Pre_JSR292 ) \ |
151 template(LambdaForm_klass, java_lang_invoke_LambdaForm, Opt) \ | 151 do_klass(LambdaForm_klass, java_lang_invoke_LambdaForm, Opt ) \ |
152 template(MethodType_klass, java_lang_invoke_MethodType, Pre_JSR292) \ | 152 do_klass(MethodType_klass, java_lang_invoke_MethodType, Pre_JSR292 ) \ |
153 template(BootstrapMethodError_klass, java_lang_BootstrapMethodError, Pre_JSR292) \ | 153 do_klass(BootstrapMethodError_klass, java_lang_BootstrapMethodError, Pre_JSR292 ) \ |
154 template(CallSite_klass, java_lang_invoke_CallSite, Pre_JSR292) \ | 154 do_klass(CallSite_klass, java_lang_invoke_CallSite, Pre_JSR292 ) \ |
155 template(ConstantCallSite_klass, java_lang_invoke_ConstantCallSite, Pre_JSR292) \ | 155 do_klass(ConstantCallSite_klass, java_lang_invoke_ConstantCallSite, Pre_JSR292 ) \ |
156 template(MutableCallSite_klass, java_lang_invoke_MutableCallSite, Pre_JSR292) \ | 156 do_klass(MutableCallSite_klass, java_lang_invoke_MutableCallSite, Pre_JSR292 ) \ |
157 template(VolatileCallSite_klass, java_lang_invoke_VolatileCallSite, Pre_JSR292) \ | 157 do_klass(VolatileCallSite_klass, java_lang_invoke_VolatileCallSite, Pre_JSR292 ) \ |
158 /* Note: MethodHandle must be first, and VolatileCallSite last in group */ \ | 158 /* Note: MethodHandle must be first, and VolatileCallSite last in group */ \ |
159 \ | 159 \ |
160 template(StringBuffer_klass, java_lang_StringBuffer, Pre) \ | 160 do_klass(StringBuffer_klass, java_lang_StringBuffer, Pre ) \ |
161 template(StringBuilder_klass, java_lang_StringBuilder, Pre) \ | 161 do_klass(StringBuilder_klass, java_lang_StringBuilder, Pre ) \ |
162 \ | 162 \ |
163 /* It's NULL in non-1.4 JDKs. */ \ | 163 /* It's NULL in non-1.4 JDKs. */ \ |
164 template(StackTraceElement_klass, java_lang_StackTraceElement, Opt) \ | 164 do_klass(StackTraceElement_klass, java_lang_StackTraceElement, Opt ) \ |
165 /* Universe::is_gte_jdk14x_version() is not set up by this point. */ \ | 165 /* Universe::is_gte_jdk14x_version() is not set up by this point. */ \ |
166 /* It's okay if this turns out to be NULL in non-1.4 JDKs. */ \ | 166 /* It's okay if this turns out to be NULL in non-1.4 JDKs. */ \ |
167 template(nio_Buffer_klass, java_nio_Buffer, Opt) \ | 167 do_klass(nio_Buffer_klass, java_nio_Buffer, Opt ) \ |
168 \ | 168 \ |
169 template(DownloadManager_klass, sun_jkernel_DownloadManager, Opt_Kernel) \ | 169 do_klass(DownloadManager_klass, sun_jkernel_DownloadManager, Opt_Kernel ) \ |
170 \ | 170 \ |
171 template(PostVMInitHook_klass, sun_misc_PostVMInitHook, Opt) \ | 171 do_klass(PostVMInitHook_klass, sun_misc_PostVMInitHook, Opt ) \ |
172 \ | 172 \ |
173 /* Preload boxing klasses */ \ | 173 /* Preload boxing klasses */ \ |
174 template(Boolean_klass, java_lang_Boolean, Pre) \ | 174 do_klass(Boolean_klass, java_lang_Boolean, Pre ) \ |
175 template(Character_klass, java_lang_Character, Pre) \ | 175 do_klass(Character_klass, java_lang_Character, Pre ) \ |
176 template(Float_klass, java_lang_Float, Pre) \ | 176 do_klass(Float_klass, java_lang_Float, Pre ) \ |
177 template(Double_klass, java_lang_Double, Pre) \ | 177 do_klass(Double_klass, java_lang_Double, Pre ) \ |
178 template(Byte_klass, java_lang_Byte, Pre) \ | 178 do_klass(Byte_klass, java_lang_Byte, Pre ) \ |
179 template(Short_klass, java_lang_Short, Pre) \ | 179 do_klass(Short_klass, java_lang_Short, Pre ) \ |
180 template(Integer_klass, java_lang_Integer, Pre) \ | 180 do_klass(Integer_klass, java_lang_Integer, Pre ) \ |
181 template(Long_klass, java_lang_Long, Pre) \ | 181 do_klass(Long_klass, java_lang_Long, Pre ) \ |
182 /*end*/ | 182 /*end*/ |
183 | 183 |
184 | 184 |
185 class SystemDictionary : AllStatic { | 185 class SystemDictionary : AllStatic { |
186 friend class VMStructs; | 186 friend class VMStructs; |
277 // If not found NULL is returned. | 277 // If not found NULL is returned. |
278 static Klass* find_instance_or_array_klass(Symbol* class_name, | 278 static Klass* find_instance_or_array_klass(Symbol* class_name, |
279 Handle class_loader, | 279 Handle class_loader, |
280 Handle protection_domain, | 280 Handle protection_domain, |
281 TRAPS); | 281 TRAPS); |
282 | |
283 // If the given name is known to vmSymbols, return the well-know klass: | |
284 static Klass* find_well_known_klass(Symbol* class_name); | |
285 | 282 |
286 // Lookup an instance or array class that has already been loaded | 283 // Lookup an instance or array class that has already been loaded |
287 // either into the given class loader, or else into another class | 284 // either into the given class loader, or else into another class |
288 // loader that is constrained (via loader constraints) to produce | 285 // loader that is constrained (via loader constraints) to produce |
289 // a consistent class. Do not take protection domains into account. | 286 // a consistent class. Do not take protection domains into account. |
390 static Klass* check_klass(Klass* k) { | 387 static Klass* check_klass(Klass* k) { |
391 assert(k != NULL, "preloaded klass not initialized"); | 388 assert(k != NULL, "preloaded klass not initialized"); |
392 return k; | 389 return k; |
393 } | 390 } |
394 | 391 |
395 static Klass* check_klass_Pre(Klass* k) { return check_klass(k); } | 392 static Klass* check_klass_Pre( Klass* k) { return check_klass(k); } |
396 static Klass* check_klass_Pre_JSR292(Klass* k) { return EnableInvokeDynamic ? check_klass(k) : k; } | 393 static Klass* check_klass_Pre_JSR292(Klass* k) { return EnableInvokeDynamic ? check_klass(k) : k; } |
397 static Klass* check_klass_Opt(Klass* k) { return k; } | 394 static Klass* check_klass_Opt( Klass* k) { return k; } |
398 static Klass* check_klass_Opt_Kernel(Klass* k) { return k; } //== Opt | 395 static Klass* check_klass_Opt_Kernel(Klass* k) { return k; } //== Opt |
399 static Klass* check_klass_Opt_Only_JDK15(Klass* k) { | 396 static Klass* check_klass_Opt_Only_JDK15(Klass* k) { |
400 assert(JDK_Version::is_gte_jdk15x_version(), "JDK 1.5 only"); | 397 assert(JDK_Version::is_gte_jdk15x_version(), "JDK 1.5 only"); |
401 return k; | 398 return k; |
402 } | 399 } |