Mercurial > hg > graal-jvmci-8
comparison src/share/vm/classfile/systemDictionary.hpp @ 16395:ad431bf0de07
added support to load classes from graal.jar with a separate class loader
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 03 Jul 2014 16:30:28 +0200 |
parents | 66a9286203a2 |
children | a7d9b88ecd68 |
comparison
equal
deleted
inserted
replaced
16394:0dd27c6472d7 | 16395:ad431bf0de07 |
---|---|
182 do_klass(Short_klass, java_lang_Short, Pre ) \ | 182 do_klass(Short_klass, java_lang_Short, Pre ) \ |
183 do_klass(Integer_klass, java_lang_Integer, Pre ) \ | 183 do_klass(Integer_klass, java_lang_Integer, Pre ) \ |
184 do_klass(Long_klass, java_lang_Long, Pre ) \ | 184 do_klass(Long_klass, java_lang_Long, Pre ) \ |
185 \ | 185 \ |
186 /* Support for Graal */ \ | 186 /* Support for Graal */ \ |
187 do_klass(CompilerThread_klass, com_oracle_graal_compiler_CompilerThread, Opt) \ | 187 do_klass(BitSet_klass, java_util_BitSet, Opt ) \ |
188 do_klass(BitSet_klass, java_util_BitSet, Opt) \ | 188 /* Graal classes */ \ |
189 /* graal.graph */ \ | 189 GRAAL_ONLY(do_klass(CompilerThread_klass, com_oracle_graal_compiler_CompilerThread, Graal)) \ |
190 do_klass(Node_klass, com_oracle_graal_graph_Node, Opt) \ | 190 GRAAL_ONLY(do_klass(Node_klass, com_oracle_graal_graph_Node, Graal)) \ |
191 do_klass(NodeClass_klass, com_oracle_graal_graph_NodeClass, Opt) \ | 191 GRAAL_ONLY(do_klass(NodeClass_klass, com_oracle_graal_graph_NodeClass, Graal)) \ |
192 /* graal.hotspot */ \ | 192 GRAAL_ONLY(do_klass(HotSpotCompiledCode_klass, com_oracle_graal_hotspot_HotSpotCompiledCode, Graal)) \ |
193 do_klass(HotSpotCompiledCode_klass, com_oracle_graal_hotspot_HotSpotCompiledCode, Opt) \ | 193 GRAAL_ONLY(do_klass(HotSpotCompiledCode_Comment_klass, com_oracle_graal_hotspot_HotSpotCompiledCode_Comment, Graal)) \ |
194 do_klass(HotSpotCompiledCode_Comment_klass, com_oracle_graal_hotspot_HotSpotCompiledCode_Comment, Opt) \ | 194 GRAAL_ONLY(do_klass(HotSpotCompiledNmethod_klass, com_oracle_graal_hotspot_HotSpotCompiledNmethod, Graal)) \ |
195 do_klass(HotSpotCompiledNmethod_klass, com_oracle_graal_hotspot_HotSpotCompiledNmethod, Opt) \ | 195 GRAAL_ONLY(do_klass(HotSpotCompiledRuntimeStub_klass, com_oracle_graal_hotspot_HotSpotCompiledRuntimeStub, Graal)) \ |
196 do_klass(HotSpotCompiledRuntimeStub_klass, com_oracle_graal_hotspot_HotSpotCompiledRuntimeStub, Opt) \ | 196 GRAAL_ONLY(do_klass(HotSpotForeignCallLinkage_klass, com_oracle_graal_hotspot_HotSpotForeignCallLinkage, Graal)) \ |
197 do_klass(HotSpotForeignCallLinkage_klass, com_oracle_graal_hotspot_HotSpotForeignCallLinkage, Opt) \ | 197 GRAAL_ONLY(do_klass(HotSpotReferenceMap_klass, com_oracle_graal_hotspot_HotSpotReferenceMap, Graal)) \ |
198 do_klass(HotSpotReferenceMap_klass, com_oracle_graal_hotspot_HotSpotReferenceMap, Opt) \ | 198 GRAAL_ONLY(do_klass(DataSection_klass, com_oracle_graal_hotspot_data_DataSection, Graal)) \ |
199 do_klass(DataSection_klass, com_oracle_graal_hotspot_data_DataSection, Opt) \ | 199 GRAAL_ONLY(do_klass(DataSectionReference_klass, com_oracle_graal_hotspot_data_DataSectionReference, Graal)) \ |
200 do_klass(DataSectionReference_klass, com_oracle_graal_hotspot_data_DataSectionReference, Opt) \ | 200 GRAAL_ONLY(do_klass(MetaspaceData_klass, com_oracle_graal_hotspot_data_MetaspaceData, Graal)) \ |
201 do_klass(MetaspaceData_klass, com_oracle_graal_hotspot_data_MetaspaceData, Opt) \ | 201 GRAAL_ONLY(do_klass(OopData_klass, com_oracle_graal_hotspot_data_OopData, Graal)) \ |
202 do_klass(OopData_klass, com_oracle_graal_hotspot_data_OopData, Opt) \ | 202 GRAAL_ONLY(do_klass(HotSpotInstalledCode_klass, com_oracle_graal_hotspot_meta_HotSpotInstalledCode, Graal)) \ |
203 do_klass(HotSpotCodeInfo_klass, com_oracle_graal_hotspot_meta_HotSpotCodeInfo, Opt) \ | 203 GRAAL_ONLY(do_klass(HotSpotNmethod_klass, com_oracle_graal_hotspot_meta_HotSpotNmethod, Graal)) \ |
204 do_klass(HotSpotInstalledCode_klass, com_oracle_graal_hotspot_meta_HotSpotInstalledCode, Opt) \ | 204 GRAAL_ONLY(do_klass(HotSpotResolvedJavaMethod_klass, com_oracle_graal_hotspot_meta_HotSpotResolvedJavaMethod, Graal)) \ |
205 do_klass(HotSpotNmethod_klass, com_oracle_graal_hotspot_meta_HotSpotNmethod, Opt) \ | 205 GRAAL_ONLY(do_klass(HotSpotResolvedObjectType_klass, com_oracle_graal_hotspot_meta_HotSpotResolvedObjectType, Graal)) \ |
206 do_klass(HotSpotResolvedJavaMethod_klass, com_oracle_graal_hotspot_meta_HotSpotResolvedJavaMethod, Opt) \ | 206 GRAAL_ONLY(do_klass(HotSpotMonitorValue_klass, com_oracle_graal_hotspot_meta_HotSpotMonitorValue, Graal)) \ |
207 do_klass(HotSpotResolvedObjectType_klass, com_oracle_graal_hotspot_meta_HotSpotResolvedObjectType, Opt) \ | 207 GRAAL_ONLY(do_klass(HotSpotObjectConstant_klass, com_oracle_graal_hotspot_meta_HotSpotObjectConstant, Graal)) \ |
208 do_klass(HotSpotMonitorValue_klass, com_oracle_graal_hotspot_meta_HotSpotMonitorValue, Opt) \ | 208 GRAAL_ONLY(do_klass(HotSpotMetaspaceConstant_klass, com_oracle_graal_hotspot_meta_HotSpotMetaspaceConstant, Graal)) \ |
209 do_klass(HotSpotObjectConstant_klass, com_oracle_graal_hotspot_meta_HotSpotObjectConstant, Opt) \ | 209 GRAAL_ONLY(do_klass(HotSpotStackFrameReference_klass, com_oracle_graal_hotspot_HotSpotStackFrameReference, Graal)) \ |
210 do_klass(HotSpotMetaspaceConstant_klass, com_oracle_graal_hotspot_meta_HotSpotMetaspaceConstant, Opt) \ | 210 GRAAL_ONLY(do_klass(CompilationTask_klass, com_oracle_graal_hotspot_CompilationTask, Graal)) \ |
211 do_klass(HotSpotStackFrameReference_klass, com_oracle_graal_hotspot_HotSpotStackFrameReference, Opt) \ | 211 GRAAL_ONLY(do_klass(Assumptions_klass, com_oracle_graal_api_code_Assumptions, Graal)) \ |
212 do_klass(CompilationTask_klass, com_oracle_graal_hotspot_CompilationTask, Opt) \ | 212 GRAAL_ONLY(do_klass(Assumptions_ConcreteMethod_klass, com_oracle_graal_api_code_Assumptions_ConcreteMethod, Graal)) \ |
213 /* graal.api.code */ \ | 213 GRAAL_ONLY(do_klass(Assumptions_NoFinalizableSubclass_klass, com_oracle_graal_api_code_Assumptions_NoFinalizableSubclass, Graal))\ |
214 do_klass(Assumptions_klass, com_oracle_graal_api_code_Assumptions, Opt) \ | 214 GRAAL_ONLY(do_klass(Assumptions_ConcreteSubtype_klass, com_oracle_graal_api_code_Assumptions_ConcreteSubtype, Graal)) \ |
215 do_klass(Assumptions_ConcreteMethod_klass, com_oracle_graal_api_code_Assumptions_ConcreteMethod, Opt) \ | 215 GRAAL_ONLY(do_klass(Assumptions_MethodContents_klass, com_oracle_graal_api_code_Assumptions_MethodContents, Graal)) \ |
216 do_klass(Assumptions_NoFinalizableSubclass_klass, com_oracle_graal_api_code_Assumptions_NoFinalizableSubclass, Opt) \ | 216 GRAAL_ONLY(do_klass(Assumptions_CallSiteTargetValue_klass, com_oracle_graal_api_code_Assumptions_CallSiteTargetValue, Graal)) \ |
217 do_klass(Assumptions_ConcreteSubtype_klass, com_oracle_graal_api_code_Assumptions_ConcreteSubtype, Opt) \ | 217 GRAAL_ONLY(do_klass(BytecodePosition_klass, com_oracle_graal_api_code_BytecodePosition, Graal)) \ |
218 do_klass(Assumptions_MethodContents_klass, com_oracle_graal_api_code_Assumptions_MethodContents, Opt) \ | 218 GRAAL_ONLY(do_klass(DebugInfo_klass, com_oracle_graal_api_code_DebugInfo, Graal)) \ |
219 do_klass(Assumptions_CallSiteTargetValue_klass, com_oracle_graal_api_code_Assumptions_CallSiteTargetValue, Opt) \ | 219 GRAAL_ONLY(do_klass(RegisterSaveLayout_klass, com_oracle_graal_api_code_RegisterSaveLayout, Graal)) \ |
220 do_klass(BytecodePosition_klass, com_oracle_graal_api_code_BytecodePosition, Opt) \ | 220 GRAAL_ONLY(do_klass(BytecodeFrame_klass, com_oracle_graal_api_code_BytecodeFrame, Graal)) \ |
221 do_klass(DebugInfo_klass, com_oracle_graal_api_code_DebugInfo, Opt) \ | 221 GRAAL_ONLY(do_klass(CompilationResult_klass, com_oracle_graal_api_code_CompilationResult, Graal)) \ |
222 do_klass(RegisterSaveLayout_klass, com_oracle_graal_api_code_RegisterSaveLayout, Opt) \ | 222 GRAAL_ONLY(do_klass(CompilationResult_Call_klass, com_oracle_graal_api_code_CompilationResult_Call, Graal)) \ |
223 do_klass(BytecodeFrame_klass, com_oracle_graal_api_code_BytecodeFrame, Opt) \ | 223 GRAAL_ONLY(do_klass(CompilationResult_DataPatch_klass, com_oracle_graal_api_code_CompilationResult_DataPatch, Graal)) \ |
224 do_klass(CompilationResult_klass, com_oracle_graal_api_code_CompilationResult, Opt) \ | 224 GRAAL_ONLY(do_klass(CompilationResult_ExceptionHandler_klass, com_oracle_graal_api_code_CompilationResult_ExceptionHandler, Graal))\ |
225 do_klass(CompilationResult_Call_klass, com_oracle_graal_api_code_CompilationResult_Call, Opt) \ | 225 GRAAL_ONLY(do_klass(CompilationResult_Mark_klass, com_oracle_graal_api_code_CompilationResult_Mark, Graal)) \ |
226 do_klass(CompilationResult_DataPatch_klass, com_oracle_graal_api_code_CompilationResult_DataPatch, Opt) \ | 226 GRAAL_ONLY(do_klass(CompilationResult_Infopoint_klass, com_oracle_graal_api_code_CompilationResult_Infopoint, Graal)) \ |
227 do_klass(CompilationResult_ExceptionHandler_klass, com_oracle_graal_api_code_CompilationResult_ExceptionHandler, Opt) \ | 227 GRAAL_ONLY(do_klass(CompilationResult_Site_klass, com_oracle_graal_api_code_CompilationResult_Site, Graal)) \ |
228 do_klass(CompilationResult_Mark_klass, com_oracle_graal_api_code_CompilationResult_Mark, Opt) \ | 228 GRAAL_ONLY(do_klass(ExternalCompilationResult_klass, com_oracle_graal_gpu_ExternalCompilationResult, Graal)) \ |
229 do_klass(CompilationResult_Infopoint_klass, com_oracle_graal_api_code_CompilationResult_Infopoint, Opt) \ | 229 GRAAL_ONLY(do_klass(InfopointReason_klass, com_oracle_graal_api_code_InfopointReason, Graal)) \ |
230 do_klass(CompilationResult_Site_klass, com_oracle_graal_api_code_CompilationResult_Site, Opt) \ | 230 GRAAL_ONLY(do_klass(InstalledCode_klass, com_oracle_graal_api_code_InstalledCode, Graal)) \ |
231 do_klass(ExternalCompilationResult_klass, com_oracle_graal_gpu_ExternalCompilationResult, Opt) \ | 231 GRAAL_ONLY(do_klass(code_Register_klass, com_oracle_graal_api_code_Register, Graal)) \ |
232 do_klass(InfopointReason_klass, com_oracle_graal_api_code_InfopointReason, Opt) \ | 232 GRAAL_ONLY(do_klass(RegisterValue_klass, com_oracle_graal_api_code_RegisterValue, Graal)) \ |
233 do_klass(InstalledCode_klass, com_oracle_graal_api_code_InstalledCode, Opt) \ | 233 GRAAL_ONLY(do_klass(StackSlot_klass, com_oracle_graal_api_code_StackSlot, Graal)) \ |
234 do_klass(code_Register_klass, com_oracle_graal_api_code_Register, Opt) \ | 234 GRAAL_ONLY(do_klass(VirtualObject_klass, com_oracle_graal_api_code_VirtualObject, Graal)) \ |
235 do_klass(RegisterValue_klass, com_oracle_graal_api_code_RegisterValue, Opt) \ | 235 GRAAL_ONLY(do_klass(SpeculationLog_klass, com_oracle_graal_api_code_SpeculationLog, Graal)) \ |
236 do_klass(StackSlot_klass, com_oracle_graal_api_code_StackSlot, Opt) \ | 236 GRAAL_ONLY(do_klass(Constant_klass, com_oracle_graal_api_meta_Constant, Graal)) \ |
237 do_klass(VirtualObject_klass, com_oracle_graal_api_code_VirtualObject, Opt) \ | 237 GRAAL_ONLY(do_klass(PrimitiveConstant_klass, com_oracle_graal_api_meta_PrimitiveConstant, Graal)) \ |
238 do_klass(SpeculationLog_klass, com_oracle_graal_api_code_SpeculationLog, Opt) \ | 238 GRAAL_ONLY(do_klass(NullConstant_klass, com_oracle_graal_api_meta_NullConstant, Graal)) \ |
239 /* graal.api.meta */ \ | 239 GRAAL_ONLY(do_klass(ExceptionHandler_klass, com_oracle_graal_api_meta_ExceptionHandler, Graal)) \ |
240 do_klass(Constant_klass, com_oracle_graal_api_meta_Constant, Opt) \ | 240 GRAAL_ONLY(do_klass(Kind_klass, com_oracle_graal_api_meta_Kind, Graal)) \ |
241 do_klass(PrimitiveConstant_klass, com_oracle_graal_api_meta_PrimitiveConstant, Opt) \ | 241 GRAAL_ONLY(do_klass(JavaMethod_klass, com_oracle_graal_api_meta_JavaMethod, Graal)) \ |
242 do_klass(NullConstant_klass, com_oracle_graal_api_meta_NullConstant, Opt) \ | 242 GRAAL_ONLY(do_klass(JavaType_klass, com_oracle_graal_api_meta_JavaType, Graal)) \ |
243 do_klass(ExceptionHandler_klass, com_oracle_graal_api_meta_ExceptionHandler, Opt) \ | 243 GRAAL_ONLY(do_klass(Value_klass, com_oracle_graal_api_meta_Value, Graal)) \ |
244 do_klass(Kind_klass, com_oracle_graal_api_meta_Kind, Opt) \ | |
245 do_klass(JavaMethod_klass, com_oracle_graal_api_meta_JavaMethod, Opt) \ | |
246 do_klass(JavaType_klass, com_oracle_graal_api_meta_JavaType, Opt) \ | |
247 do_klass(Value_klass, com_oracle_graal_api_meta_Value, Opt) \ | |
248 | 244 |
249 /*end*/ | 245 /*end*/ |
250 | 246 |
251 | 247 |
252 class SystemDictionary : AllStatic { | 248 class SystemDictionary : AllStatic { |
261 WK_KLASSES_DO(WK_KLASS_ENUM) | 257 WK_KLASSES_DO(WK_KLASS_ENUM) |
262 #undef WK_KLASS_ENUM | 258 #undef WK_KLASS_ENUM |
263 | 259 |
264 WKID_LIMIT, | 260 WKID_LIMIT, |
265 | 261 |
262 #ifdef GRAAL | |
263 FIRST_GRAAL_WKID = WK_KLASS_ENUM_NAME(CompilerThread_klass), | |
264 LAST_GRAAL_WKID = WK_KLASS_ENUM_NAME(Value_klass), | |
265 #endif | |
266 | |
266 FIRST_WKID = NO_WKID + 1 | 267 FIRST_WKID = NO_WKID + 1 |
267 }; | 268 }; |
268 | 269 |
269 enum InitOption { | 270 enum InitOption { |
270 Pre, // preloaded; error if not present | 271 Pre, // preloaded; error if not present |
274 // Options after this point will use resolve_or_null instead. | 275 // Options after this point will use resolve_or_null instead. |
275 | 276 |
276 Opt, // preload tried; NULL if not present | 277 Opt, // preload tried; NULL if not present |
277 Opt_Only_JDK14NewRef, // preload tried; use only with NewReflection | 278 Opt_Only_JDK14NewRef, // preload tried; use only with NewReflection |
278 Opt_Only_JDK15, // preload tried; use only with JDK1.5+ | 279 Opt_Only_JDK15, // preload tried; use only with JDK1.5+ |
280 #ifdef GRAAL | |
281 Graal, // preload tried; error if not present, use only with GRAAL | |
282 #endif | |
279 OPTION_LIMIT, | 283 OPTION_LIMIT, |
280 CEIL_LG_OPTION_LIMIT = 4 // OPTION_LIMIT <= (1<<CEIL_LG_OPTION_LIMIT) | 284 CEIL_LG_OPTION_LIMIT = 4 // OPTION_LIMIT <= (1<<CEIL_LG_OPTION_LIMIT) |
281 }; | 285 }; |
282 | 286 |
283 | 287 |
462 static Klass* check_klass_Opt_Only_JDK14NewRef(Klass* k) { | 466 static Klass* check_klass_Opt_Only_JDK14NewRef(Klass* k) { |
463 assert(JDK_Version::is_gte_jdk14x_version() && UseNewReflection, "JDK 1.4 only"); | 467 assert(JDK_Version::is_gte_jdk14x_version() && UseNewReflection, "JDK 1.4 only"); |
464 // despite the optional loading, if you use this it must be present: | 468 // despite the optional loading, if you use this it must be present: |
465 return check_klass(k); | 469 return check_klass(k); |
466 } | 470 } |
471 #ifdef GRAAL | |
472 static Klass* check_klass_Graal(Klass* k) { return k; } | |
473 #endif | |
467 | 474 |
468 static bool initialize_wk_klass(WKID id, int init_opt, TRAPS); | 475 static bool initialize_wk_klass(WKID id, int init_opt, TRAPS); |
469 static void initialize_wk_klasses_until(WKID limit_id, WKID &start_id, TRAPS); | 476 static void initialize_wk_klasses_until(WKID limit_id, WKID &start_id, TRAPS); |
470 static void initialize_wk_klasses_through(WKID end_id, WKID &start_id, TRAPS) { | 477 static void initialize_wk_klasses_through(WKID end_id, WKID &start_id, TRAPS) { |
471 int limit = (int)end_id + 1; | 478 int limit = (int)end_id + 1; |
526 static bool Object_klass_loaded() { return WK_KLASS(Object_klass) != NULL; } | 533 static bool Object_klass_loaded() { return WK_KLASS(Object_klass) != NULL; } |
527 static bool ClassLoader_klass_loaded() { return WK_KLASS(ClassLoader_klass) != NULL; } | 534 static bool ClassLoader_klass_loaded() { return WK_KLASS(ClassLoader_klass) != NULL; } |
528 | 535 |
529 // Returns default system loader | 536 // Returns default system loader |
530 static oop java_system_loader(); | 537 static oop java_system_loader(); |
538 | |
539 #ifdef GRAAL | |
540 // Returns the Graal loader. This will be NULL if !UseGraalClassLoader | |
541 // in which case it's equivalent to the boot loader | |
542 static oop graal_loader(); | |
543 #endif | |
531 | 544 |
532 // Compute the default system loader | 545 // Compute the default system loader |
533 static void compute_java_system_loader(TRAPS); | 546 static void compute_java_system_loader(TRAPS); |
534 | 547 |
535 // Register a new class loader | 548 // Register a new class loader |
693 static bool is_parallelDefine(Handle class_loader); | 706 static bool is_parallelDefine(Handle class_loader); |
694 | 707 |
695 public: | 708 public: |
696 static bool is_ext_class_loader(Handle class_loader); | 709 static bool is_ext_class_loader(Handle class_loader); |
697 | 710 |
711 #ifdef GRAAL | |
712 static void initialize_preloaded_graal_classes(TRAPS); | |
713 #endif | |
714 | |
698 private: | 715 private: |
699 static Klass* find_shared_class(Symbol* class_name); | 716 static Klass* find_shared_class(Symbol* class_name); |
700 | 717 |
701 // Setup link to hierarchy | 718 // Setup link to hierarchy |
702 static void add_to_hierarchy(instanceKlassHandle k, TRAPS); | 719 static void add_to_hierarchy(instanceKlassHandle k, TRAPS); |
755 | 772 |
756 // table of box klasses (int_klass, etc.) | 773 // table of box klasses (int_klass, etc.) |
757 static Klass* _box_klasses[T_VOID+1]; | 774 static Klass* _box_klasses[T_VOID+1]; |
758 | 775 |
759 static oop _java_system_loader; | 776 static oop _java_system_loader; |
777 #ifdef GRAAL | |
778 static oop _graal_loader; | |
779 #endif | |
760 | 780 |
761 static bool _has_loadClassInternal; | 781 static bool _has_loadClassInternal; |
762 static bool _has_checkPackageAccess; | 782 static bool _has_checkPackageAccess; |
763 }; | 783 }; |
764 | 784 |