102 _subgraph_object_klasses = |
102 _subgraph_object_klasses = |
103 new(ResourceObj::C_HEAP, mtClass) GrowableArray<Klass*>(50, true); |
103 new(ResourceObj::C_HEAP, mtClass) GrowableArray<Klass*>(50, true); |
104 } |
104 } |
105 |
105 |
106 assert(relocated_k->is_shared(), "must be a shared class"); |
106 assert(relocated_k->is_shared(), "must be a shared class"); |
|
107 |
|
108 if (_k == relocated_k) { |
|
109 // Don't add the Klass containing the sub-graph to it's own klass |
|
110 // initialization list. |
|
111 return; |
|
112 } |
|
113 |
107 if (relocated_k->is_instance_klass()) { |
114 if (relocated_k->is_instance_klass()) { |
108 assert(InstanceKlass::cast(relocated_k)->is_shared_boot_class(), |
115 assert(InstanceKlass::cast(relocated_k)->is_shared_boot_class(), |
109 "must be boot class"); |
116 "must be boot class"); |
110 // SystemDictionary::xxx_klass() are not updated, need to check |
117 // SystemDictionary::xxx_klass() are not updated, need to check |
111 // the original Klass* |
118 // the original Klass* |
496 } |
503 } |
497 |
504 |
498 #define do_module_object_graph(archive_object_graph_do) \ |
505 #define do_module_object_graph(archive_object_graph_do) \ |
499 archive_object_graph_do(SystemDictionary::ArchivedModuleGraph_klass(), jdk_internal_module_ArchivedModuleGraph::archivedSystemModules_offset(), T_OBJECT, CHECK); \ |
506 archive_object_graph_do(SystemDictionary::ArchivedModuleGraph_klass(), jdk_internal_module_ArchivedModuleGraph::archivedSystemModules_offset(), T_OBJECT, CHECK); \ |
500 archive_object_graph_do(SystemDictionary::ArchivedModuleGraph_klass(), jdk_internal_module_ArchivedModuleGraph::archivedModuleFinder_offset(), T_OBJECT, CHECK); \ |
507 archive_object_graph_do(SystemDictionary::ArchivedModuleGraph_klass(), jdk_internal_module_ArchivedModuleGraph::archivedModuleFinder_offset(), T_OBJECT, CHECK); \ |
501 archive_object_graph_do(SystemDictionary::ArchivedModuleGraph_klass(), jdk_internal_module_ArchivedModuleGraph::archivedMainModule_offset(), T_OBJECT, CHECK) |
508 archive_object_graph_do(SystemDictionary::ArchivedModuleGraph_klass(), jdk_internal_module_ArchivedModuleGraph::archivedMainModule_offset(), T_OBJECT, CHECK); \ |
|
509 archive_object_graph_do(SystemDictionary::ArchivedModuleGraph_klass(), jdk_internal_module_ArchivedModuleGraph::archivedConfiguration_offset(), T_OBJECT, CHECK); \ |
|
510 archive_object_graph_do(SystemDictionary::ImmutableCollections_ListN_klass(), java_util_ImmutableCollections_ListN::EMPTY_LIST_offset(), T_OBJECT, CHECK); \ |
|
511 archive_object_graph_do(SystemDictionary::ImmutableCollections_MapN_klass(), java_util_ImmutableCollections_MapN::EMPTY_MAP_offset(), T_OBJECT, CHECK); \ |
|
512 archive_object_graph_do(SystemDictionary::ImmutableCollections_SetN_klass(), java_util_ImmutableCollections_SetN::EMPTY_SET_offset(), T_OBJECT, CHECK); \ |
|
513 archive_object_graph_do(SystemDictionary::Configuration_klass(), java_lang_module_Configuration::EMPTY_CONFIGURATION_offset(), T_OBJECT, CHECK) |
502 |
514 |
503 void HeapShared::archive_module_graph_objects(Thread* THREAD) { |
515 void HeapShared::archive_module_graph_objects(Thread* THREAD) { |
504 do_module_object_graph(archive_reachable_objects_from_static_field); |
516 do_module_object_graph(archive_reachable_objects_from_static_field); |
505 } |
517 } |
506 #endif // INCLUDE_CDS_JAVA_HEAP |
518 #endif // INCLUDE_CDS_JAVA_HEAP |