575 static SymbolPropertyTable* invoke_method_table() { return _invoke_method_table; } 576 577 // Basic loading operations 578 static InstanceKlass* resolve_instance_class_or_null_helper(Symbol* name, 579 Handle class_loader, 580 Handle protection_domain, 581 TRAPS); 582 static InstanceKlass* resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); 583 static Klass* resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); 584 static InstanceKlass* handle_parallel_super_load(Symbol* class_name, Symbol* supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS); 585 // Wait on SystemDictionary_lock; unlocks lockObject before 586 // waiting; relocks lockObject with correct recursion count 587 // after waiting, but before reentering SystemDictionary_lock 588 // to preserve lock order semantics. 589 static void double_lock_wait(Handle lockObject, TRAPS); 590 static void define_instance_class(InstanceKlass* k, TRAPS); 591 static InstanceKlass* find_or_define_instance_class(Symbol* class_name, 592 Handle class_loader, 593 InstanceKlass* k, TRAPS); 594 static bool is_shared_class_visible(Symbol* class_name, InstanceKlass* ik, 595 Handle class_loader, TRAPS); 596 static bool check_shared_class_super_type(InstanceKlass* child, InstanceKlass* super, 597 Handle class_loader, Handle protection_domain, 598 bool is_superclass, TRAPS); 599 static bool check_shared_class_super_types(InstanceKlass* ik, Handle class_loader, 600 Handle protection_domain, TRAPS); 601 static InstanceKlass* load_shared_class(InstanceKlass* ik, 602 Handle class_loader, 603 Handle protection_domain, 604 const ClassFileStream *cfs, 605 TRAPS); 606 // Second part of load_shared_class 607 static void load_shared_class_misc(InstanceKlass* ik, ClassLoaderData* loader_data, TRAPS) NOT_CDS_RETURN; 608 static InstanceKlass* load_shared_boot_class(Symbol* class_name, 609 TRAPS); 610 static InstanceKlass* load_instance_class(Symbol* class_name, Handle class_loader, TRAPS); 611 static Handle compute_loader_lock_object(Handle class_loader, TRAPS); 612 static void check_loader_lock_contention(Handle loader_lock, TRAPS); 613 static bool is_parallelCapable(Handle class_loader); 614 static bool is_parallelDefine(Handle class_loader); 615 616 public: 617 static bool is_system_class_loader(oop class_loader); 618 static bool is_platform_class_loader(oop class_loader); 619 620 // Returns TRUE if the method is a non-public member of class java.lang.Object. 621 static bool is_nonpublic_Object_method(Method* m) { 622 assert(m != NULL, "Unexpected NULL Method*"); 623 return !m->is_public() && m->method_holder() == SystemDictionary::Object_klass(); 624 } 625 626 protected: 627 // Setup link to hierarchy 628 static void add_to_hierarchy(InstanceKlass* k, TRAPS); | 575 static SymbolPropertyTable* invoke_method_table() { return _invoke_method_table; } 576 577 // Basic loading operations 578 static InstanceKlass* resolve_instance_class_or_null_helper(Symbol* name, 579 Handle class_loader, 580 Handle protection_domain, 581 TRAPS); 582 static InstanceKlass* resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); 583 static Klass* resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); 584 static InstanceKlass* handle_parallel_super_load(Symbol* class_name, Symbol* supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS); 585 // Wait on SystemDictionary_lock; unlocks lockObject before 586 // waiting; relocks lockObject with correct recursion count 587 // after waiting, but before reentering SystemDictionary_lock 588 // to preserve lock order semantics. 589 static void double_lock_wait(Handle lockObject, TRAPS); 590 static void define_instance_class(InstanceKlass* k, TRAPS); 591 static InstanceKlass* find_or_define_instance_class(Symbol* class_name, 592 Handle class_loader, 593 InstanceKlass* k, TRAPS); 594 static bool is_shared_class_visible(Symbol* class_name, InstanceKlass* ik, 595 PackageEntry* pkg_entry, 596 Handle class_loader, TRAPS); 597 static bool check_shared_class_super_type(InstanceKlass* child, InstanceKlass* super, 598 Handle class_loader, Handle protection_domain, 599 bool is_superclass, TRAPS); 600 static bool check_shared_class_super_types(InstanceKlass* ik, Handle class_loader, 601 Handle protection_domain, TRAPS); 602 static InstanceKlass* load_shared_class(InstanceKlass* ik, 603 Handle class_loader, 604 Handle protection_domain, 605 const ClassFileStream *cfs, 606 PackageEntry* pkg_entry, 607 TRAPS); 608 // Second part of load_shared_class 609 static void load_shared_class_misc(InstanceKlass* ik, ClassLoaderData* loader_data, TRAPS) NOT_CDS_RETURN; 610 static InstanceKlass* load_shared_boot_class(Symbol* class_name, 611 PackageEntry* pkg_entry, 612 TRAPS); 613 static InstanceKlass* load_instance_class(Symbol* class_name, Handle class_loader, TRAPS); 614 static Handle compute_loader_lock_object(Handle class_loader, TRAPS); 615 static void check_loader_lock_contention(Handle loader_lock, TRAPS); 616 static bool is_parallelCapable(Handle class_loader); 617 static bool is_parallelDefine(Handle class_loader); 618 619 public: 620 static bool is_system_class_loader(oop class_loader); 621 static bool is_platform_class_loader(oop class_loader); 622 623 // Returns TRUE if the method is a non-public member of class java.lang.Object. 624 static bool is_nonpublic_Object_method(Method* m) { 625 assert(m != NULL, "Unexpected NULL Method*"); 626 return !m->is_public() && m->method_holder() == SystemDictionary::Object_klass(); 627 } 628 629 protected: 630 // Setup link to hierarchy 631 static void add_to_hierarchy(InstanceKlass* k, TRAPS); |