205 static oop shared_jar_manifest(int index); 206 static void atomic_set_shared_jar_manifest(int index, oop man) { 207 atomic_set_array_index(_shared_jar_manifests, index, man); 208 } 209 static void allocate_shared_jar_manifest_array(int size, TRAPS); 210 static InstanceKlass* acquire_class_for_current_thread( 211 InstanceKlass *ik, 212 Handle class_loader, 213 Handle protection_domain, 214 const ClassFileStream* cfs, 215 TRAPS); 216 static DumpTimeSharedClassInfo* find_or_allocate_info_for(InstanceKlass* k); 217 static void write_dictionary(RunTimeSharedDictionary* dictionary, 218 bool is_builtin, 219 bool is_static_archive = true); 220 static bool is_jfr_event_class(InstanceKlass *k); 221 static void warn_excluded(InstanceKlass* k, const char* reason); 222 static bool should_be_excluded(InstanceKlass* k); 223 224 DEBUG_ONLY(static bool _no_class_loading_should_happen;) 225 public: 226 static InstanceKlass* find_builtin_class(Symbol* class_name); 227 228 static const RunTimeSharedClassInfo* find_record(RunTimeSharedDictionary* static_dict, 229 RunTimeSharedDictionary* dynamic_dict, 230 Symbol* name); 231 232 static bool has_platform_or_app_classes(); 233 234 // Called by PLATFORM/APP loader only 235 static InstanceKlass* find_or_load_shared_class(Symbol* class_name, 236 Handle class_loader, 237 TRAPS); 238 239 240 static void allocate_shared_data_arrays(int size, TRAPS); 241 static void oops_do(OopClosure* f); 242 243 // Check if sharing is supported for the class loader. 244 static bool is_sharing_possible(ClassLoaderData* loader_data); 309 310 #ifdef ASSERT 311 class NoClassLoadingMark: public StackObj { 312 public: 313 NoClassLoadingMark() { 314 assert(!_no_class_loading_should_happen, "must not be nested"); 315 _no_class_loading_should_happen = true; 316 } 317 ~NoClassLoadingMark() { 318 _no_class_loading_should_happen = false; 319 } 320 }; 321 #endif 322 323 template <typename T> 324 static unsigned int hash_for_shared_dictionary(T* ptr) { 325 assert(ptr > (T*)SharedBaseAddress, "must be"); 326 address p = address(ptr) - SharedBaseAddress; 327 return primitive_hash<address>(p); 328 } 329 }; 330 331 #endif // SHARE_CLASSFILE_SYSTEMDICTIONARYSHARED_HPP | 205 static oop shared_jar_manifest(int index); 206 static void atomic_set_shared_jar_manifest(int index, oop man) { 207 atomic_set_array_index(_shared_jar_manifests, index, man); 208 } 209 static void allocate_shared_jar_manifest_array(int size, TRAPS); 210 static InstanceKlass* acquire_class_for_current_thread( 211 InstanceKlass *ik, 212 Handle class_loader, 213 Handle protection_domain, 214 const ClassFileStream* cfs, 215 TRAPS); 216 static DumpTimeSharedClassInfo* find_or_allocate_info_for(InstanceKlass* k); 217 static void write_dictionary(RunTimeSharedDictionary* dictionary, 218 bool is_builtin, 219 bool is_static_archive = true); 220 static bool is_jfr_event_class(InstanceKlass *k); 221 static void warn_excluded(InstanceKlass* k, const char* reason); 222 static bool should_be_excluded(InstanceKlass* k); 223 224 DEBUG_ONLY(static bool _no_class_loading_should_happen;) 225 static void update_archived_mirror_native_pointers(RunTimeSharedDictionary* dict); 226 227 public: 228 static InstanceKlass* find_builtin_class(Symbol* class_name); 229 230 static const RunTimeSharedClassInfo* find_record(RunTimeSharedDictionary* static_dict, 231 RunTimeSharedDictionary* dynamic_dict, 232 Symbol* name); 233 234 static bool has_platform_or_app_classes(); 235 236 // Called by PLATFORM/APP loader only 237 static InstanceKlass* find_or_load_shared_class(Symbol* class_name, 238 Handle class_loader, 239 TRAPS); 240 241 242 static void allocate_shared_data_arrays(int size, TRAPS); 243 static void oops_do(OopClosure* f); 244 245 // Check if sharing is supported for the class loader. 246 static bool is_sharing_possible(ClassLoaderData* loader_data); 311 312 #ifdef ASSERT 313 class NoClassLoadingMark: public StackObj { 314 public: 315 NoClassLoadingMark() { 316 assert(!_no_class_loading_should_happen, "must not be nested"); 317 _no_class_loading_should_happen = true; 318 } 319 ~NoClassLoadingMark() { 320 _no_class_loading_should_happen = false; 321 } 322 }; 323 #endif 324 325 template <typename T> 326 static unsigned int hash_for_shared_dictionary(T* ptr) { 327 assert(ptr > (T*)SharedBaseAddress, "must be"); 328 address p = address(ptr) - SharedBaseAddress; 329 return primitive_hash<address>(p); 330 } 331 332 static void update_archived_mirror_native_pointers() NOT_CDS_RETURN; 333 }; 334 335 #endif // SHARE_CLASSFILE_SYSTEMDICTIONARYSHARED_HPP |