610 // Basic loading operations 611 static InstanceKlass* resolve_instance_class_or_null_helper(Symbol* name, 612 Handle class_loader, 613 Handle protection_domain, 614 TRAPS); 615 static InstanceKlass* resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); 616 static Klass* resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); 617 static InstanceKlass* handle_parallel_super_load(Symbol* class_name, Symbol* supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS); 618 // Wait on SystemDictionary_lock; unlocks lockObject before 619 // waiting; relocks lockObject with correct recursion count 620 // after waiting, but before reentering SystemDictionary_lock 621 // to preserve lock order semantics. 622 static void double_lock_wait(Handle lockObject, TRAPS); 623 static void define_instance_class(InstanceKlass* k, TRAPS); 624 static InstanceKlass* find_or_define_instance_class(Symbol* class_name, 625 Handle class_loader, 626 InstanceKlass* k, TRAPS); 627 static bool is_shared_class_visible(Symbol* class_name, InstanceKlass* ik, 628 PackageEntry* pkg_entry, 629 Handle class_loader, TRAPS); 630 static bool check_shared_class_super_type(InstanceKlass* child, InstanceKlass* super, 631 Handle class_loader, Handle protection_domain, 632 bool is_superclass, TRAPS); 633 static bool check_shared_class_super_types(InstanceKlass* ik, Handle class_loader, 634 Handle protection_domain, TRAPS); 635 static InstanceKlass* load_shared_class(InstanceKlass* ik, 636 Handle class_loader, 637 Handle protection_domain, 638 const ClassFileStream *cfs, 639 PackageEntry* pkg_entry, 640 TRAPS); 641 // Second part of load_shared_class 642 static void load_shared_class_misc(InstanceKlass* ik, ClassLoaderData* loader_data, TRAPS) NOT_CDS_RETURN; 643 static InstanceKlass* load_shared_boot_class(Symbol* class_name, 644 PackageEntry* pkg_entry, 645 TRAPS); 646 static InstanceKlass* load_instance_class(Symbol* class_name, Handle class_loader, TRAPS); 647 static Handle compute_loader_lock_object(Handle class_loader, TRAPS); 648 static void check_loader_lock_contention(Handle loader_lock, TRAPS); 649 static bool is_parallelCapable(Handle class_loader); | 610 // Basic loading operations 611 static InstanceKlass* resolve_instance_class_or_null_helper(Symbol* name, 612 Handle class_loader, 613 Handle protection_domain, 614 TRAPS); 615 static InstanceKlass* resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); 616 static Klass* resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); 617 static InstanceKlass* handle_parallel_super_load(Symbol* class_name, Symbol* supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS); 618 // Wait on SystemDictionary_lock; unlocks lockObject before 619 // waiting; relocks lockObject with correct recursion count 620 // after waiting, but before reentering SystemDictionary_lock 621 // to preserve lock order semantics. 622 static void double_lock_wait(Handle lockObject, TRAPS); 623 static void define_instance_class(InstanceKlass* k, TRAPS); 624 static InstanceKlass* find_or_define_instance_class(Symbol* class_name, 625 Handle class_loader, 626 InstanceKlass* k, TRAPS); 627 static bool is_shared_class_visible(Symbol* class_name, InstanceKlass* ik, 628 PackageEntry* pkg_entry, 629 Handle class_loader, TRAPS); 630 static bool is_shared_class_visible_impl(Symbol* class_name, 631 InstanceKlass* ik, 632 PackageEntry* pkg_entry, 633 Handle class_loader, TRAPS); 634 static bool check_shared_class_super_type(InstanceKlass* child, InstanceKlass* super, 635 Handle class_loader, Handle protection_domain, 636 bool is_superclass, TRAPS); 637 static bool check_shared_class_super_types(InstanceKlass* ik, Handle class_loader, 638 Handle protection_domain, TRAPS); 639 static InstanceKlass* load_shared_class(InstanceKlass* ik, 640 Handle class_loader, 641 Handle protection_domain, 642 const ClassFileStream *cfs, 643 PackageEntry* pkg_entry, 644 TRAPS); 645 // Second part of load_shared_class 646 static void load_shared_class_misc(InstanceKlass* ik, ClassLoaderData* loader_data, TRAPS) NOT_CDS_RETURN; 647 static InstanceKlass* load_shared_boot_class(Symbol* class_name, 648 PackageEntry* pkg_entry, 649 TRAPS); 650 static InstanceKlass* load_instance_class(Symbol* class_name, Handle class_loader, TRAPS); 651 static Handle compute_loader_lock_object(Handle class_loader, TRAPS); 652 static void check_loader_lock_contention(Handle loader_lock, TRAPS); 653 static bool is_parallelCapable(Handle class_loader); |