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 // We pass in the hashtable index so we can calculate it outside of 659 // the SystemDictionary_lock. 660 661 // Basic find on loaded classes 662 static InstanceKlass* find_class(int index, unsigned int hash, 663 Symbol* name, Dictionary* dictionary); 664 static InstanceKlass* find_class(Symbol* class_name, ClassLoaderData* loader_data); 665 666 // Basic find on classes in the midst of being loaded 667 static Symbol* find_placeholder(Symbol* name, ClassLoaderData* loader_data); 668 669 // Add a placeholder for a class being loaded 670 static void add_placeholder(int index, 671 Symbol* class_name, 672 ClassLoaderData* loader_data); 673 static void remove_placeholder(int index, 674 Symbol* class_name, 675 ClassLoaderData* loader_data); 676 677 // Performs cleanups after resolve_super_or_fail. This typically needs 678 // to be called on failure. 679 // Won't throw, but can block. 680 static void resolution_cleanups(Symbol* class_name, 681 ClassLoaderData* loader_data, 682 TRAPS); 683 684 // Initialization 685 static void initialize_preloaded_classes(TRAPS); 686 687 // Class loader constraints 688 static void check_constraints(int index, unsigned int hash, 689 InstanceKlass* k, Handle loader, 690 bool defining, TRAPS); 691 static void update_dictionary(int d_index, unsigned int d_hash, 692 int p_index, unsigned int p_hash, 693 InstanceKlass* k, Handle loader, 694 TRAPS); 695 696 // Variables holding commonly used klasses (preloaded) 697 static InstanceKlass* _well_known_klasses[]; 698 699 // Lazily loaded klasses 700 static InstanceKlass* volatile _abstract_ownable_synchronizer_klass; 701 702 // table of box klasses (int_klass, etc.) 703 static InstanceKlass* _box_klasses[T_VOID+1]; 704 705 static oop _java_system_loader; 706 static oop _java_platform_loader; 707 708 static bool _has_loadClassInternal; 709 static bool _has_checkPackageAccess; 710 }; 711 | 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, 672 ClassLoaderData* loader_data); 673 674 // Performs cleanups after resolve_super_or_fail. This typically needs 675 // to be called on failure. 676 // Won't throw, but can block. 677 static void resolution_cleanups(Symbol* class_name, 678 ClassLoaderData* loader_data, 679 TRAPS); 680 681 // Initialization 682 static void initialize_preloaded_classes(TRAPS); 683 684 // Class loader constraints 685 static void check_constraints(unsigned int hash, 686 InstanceKlass* k, Handle loader, 687 bool defining, TRAPS); 688 static void update_dictionary(unsigned int d_hash, 689 int p_index, unsigned int p_hash, 690 InstanceKlass* k, Handle loader, 691 TRAPS); 692 693 // Variables holding commonly used klasses (preloaded) 694 static InstanceKlass* _well_known_klasses[]; 695 696 // Lazily loaded klasses 697 static InstanceKlass* volatile _abstract_ownable_synchronizer_klass; 698 699 // table of box klasses (int_klass, etc.) 700 static InstanceKlass* _box_klasses[T_VOID+1]; 701 702 static oop _java_system_loader; 703 static oop _java_platform_loader; 704 705 static bool _has_loadClassInternal; 706 static bool _has_checkPackageAccess; 707 }; 708 |