613 Handle class_loader,
614 Handle protection_domain,
615 TRAPS);
616 static InstanceKlass* resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
617 static Klass* resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
618 static InstanceKlass* handle_parallel_super_load(Symbol* class_name, Symbol* supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS);
619 // Wait on SystemDictionary_lock; unlocks lockObject before
620 // waiting; relocks lockObject with correct recursion count
621 // after waiting, but before reentering SystemDictionary_lock
622 // to preserve lock order semantics.
623 static void double_lock_wait(Handle lockObject, TRAPS);
624 static void define_instance_class(InstanceKlass* k, TRAPS);
625 static InstanceKlass* find_or_define_instance_class(Symbol* class_name,
626 Handle class_loader,
627 InstanceKlass* k, TRAPS);
628 static bool is_shared_class_visible(Symbol* class_name, InstanceKlass* ik,
629 Handle class_loader, TRAPS);
630 static InstanceKlass* load_shared_class(InstanceKlass* ik,
631 Handle class_loader,
632 Handle protection_domain,
633 TRAPS);
634 static InstanceKlass* load_shared_boot_class(Symbol* class_name,
635 TRAPS);
636 static InstanceKlass* load_instance_class(Symbol* class_name, Handle class_loader, TRAPS);
637 static Handle compute_loader_lock_object(Handle class_loader, TRAPS);
638 static void check_loader_lock_contention(Handle loader_lock, TRAPS);
639 static bool is_parallelCapable(Handle class_loader);
640 static bool is_parallelDefine(Handle class_loader);
641
642 public:
643 static bool is_system_class_loader(oop class_loader);
644 static bool is_platform_class_loader(oop class_loader);
645
646 // Returns TRUE if the method is a non-public member of class java.lang.Object.
647 static bool is_nonpublic_Object_method(Method* m) {
648 assert(m != NULL, "Unexpected NULL Method*");
649 return !m->is_public() && m->method_holder() == SystemDictionary::Object_klass();
650 }
651
652 static void initialize_oop_storage();
|
613 Handle class_loader,
614 Handle protection_domain,
615 TRAPS);
616 static InstanceKlass* resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
617 static Klass* resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
618 static InstanceKlass* handle_parallel_super_load(Symbol* class_name, Symbol* supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS);
619 // Wait on SystemDictionary_lock; unlocks lockObject before
620 // waiting; relocks lockObject with correct recursion count
621 // after waiting, but before reentering SystemDictionary_lock
622 // to preserve lock order semantics.
623 static void double_lock_wait(Handle lockObject, TRAPS);
624 static void define_instance_class(InstanceKlass* k, TRAPS);
625 static InstanceKlass* find_or_define_instance_class(Symbol* class_name,
626 Handle class_loader,
627 InstanceKlass* k, TRAPS);
628 static bool is_shared_class_visible(Symbol* class_name, InstanceKlass* ik,
629 Handle class_loader, TRAPS);
630 static InstanceKlass* load_shared_class(InstanceKlass* ik,
631 Handle class_loader,
632 Handle protection_domain,
633 const ClassFileStream *cfs,
634 TRAPS);
635 static InstanceKlass* load_shared_boot_class(Symbol* class_name,
636 TRAPS);
637 static InstanceKlass* load_instance_class(Symbol* class_name, Handle class_loader, TRAPS);
638 static Handle compute_loader_lock_object(Handle class_loader, TRAPS);
639 static void check_loader_lock_contention(Handle loader_lock, TRAPS);
640 static bool is_parallelCapable(Handle class_loader);
641 static bool is_parallelDefine(Handle class_loader);
642
643 public:
644 static bool is_system_class_loader(oop class_loader);
645 static bool is_platform_class_loader(oop class_loader);
646
647 // Returns TRUE if the method is a non-public member of class java.lang.Object.
648 static bool is_nonpublic_Object_method(Method* m) {
649 assert(m != NULL, "Unexpected NULL Method*");
650 return !m->is_public() && m->method_holder() == SystemDictionary::Object_klass();
651 }
652
653 static void initialize_oop_storage();
|