632 static bool is_shared_class_visible(Symbol* class_name, InstanceKlass* ik, 633 Handle class_loader, TRAPS); 634 static InstanceKlass* load_shared_class(InstanceKlass* ik, 635 Handle class_loader, 636 Handle protection_domain, 637 TRAPS); 638 static InstanceKlass* load_instance_class(Symbol* class_name, Handle class_loader, TRAPS); 639 static Handle compute_loader_lock_object(Handle class_loader, TRAPS); 640 static void check_loader_lock_contention(Handle loader_lock, TRAPS); 641 static bool is_parallelCapable(Handle class_loader); 642 static bool is_parallelDefine(Handle class_loader); 643 644 public: 645 static InstanceKlass* load_shared_class(Symbol* class_name, 646 Handle class_loader, 647 TRAPS); 648 static bool is_system_class_loader(oop class_loader); 649 static bool is_platform_class_loader(oop class_loader); 650 static void clear_invoke_method_table(); 651 652 protected: 653 static InstanceKlass* find_shared_class(Symbol* class_name); 654 655 // Setup link to hierarchy 656 static void add_to_hierarchy(InstanceKlass* k, TRAPS); 657 658 // Basic find on loaded classes 659 static InstanceKlass* find_class(unsigned int hash, 660 Symbol* name, Dictionary* dictionary); 661 static InstanceKlass* find_class(Symbol* class_name, ClassLoaderData* loader_data); 662 663 // Basic find on classes in the midst of being loaded 664 static Symbol* find_placeholder(Symbol* name, ClassLoaderData* loader_data); 665 666 // Add a placeholder for a class being loaded 667 static void add_placeholder(int index, 668 Symbol* class_name, 669 ClassLoaderData* loader_data); 670 static void remove_placeholder(int index, 671 Symbol* class_name, | 632 static bool is_shared_class_visible(Symbol* class_name, InstanceKlass* ik, 633 Handle class_loader, TRAPS); 634 static InstanceKlass* load_shared_class(InstanceKlass* ik, 635 Handle class_loader, 636 Handle protection_domain, 637 TRAPS); 638 static InstanceKlass* load_instance_class(Symbol* class_name, Handle class_loader, TRAPS); 639 static Handle compute_loader_lock_object(Handle class_loader, TRAPS); 640 static void check_loader_lock_contention(Handle loader_lock, TRAPS); 641 static bool is_parallelCapable(Handle class_loader); 642 static bool is_parallelDefine(Handle class_loader); 643 644 public: 645 static InstanceKlass* load_shared_class(Symbol* class_name, 646 Handle class_loader, 647 TRAPS); 648 static bool is_system_class_loader(oop class_loader); 649 static bool is_platform_class_loader(oop class_loader); 650 static void clear_invoke_method_table(); 651 652 // Returns TRUE if the method is a non-public member of class java.lang.Object. 653 static bool is_nonpublic_Object_method(Method* m) { 654 assert(m != NULL, "Unexpected NULL Method*"); 655 return !m->is_public() && m->method_holder() == SystemDictionary::Object_klass(); 656 } 657 658 protected: 659 static InstanceKlass* find_shared_class(Symbol* class_name); 660 661 // Setup link to hierarchy 662 static void add_to_hierarchy(InstanceKlass* k, TRAPS); 663 664 // Basic find on loaded classes 665 static InstanceKlass* find_class(unsigned int hash, 666 Symbol* name, Dictionary* dictionary); 667 static InstanceKlass* find_class(Symbol* class_name, ClassLoaderData* loader_data); 668 669 // Basic find on classes in the midst of being loaded 670 static Symbol* find_placeholder(Symbol* name, ClassLoaderData* loader_data); 671 672 // Add a placeholder for a class being loaded 673 static void add_placeholder(int index, 674 Symbol* class_name, 675 ClassLoaderData* loader_data); 676 static void remove_placeholder(int index, 677 Symbol* class_name, |