626 Handle protection_domain, 627 TRAPS); 628 static InstanceKlass* resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); 629 static Klass* resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); 630 static InstanceKlass* handle_parallel_super_load(Symbol* class_name, Symbol* supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS); 631 // Wait on SystemDictionary_lock; unlocks lockObject before 632 // waiting; relocks lockObject with correct recursion count 633 // after waiting, but before reentering SystemDictionary_lock 634 // to preserve lock order semantics. 635 static void double_lock_wait(Handle lockObject, TRAPS); 636 static void define_instance_class(InstanceKlass* k, TRAPS); 637 static InstanceKlass* find_or_define_instance_class(Symbol* class_name, 638 Handle class_loader, 639 InstanceKlass* k, TRAPS); 640 static bool is_shared_class_visible(Symbol* class_name, InstanceKlass* ik, 641 Handle class_loader, TRAPS); 642 static InstanceKlass* load_shared_class(InstanceKlass* ik, 643 Handle class_loader, 644 Handle protection_domain, 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); 650 static bool is_parallelDefine(Handle class_loader); 651 652 public: 653 static InstanceKlass* load_shared_class(Symbol* class_name, 654 Handle class_loader, 655 TRAPS); 656 static bool is_system_class_loader(oop class_loader); 657 static bool is_platform_class_loader(oop class_loader); 658 static void clear_invoke_method_table(); 659 660 // Returns TRUE if the method is a non-public member of class java.lang.Object. 661 static bool is_nonpublic_Object_method(Method* m) { 662 assert(m != NULL, "Unexpected NULL Method*"); 663 return !m->is_public() && m->method_holder() == SystemDictionary::Object_klass(); 664 } 665 666 static void initialize_oop_storage(); 667 static OopStorage* vm_weak_oop_storage(); 668 669 protected: 670 static InstanceKlass* find_shared_class(Symbol* class_name); 671 672 // Setup link to hierarchy 673 static void add_to_hierarchy(InstanceKlass* k, TRAPS); 674 675 // Basic find on loaded classes | 626 Handle protection_domain, 627 TRAPS); 628 static InstanceKlass* resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); 629 static Klass* resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS); 630 static InstanceKlass* handle_parallel_super_load(Symbol* class_name, Symbol* supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS); 631 // Wait on SystemDictionary_lock; unlocks lockObject before 632 // waiting; relocks lockObject with correct recursion count 633 // after waiting, but before reentering SystemDictionary_lock 634 // to preserve lock order semantics. 635 static void double_lock_wait(Handle lockObject, TRAPS); 636 static void define_instance_class(InstanceKlass* k, TRAPS); 637 static InstanceKlass* find_or_define_instance_class(Symbol* class_name, 638 Handle class_loader, 639 InstanceKlass* k, TRAPS); 640 static bool is_shared_class_visible(Symbol* class_name, InstanceKlass* ik, 641 Handle class_loader, TRAPS); 642 static InstanceKlass* load_shared_class(InstanceKlass* ik, 643 Handle class_loader, 644 Handle protection_domain, 645 TRAPS); 646 static InstanceKlass* load_shared_boot_class(Symbol* class_name, 647 Handle class_loader, 648 TRAPS); 649 static InstanceKlass* load_instance_class(Symbol* class_name, Handle class_loader, TRAPS); 650 static Handle compute_loader_lock_object(Handle class_loader, TRAPS); 651 static void check_loader_lock_contention(Handle loader_lock, TRAPS); 652 static bool is_parallelCapable(Handle class_loader); 653 static bool is_parallelDefine(Handle class_loader); 654 655 public: 656 static bool is_system_class_loader(oop class_loader); 657 static bool is_platform_class_loader(oop class_loader); 658 static void clear_invoke_method_table(); 659 660 // Returns TRUE if the method is a non-public member of class java.lang.Object. 661 static bool is_nonpublic_Object_method(Method* m) { 662 assert(m != NULL, "Unexpected NULL Method*"); 663 return !m->is_public() && m->method_holder() == SystemDictionary::Object_klass(); 664 } 665 666 static void initialize_oop_storage(); 667 static OopStorage* vm_weak_oop_storage(); 668 669 protected: 670 static InstanceKlass* find_shared_class(Symbol* class_name); 671 672 // Setup link to hierarchy 673 static void add_to_hierarchy(InstanceKlass* k, TRAPS); 674 675 // Basic find on loaded classes |