Mercurial > hg > graal-compiler
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 |