comparison src/share/vm/classfile/systemDictionary.hpp @ 20804:7848fc12602b

Merge with jdk8u40-b25
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Tue, 07 Apr 2015 14:58:49 +0200
parents deab43a789ad 02c7eebe5f52
children 92fc95e8667d
comparison
equal deleted inserted replaced
20184:84105dcdb05b 20804:7848fc12602b
109 do_klass(Exception_klass, java_lang_Exception, Pre ) \ 109 do_klass(Exception_klass, java_lang_Exception, Pre ) \
110 do_klass(RuntimeException_klass, java_lang_RuntimeException, Pre ) \ 110 do_klass(RuntimeException_klass, java_lang_RuntimeException, Pre ) \
111 do_klass(SecurityManager_klass, java_lang_SecurityManager, Pre ) \ 111 do_klass(SecurityManager_klass, java_lang_SecurityManager, Pre ) \
112 do_klass(ProtectionDomain_klass, java_security_ProtectionDomain, Pre ) \ 112 do_klass(ProtectionDomain_klass, java_security_ProtectionDomain, Pre ) \
113 do_klass(AccessControlContext_klass, java_security_AccessControlContext, Pre ) \ 113 do_klass(AccessControlContext_klass, java_security_AccessControlContext, Pre ) \
114 do_klass(SecureClassLoader_klass, java_security_SecureClassLoader, Pre ) \
114 do_klass(ClassNotFoundException_klass, java_lang_ClassNotFoundException, Pre ) \ 115 do_klass(ClassNotFoundException_klass, java_lang_ClassNotFoundException, Pre ) \
115 do_klass(NoClassDefFoundError_klass, java_lang_NoClassDefFoundError, Pre ) \ 116 do_klass(NoClassDefFoundError_klass, java_lang_NoClassDefFoundError, Pre ) \
116 do_klass(LinkageError_klass, java_lang_LinkageError, Pre ) \ 117 do_klass(LinkageError_klass, java_lang_LinkageError, Pre ) \
117 do_klass(ClassCastException_klass, java_lang_ClassCastException, Pre ) \ 118 do_klass(ClassCastException_klass, java_lang_ClassCastException, Pre ) \
118 do_klass(ArrayStoreException_klass, java_lang_ArrayStoreException, Pre ) \ 119 do_klass(ArrayStoreException_klass, java_lang_ArrayStoreException, Pre ) \
125 /* Preload ref klasses and set reference types */ \ 126 /* Preload ref klasses and set reference types */ \
126 do_klass(SoftReference_klass, java_lang_ref_SoftReference, Pre ) \ 127 do_klass(SoftReference_klass, java_lang_ref_SoftReference, Pre ) \
127 do_klass(WeakReference_klass, java_lang_ref_WeakReference, Pre ) \ 128 do_klass(WeakReference_klass, java_lang_ref_WeakReference, Pre ) \
128 do_klass(FinalReference_klass, java_lang_ref_FinalReference, Pre ) \ 129 do_klass(FinalReference_klass, java_lang_ref_FinalReference, Pre ) \
129 do_klass(PhantomReference_klass, java_lang_ref_PhantomReference, Pre ) \ 130 do_klass(PhantomReference_klass, java_lang_ref_PhantomReference, Pre ) \
131 do_klass(Cleaner_klass, sun_misc_Cleaner, Pre ) \
130 do_klass(Finalizer_klass, java_lang_ref_Finalizer, Pre ) \ 132 do_klass(Finalizer_klass, java_lang_ref_Finalizer, Pre ) \
131 \ 133 \
132 do_klass(Thread_klass, java_lang_Thread, Pre ) \ 134 do_klass(Thread_klass, java_lang_Thread, Pre ) \
133 do_klass(ThreadGroup_klass, java_lang_ThreadGroup, Pre ) \ 135 do_klass(ThreadGroup_klass, java_lang_ThreadGroup, Pre ) \
134 do_klass(Properties_klass, java_util_Properties, Pre ) \ 136 do_klass(Properties_klass, java_util_Properties, Pre ) \
164 /* Note: MethodHandle must be first, and VolatileCallSite last in group */ \ 166 /* Note: MethodHandle must be first, and VolatileCallSite last in group */ \
165 \ 167 \
166 do_klass(StringBuffer_klass, java_lang_StringBuffer, Pre ) \ 168 do_klass(StringBuffer_klass, java_lang_StringBuffer, Pre ) \
167 do_klass(StringBuilder_klass, java_lang_StringBuilder, Pre ) \ 169 do_klass(StringBuilder_klass, java_lang_StringBuilder, Pre ) \
168 do_klass(misc_Unsafe_klass, sun_misc_Unsafe, Pre ) \ 170 do_klass(misc_Unsafe_klass, sun_misc_Unsafe, Pre ) \
171 \
172 /* support for CDS */ \
173 do_klass(ByteArrayInputStream_klass, java_io_ByteArrayInputStream, Pre ) \
174 do_klass(File_klass, java_io_File, Pre ) \
175 do_klass(URLClassLoader_klass, java_net_URLClassLoader, Pre ) \
176 do_klass(URL_klass, java_net_URL, Pre ) \
177 do_klass(Jar_Manifest_klass, java_util_jar_Manifest, Pre ) \
178 do_klass(sun_misc_Launcher_klass, sun_misc_Launcher, Pre ) \
179 do_klass(sun_misc_Launcher_AppClassLoader_klass, sun_misc_Launcher_AppClassLoader, Pre ) \
180 do_klass(sun_misc_Launcher_ExtClassLoader_klass, sun_misc_Launcher_ExtClassLoader, Pre ) \
181 do_klass(CodeSource_klass, java_security_CodeSource, Pre ) \
169 \ 182 \
170 /* It's NULL in non-1.4 JDKs. */ \ 183 /* It's NULL in non-1.4 JDKs. */ \
171 do_klass(StackTraceElement_klass, java_lang_StackTraceElement, Opt ) \ 184 do_klass(StackTraceElement_klass, java_lang_StackTraceElement, Opt ) \
172 /* Universe::is_gte_jdk14x_version() is not set up by this point. */ \ 185 /* Universe::is_gte_jdk14x_version() is not set up by this point. */ \
173 /* It's okay if this turns out to be NULL in non-1.4 JDKs. */ \ 186 /* It's okay if this turns out to be NULL in non-1.4 JDKs. */ \
292 // to true. 305 // to true.
293 306
294 static Klass* resolve_or_fail(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, TRAPS); 307 static Klass* resolve_or_fail(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, TRAPS);
295 // Convenient call for null loader and protection domain. 308 // Convenient call for null loader and protection domain.
296 static Klass* resolve_or_fail(Symbol* class_name, bool throw_error, TRAPS); 309 static Klass* resolve_or_fail(Symbol* class_name, bool throw_error, TRAPS);
297 private: 310 protected:
298 // handle error translation for resolve_or_null results 311 // handle error translation for resolve_or_null results
299 static Klass* handle_resolution_exception(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, KlassHandle klass_h, TRAPS); 312 static Klass* handle_resolution_exception(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, KlassHandle klass_h, TRAPS);
300 313
301 public: 314 public:
302 315
395 static void always_strong_oops_do(OopClosure* blk); 408 static void always_strong_oops_do(OopClosure* blk);
396 static void always_strong_classes_do(KlassClosure* closure); 409 static void always_strong_classes_do(KlassClosure* closure);
397 410
398 // Unload (that is, break root links to) all unmarked classes and 411 // Unload (that is, break root links to) all unmarked classes and
399 // loaders. Returns "true" iff something was unloaded. 412 // loaders. Returns "true" iff something was unloaded.
400 static bool do_unloading(BoolObjectClosure* is_alive); 413 static bool do_unloading(BoolObjectClosure* is_alive, bool clean_alive = true);
414
415 // Used by DumpSharedSpaces only to remove classes that failed verification
416 static void remove_classes_in_error_state();
401 417
402 static int calculate_systemdictionary_size(int loadedclasses); 418 static int calculate_systemdictionary_size(int loadedclasses);
403 419
404 // Applies "f->do_oop" to all root oops in the system dictionary. 420 // Applies "f->do_oop" to all root oops in the system dictionary.
405 static void oops_do(OopClosure* f); 421 static void oops_do(OopClosure* f);
422 static void roots_oops_do(OopClosure* strong, OopClosure* weak);
406 423
407 // System loader lock 424 // System loader lock
408 static oop system_loader_lock() { return _system_loader_lock_obj; } 425 static oop system_loader_lock() { return _system_loader_lock_obj; }
409 426
410 private: 427 protected:
411 // Extended Redefine classes support (tbi) 428 // Extended Redefine classes support (tbi)
412 static void preloaded_classes_do(KlassClosure* f); 429 static void preloaded_classes_do(KlassClosure* f);
413 static void lazily_loaded_classes_do(KlassClosure* f); 430 static void lazily_loaded_classes_do(KlassClosure* f);
414 public: 431 public:
415 // Sharing support. 432 // Sharing support.
418 static void copy_table(char** top, char* end); 435 static void copy_table(char** top, char* end);
419 static void reverse(); 436 static void reverse();
420 static void set_shared_dictionary(HashtableBucket<mtClass>* t, int length, 437 static void set_shared_dictionary(HashtableBucket<mtClass>* t, int length,
421 int number_of_entries); 438 int number_of_entries);
422 // Printing 439 // Printing
423 static void print() PRODUCT_RETURN; 440 static void print(bool details = true);
441 static void print_shared(bool details = true);
424 static void print_class_statistics() PRODUCT_RETURN; 442 static void print_class_statistics() PRODUCT_RETURN;
425 static void print_method_statistics() PRODUCT_RETURN; 443 static void print_method_statistics() PRODUCT_RETURN;
426 444
427 // Number of contained klasses 445 // Number of contained klasses
428 // This is both fully loaded classes and classes in the process 446 // This is both fully loaded classes and classes in the process
507 // The corresponding method to load the class must be called before calling them. 525 // The corresponding method to load the class must be called before calling them.
508 static Klass* abstract_ownable_synchronizer_klass() { return check_klass(_abstract_ownable_synchronizer_klass); } 526 static Klass* abstract_ownable_synchronizer_klass() { return check_klass(_abstract_ownable_synchronizer_klass); }
509 527
510 static void load_abstract_ownable_synchronizer_klass(TRAPS); 528 static void load_abstract_ownable_synchronizer_klass(TRAPS);
511 529
512 private: 530 protected:
513 // Tells whether ClassLoader.loadClassInternal is present 531 // Tells whether ClassLoader.loadClassInternal is present
514 static bool has_loadClassInternal() { return _has_loadClassInternal; } 532 static bool has_loadClassInternal() { return _has_loadClassInternal; }
515 533
516 // Returns the class loader data to be used when looking up/updating the 534 // Returns the class loader data to be used when looking up/updating the
517 // system dictionary. 535 // system dictionary.
543 // Compute the default system loader 561 // Compute the default system loader
544 static void compute_java_system_loader(TRAPS); 562 static void compute_java_system_loader(TRAPS);
545 563
546 // Register a new class loader 564 // Register a new class loader
547 static ClassLoaderData* register_loader(Handle class_loader, TRAPS); 565 static ClassLoaderData* register_loader(Handle class_loader, TRAPS);
548 private: 566 protected:
549 // Mirrors for primitive classes (created eagerly) 567 // Mirrors for primitive classes (created eagerly)
550 static oop check_mirror(oop m) { 568 static oop check_mirror(oop m) {
551 assert(m != NULL, "mirror not initialized"); 569 assert(m != NULL, "mirror not initialized");
552 return m; 570 return m;
553 } 571 }
612 // pool entry to a class fails. 630 // pool entry to a class fails.
613 static void add_resolution_error(constantPoolHandle pool, int which, Symbol* error); 631 static void add_resolution_error(constantPoolHandle pool, int which, Symbol* error);
614 static void delete_resolution_error(ConstantPool* pool); 632 static void delete_resolution_error(ConstantPool* pool);
615 static Symbol* find_resolution_error(constantPoolHandle pool, int which); 633 static Symbol* find_resolution_error(constantPoolHandle pool, int which);
616 634
617 private: 635 protected:
618 636
619 enum Constants { 637 enum Constants {
620 _loader_constraint_size = 107, // number of entries in constraint table 638 _loader_constraint_size = 107, // number of entries in constraint table
621 _resolution_error_size = 107, // number of entries in resolution error table 639 _resolution_error_size = 107, // number of entries in resolution error table
622 _invoke_method_size = 139, // number of entries in invoke method table 640 _invoke_method_size = 139, // number of entries in invoke method table
663 public: 681 public:
664 // for VM_CounterDecay iteration support 682 // for VM_CounterDecay iteration support
665 friend class CounterDecay; 683 friend class CounterDecay;
666 static Klass* try_get_next_class(); 684 static Klass* try_get_next_class();
667 685
668 private: 686 protected:
669 static void validate_protection_domain(instanceKlassHandle klass, 687 static void validate_protection_domain(instanceKlassHandle klass,
670 Handle class_loader, 688 Handle class_loader,
671 Handle protection_domain, TRAPS); 689 Handle protection_domain, TRAPS);
672 690
673 friend class VM_PopulateDumpSharedSpace; 691 friend class VM_PopulateDumpSharedSpace;
690 static void double_lock_wait(Handle lockObject, TRAPS); 708 static void double_lock_wait(Handle lockObject, TRAPS);
691 static void define_instance_class(instanceKlassHandle k, TRAPS); 709 static void define_instance_class(instanceKlassHandle k, TRAPS);
692 static instanceKlassHandle find_or_define_instance_class(Symbol* class_name, 710 static instanceKlassHandle find_or_define_instance_class(Symbol* class_name,
693 Handle class_loader, 711 Handle class_loader,
694 instanceKlassHandle k, TRAPS); 712 instanceKlassHandle k, TRAPS);
695 static instanceKlassHandle load_shared_class(Symbol* class_name,
696 Handle class_loader, TRAPS);
697 static instanceKlassHandle load_shared_class(instanceKlassHandle ik, 713 static instanceKlassHandle load_shared_class(instanceKlassHandle ik,
698 Handle class_loader, TRAPS); 714 Handle class_loader,
715 Handle protection_domain,
716 TRAPS);
699 static instanceKlassHandle load_instance_class(Symbol* class_name, Handle class_loader, TRAPS); 717 static instanceKlassHandle load_instance_class(Symbol* class_name, Handle class_loader, TRAPS);
700 static Handle compute_loader_lock_object(Handle class_loader, TRAPS); 718 static Handle compute_loader_lock_object(Handle class_loader, TRAPS);
701 static void check_loader_lock_contention(Handle loader_lock, TRAPS); 719 static void check_loader_lock_contention(Handle loader_lock, TRAPS);
702 static bool is_parallelCapable(Handle class_loader); 720 static bool is_parallelCapable(Handle class_loader);
703 static bool is_parallelDefine(Handle class_loader); 721 static bool is_parallelDefine(Handle class_loader);
704 722
705 public: 723 public:
724 static instanceKlassHandle load_shared_class(Symbol* class_name,
725 Handle class_loader,
726 TRAPS);
706 static bool is_ext_class_loader(Handle class_loader); 727 static bool is_ext_class_loader(Handle class_loader);
707 728
708 private: 729 protected:
709 static Klass* find_shared_class(Symbol* class_name); 730 static Klass* find_shared_class(Symbol* class_name);
710 731
711 // Setup link to hierarchy 732 // Setup link to hierarchy
712 static void add_to_hierarchy(instanceKlassHandle k, TRAPS); 733 static void add_to_hierarchy(instanceKlassHandle k, TRAPS);
713 734