494 inner_class_outer_class_info_offset = 1,
495 inner_class_inner_name_offset = 2,
496 inner_class_access_flags_offset = 3,
497 inner_class_next_offset = 4
498 };
499
500 enum EnclosingMethodAttributeOffset {
501 enclosing_method_class_index_offset = 0,
502 enclosing_method_method_index_offset = 1,
503 enclosing_method_attribute_size = 2
504 };
505
506 // method override check
507 bool is_override(const methodHandle& super_method, Handle targetclassloader, Symbol* targetclassname, TRAPS);
508
509 // package
510 PackageEntry* package() const { return _package_entry; }
511 ModuleEntry* module() const;
512 bool in_unnamed_package() const { return (_package_entry == NULL); }
513 void set_package(PackageEntry* p) { _package_entry = p; }
514 void set_package(ClassLoaderData* loader_data, TRAPS);
515 bool is_same_class_package(const Klass* class2) const;
516 bool is_same_class_package(oop other_class_loader, const Symbol* other_class_name) const;
517
518 // find an enclosing class
519 InstanceKlass* compute_enclosing_class(bool* inner_is_member, TRAPS) const;
520
521 // Find InnerClasses attribute and return outer_class_info_index & inner_name_index.
522 bool find_inner_classes_attr(int* ooff, int* noff, TRAPS) const;
523
524 private:
525 // Check prohibited package ("java/" only loadable by boot or platform loaders)
526 static void check_prohibited_package(Symbol* class_name,
527 ClassLoaderData* loader_data,
528 TRAPS);
529 public:
530 // initialization state
531 bool is_loaded() const { return _init_state >= loaded; }
532 bool is_linked() const { return _init_state >= linked; }
533 bool is_initialized() const { return _init_state == fully_initialized; }
534 bool is_not_initialized() const { return _init_state < being_initialized; }
1310
1311 static Method* find_method_impl(const Array<Method*>* methods,
1312 const Symbol* name,
1313 const Symbol* signature,
1314 OverpassLookupMode overpass_mode,
1315 StaticLookupMode static_mode,
1316 PrivateLookupMode private_mode);
1317
1318 // Free CHeap allocated fields.
1319 void release_C_heap_structures();
1320
1321 #if INCLUDE_JVMTI
1322 // RedefineClasses support
1323 void link_previous_versions(InstanceKlass* pv) { _previous_versions = pv; }
1324 void mark_newly_obsolete_methods(Array<Method*>* old_methods, int emcp_method_count);
1325 #endif
1326 public:
1327 // CDS support - remove and restore oops from metadata. Oops are not shared.
1328 virtual void remove_unshareable_info();
1329 virtual void remove_java_mirror();
1330 virtual void restore_unshareable_info(ClassLoaderData* loader_data, Handle protection_domain, TRAPS);
1331
1332 // jvm support
1333 jint compute_modifier_flags(TRAPS) const;
1334
1335 public:
1336 // JVMTI support
1337 jint jvmti_class_status() const;
1338
1339 virtual void metaspace_pointers_do(MetaspaceClosure* iter);
1340
1341 public:
1342 // Printing
1343 #ifndef PRODUCT
1344 void print_on(outputStream* st) const;
1345 #endif
1346 void print_value_on(outputStream* st) const;
1347
1348 void oop_print_value_on(oop obj, outputStream* st);
1349
1350 #ifndef PRODUCT
|
494 inner_class_outer_class_info_offset = 1,
495 inner_class_inner_name_offset = 2,
496 inner_class_access_flags_offset = 3,
497 inner_class_next_offset = 4
498 };
499
500 enum EnclosingMethodAttributeOffset {
501 enclosing_method_class_index_offset = 0,
502 enclosing_method_method_index_offset = 1,
503 enclosing_method_attribute_size = 2
504 };
505
506 // method override check
507 bool is_override(const methodHandle& super_method, Handle targetclassloader, Symbol* targetclassname, TRAPS);
508
509 // package
510 PackageEntry* package() const { return _package_entry; }
511 ModuleEntry* module() const;
512 bool in_unnamed_package() const { return (_package_entry == NULL); }
513 void set_package(PackageEntry* p) { _package_entry = p; }
514 void set_package(ClassLoaderData* loader_data, PackageEntry* pkg_entry, TRAPS);
515 bool is_same_class_package(const Klass* class2) const;
516 bool is_same_class_package(oop other_class_loader, const Symbol* other_class_name) const;
517
518 // find an enclosing class
519 InstanceKlass* compute_enclosing_class(bool* inner_is_member, TRAPS) const;
520
521 // Find InnerClasses attribute and return outer_class_info_index & inner_name_index.
522 bool find_inner_classes_attr(int* ooff, int* noff, TRAPS) const;
523
524 private:
525 // Check prohibited package ("java/" only loadable by boot or platform loaders)
526 static void check_prohibited_package(Symbol* class_name,
527 ClassLoaderData* loader_data,
528 TRAPS);
529 public:
530 // initialization state
531 bool is_loaded() const { return _init_state >= loaded; }
532 bool is_linked() const { return _init_state >= linked; }
533 bool is_initialized() const { return _init_state == fully_initialized; }
534 bool is_not_initialized() const { return _init_state < being_initialized; }
1310
1311 static Method* find_method_impl(const Array<Method*>* methods,
1312 const Symbol* name,
1313 const Symbol* signature,
1314 OverpassLookupMode overpass_mode,
1315 StaticLookupMode static_mode,
1316 PrivateLookupMode private_mode);
1317
1318 // Free CHeap allocated fields.
1319 void release_C_heap_structures();
1320
1321 #if INCLUDE_JVMTI
1322 // RedefineClasses support
1323 void link_previous_versions(InstanceKlass* pv) { _previous_versions = pv; }
1324 void mark_newly_obsolete_methods(Array<Method*>* old_methods, int emcp_method_count);
1325 #endif
1326 public:
1327 // CDS support - remove and restore oops from metadata. Oops are not shared.
1328 virtual void remove_unshareable_info();
1329 virtual void remove_java_mirror();
1330 void restore_unshareable_info(ClassLoaderData* loader_data, Handle protection_domain, PackageEntry* pkg_entry, TRAPS);
1331
1332 // jvm support
1333 jint compute_modifier_flags(TRAPS) const;
1334
1335 public:
1336 // JVMTI support
1337 jint jvmti_class_status() const;
1338
1339 virtual void metaspace_pointers_do(MetaspaceClosure* iter);
1340
1341 public:
1342 // Printing
1343 #ifndef PRODUCT
1344 void print_on(outputStream* st) const;
1345 #endif
1346 void print_value_on(outputStream* st) const;
1347
1348 void oop_print_value_on(oop obj, outputStream* st);
1349
1350 #ifndef PRODUCT
|