< prev index next >

src/hotspot/share/classfile/systemDictionary.hpp

Print this page




 173   do_klass(MutableCallSite_klass,                       java_lang_invoke_MutableCallSite,          Pre                 ) \
 174   do_klass(VolatileCallSite_klass,                      java_lang_invoke_VolatileCallSite,         Pre                 ) \
 175   /* Note: MethodHandle must be first, and VolatileCallSite last in group */                                             \
 176                                                                                                                          \
 177   do_klass(AssertionStatusDirectives_klass,             java_lang_AssertionStatusDirectives,       Pre                 ) \
 178   do_klass(StringBuffer_klass,                          java_lang_StringBuffer,                    Pre                 ) \
 179   do_klass(StringBuilder_klass,                         java_lang_StringBuilder,                   Pre                 ) \
 180   do_klass(internal_Unsafe_klass,                       jdk_internal_misc_Unsafe,                  Pre                 ) \
 181   do_klass(module_Modules_klass,                        jdk_internal_module_Modules,               Pre                 ) \
 182                                                                                                                          \
 183   /* support for CDS */                                                                                                  \
 184   do_klass(ByteArrayInputStream_klass,                  java_io_ByteArrayInputStream,              Pre                 ) \
 185   do_klass(File_klass,                                  java_io_File,                              Pre                 ) \
 186   do_klass(URL_klass,                                   java_net_URL,                              Pre                 ) \
 187   do_klass(Jar_Manifest_klass,                          java_util_jar_Manifest,                    Pre                 ) \
 188   do_klass(jdk_internal_loader_ClassLoaders_AppClassLoader_klass,      jdk_internal_loader_ClassLoaders_AppClassLoader,       Pre ) \
 189   do_klass(jdk_internal_loader_ClassLoaders_PlatformClassLoader_klass, jdk_internal_loader_ClassLoaders_PlatformClassLoader,  Pre ) \
 190   do_klass(CodeSource_klass,                            java_security_CodeSource,                  Pre                 ) \
 191   do_klass(ParseUtil_klass,                             sun_net_www_ParseUtil,                     Pre                 ) \
 192                                                                                                                          \
 193   /* support for valhalla "shady" value type bytecode transformer */                                                     \
 194   do_klass(Valhalla_MVT1_0_klass,                       valhalla_shady_MVT1_0,                     MVTClasses          ) \
 195                                                                                                                          \
 196   do_klass(StackTraceElement_klass,                     java_lang_StackTraceElement,               Opt                 ) \
 197                                                                                                                          \
 198   /* It's okay if this turns out to be NULL in non-1.4 JDKs. */                                                          \
 199   do_klass(nio_Buffer_klass,                            java_nio_Buffer,                           Opt                 ) \
 200                                                                                                                          \
 201   /* Stack Walking */                                                                                                    \
 202   do_klass(StackWalker_klass,                           java_lang_StackWalker,                     Opt                 ) \
 203   do_klass(AbstractStackWalker_klass,                   java_lang_StackStreamFactory_AbstractStackWalker, Opt          ) \
 204   do_klass(StackFrameInfo_klass,                        java_lang_StackFrameInfo,                  Opt                 ) \
 205   do_klass(LiveStackFrameInfo_klass,                    java_lang_LiveStackFrameInfo,              Opt                 ) \
 206                                                                                                                          \
 207   /* Preload boxing klasses */                                                                                           \
 208   do_klass(Boolean_klass,                               java_lang_Boolean,                         Pre                 ) \
 209   do_klass(Character_klass,                             java_lang_Character,                       Pre                 ) \
 210   do_klass(Float_klass,                                 java_lang_Float,                           Pre                 ) \
 211   do_klass(Double_klass,                                java_lang_Double,                          Pre                 ) \
 212   do_klass(Byte_klass,                                  java_lang_Byte,                            Pre                 ) \
 213   do_klass(Short_klass,                                 java_lang_Short,                           Pre                 ) \
 214   do_klass(Integer_klass,                               java_lang_Integer,                         Pre                 ) \
 215   do_klass(Long_klass,                                  java_lang_Long,                            Pre                 ) \
 216                                                                                                                          \
 217   do_klass(___Value_klass,                              java_lang____Value,                        ValhallaClasses     ) \
 218                                                                                                                          \
 219   /* Extensions */                                                                                                       \
 220   WK_KLASSES_DO_EXT(do_klass)                                                                                            \
 221   /* JVMCI classes. These are loaded on-demand. */                                                                       \
 222   JVMCI_WK_KLASSES_DO(do_klass)                                                                                          \
 223                                                                                                                          \
 224   /*end*/
 225 
 226 
 227 class SystemDictionary : AllStatic {
 228   friend class VMStructs;
 229   friend class SystemDictionaryHandles;
 230   friend class SharedClassUtil;
 231 
 232  public:
 233   enum WKID {
 234     NO_WKID = 0,
 235 
 236     #define WK_KLASS_ENUM(name, symbol, ignore_o) WK_KLASS_ENUM_NAME(name), WK_KLASS_ENUM_NAME(symbol) = WK_KLASS_ENUM_NAME(name),
 237     WK_KLASSES_DO(WK_KLASS_ENUM)


 650   // ProtectionDomain cache
 651   static ProtectionDomainCacheTable*   _pd_cache_table;
 652 
 653 protected:
 654   static void validate_protection_domain(InstanceKlass* klass,
 655                                          Handle class_loader,
 656                                          Handle protection_domain, TRAPS);
 657 
 658   friend class VM_PopulateDumpSharedSpace;
 659   friend class TraversePlaceholdersClosure;
 660   static Dictionary*         shared_dictionary() { return _shared_dictionary; }
 661   static PlaceholderTable*   placeholders() { return _placeholders; }
 662   static LoaderConstraintTable* constraints() { return _loader_constraints; }
 663   static ResolutionErrorTable* resolution_errors() { return _resolution_errors; }
 664   static SymbolPropertyTable* invoke_method_table() { return _invoke_method_table; }
 665 
 666   // Basic loading operations
 667   static Klass* resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
 668   static Klass* do_resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
 669   static Klass* resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
 670   static Klass* resolve_dvt_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
 671   static InstanceKlass* handle_parallel_super_load(Symbol* class_name, Symbol* supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS);
 672   // Wait on SystemDictionary_lock; unlocks lockObject before
 673   // waiting; relocks lockObject with correct recursion count
 674   // after waiting, but before reentering SystemDictionary_lock
 675   // to preserve lock order semantics.
 676   static void double_lock_wait(Handle lockObject, TRAPS);
 677   static void define_instance_class(InstanceKlass* k, TRAPS);
 678   static InstanceKlass* find_or_define_instance_class(Symbol* class_name,
 679                                                 Handle class_loader,
 680                                                 InstanceKlass* k, TRAPS);
 681   static bool is_shared_class_visible(Symbol* class_name, InstanceKlass* ik,
 682                                       Handle class_loader, TRAPS);
 683   static InstanceKlass* load_shared_class(InstanceKlass* ik,
 684                                           Handle class_loader,
 685                                           Handle protection_domain,
 686                                           TRAPS);
 687   static InstanceKlass* load_instance_class(Symbol* class_name, Handle class_loader, TRAPS);
 688   static Handle compute_loader_lock_object(Handle class_loader, TRAPS);
 689   static void check_loader_lock_contention(Handle loader_lock, TRAPS);
 690   static bool is_parallelCapable(Handle class_loader);




 173   do_klass(MutableCallSite_klass,                       java_lang_invoke_MutableCallSite,          Pre                 ) \
 174   do_klass(VolatileCallSite_klass,                      java_lang_invoke_VolatileCallSite,         Pre                 ) \
 175   /* Note: MethodHandle must be first, and VolatileCallSite last in group */                                             \
 176                                                                                                                          \
 177   do_klass(AssertionStatusDirectives_klass,             java_lang_AssertionStatusDirectives,       Pre                 ) \
 178   do_klass(StringBuffer_klass,                          java_lang_StringBuffer,                    Pre                 ) \
 179   do_klass(StringBuilder_klass,                         java_lang_StringBuilder,                   Pre                 ) \
 180   do_klass(internal_Unsafe_klass,                       jdk_internal_misc_Unsafe,                  Pre                 ) \
 181   do_klass(module_Modules_klass,                        jdk_internal_module_Modules,               Pre                 ) \
 182                                                                                                                          \
 183   /* support for CDS */                                                                                                  \
 184   do_klass(ByteArrayInputStream_klass,                  java_io_ByteArrayInputStream,              Pre                 ) \
 185   do_klass(File_klass,                                  java_io_File,                              Pre                 ) \
 186   do_klass(URL_klass,                                   java_net_URL,                              Pre                 ) \
 187   do_klass(Jar_Manifest_klass,                          java_util_jar_Manifest,                    Pre                 ) \
 188   do_klass(jdk_internal_loader_ClassLoaders_AppClassLoader_klass,      jdk_internal_loader_ClassLoaders_AppClassLoader,       Pre ) \
 189   do_klass(jdk_internal_loader_ClassLoaders_PlatformClassLoader_klass, jdk_internal_loader_ClassLoaders_PlatformClassLoader,  Pre ) \
 190   do_klass(CodeSource_klass,                            java_security_CodeSource,                  Pre                 ) \
 191   do_klass(ParseUtil_klass,                             sun_net_www_ParseUtil,                     Pre                 ) \
 192                                                                                                                          \


 193                                                                                                                          \
 194   do_klass(StackTraceElement_klass,                     java_lang_StackTraceElement,               Opt                 ) \
 195                                                                                                                          \
 196   /* It's okay if this turns out to be NULL in non-1.4 JDKs. */                                                          \
 197   do_klass(nio_Buffer_klass,                            java_nio_Buffer,                           Opt                 ) \
 198                                                                                                                          \
 199   /* Stack Walking */                                                                                                    \
 200   do_klass(StackWalker_klass,                           java_lang_StackWalker,                     Opt                 ) \
 201   do_klass(AbstractStackWalker_klass,                   java_lang_StackStreamFactory_AbstractStackWalker, Opt          ) \
 202   do_klass(StackFrameInfo_klass,                        java_lang_StackFrameInfo,                  Opt                 ) \
 203   do_klass(LiveStackFrameInfo_klass,                    java_lang_LiveStackFrameInfo,              Opt                 ) \
 204                                                                                                                          \
 205   /* Preload boxing klasses */                                                                                           \
 206   do_klass(Boolean_klass,                               java_lang_Boolean,                         Pre                 ) \
 207   do_klass(Character_klass,                             java_lang_Character,                       Pre                 ) \
 208   do_klass(Float_klass,                                 java_lang_Float,                           Pre                 ) \
 209   do_klass(Double_klass,                                java_lang_Double,                          Pre                 ) \
 210   do_klass(Byte_klass,                                  java_lang_Byte,                            Pre                 ) \
 211   do_klass(Short_klass,                                 java_lang_Short,                           Pre                 ) \
 212   do_klass(Integer_klass,                               java_lang_Integer,                         Pre                 ) \
 213   do_klass(Long_klass,                                  java_lang_Long,                            Pre                 ) \
 214                                                                                                                          \

 215                                                                                                                          \
 216   /* Extensions */                                                                                                       \
 217   WK_KLASSES_DO_EXT(do_klass)                                                                                            \
 218   /* JVMCI classes. These are loaded on-demand. */                                                                       \
 219   JVMCI_WK_KLASSES_DO(do_klass)                                                                                          \
 220                                                                                                                          \
 221   /*end*/
 222 
 223 
 224 class SystemDictionary : AllStatic {
 225   friend class VMStructs;
 226   friend class SystemDictionaryHandles;
 227   friend class SharedClassUtil;
 228 
 229  public:
 230   enum WKID {
 231     NO_WKID = 0,
 232 
 233     #define WK_KLASS_ENUM(name, symbol, ignore_o) WK_KLASS_ENUM_NAME(name), WK_KLASS_ENUM_NAME(symbol) = WK_KLASS_ENUM_NAME(name),
 234     WK_KLASSES_DO(WK_KLASS_ENUM)


 647   // ProtectionDomain cache
 648   static ProtectionDomainCacheTable*   _pd_cache_table;
 649 
 650 protected:
 651   static void validate_protection_domain(InstanceKlass* klass,
 652                                          Handle class_loader,
 653                                          Handle protection_domain, TRAPS);
 654 
 655   friend class VM_PopulateDumpSharedSpace;
 656   friend class TraversePlaceholdersClosure;
 657   static Dictionary*         shared_dictionary() { return _shared_dictionary; }
 658   static PlaceholderTable*   placeholders() { return _placeholders; }
 659   static LoaderConstraintTable* constraints() { return _loader_constraints; }
 660   static ResolutionErrorTable* resolution_errors() { return _resolution_errors; }
 661   static SymbolPropertyTable* invoke_method_table() { return _invoke_method_table; }
 662 
 663   // Basic loading operations
 664   static Klass* resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
 665   static Klass* do_resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
 666   static Klass* resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);

 667   static InstanceKlass* handle_parallel_super_load(Symbol* class_name, Symbol* supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS);
 668   // Wait on SystemDictionary_lock; unlocks lockObject before
 669   // waiting; relocks lockObject with correct recursion count
 670   // after waiting, but before reentering SystemDictionary_lock
 671   // to preserve lock order semantics.
 672   static void double_lock_wait(Handle lockObject, TRAPS);
 673   static void define_instance_class(InstanceKlass* k, TRAPS);
 674   static InstanceKlass* find_or_define_instance_class(Symbol* class_name,
 675                                                 Handle class_loader,
 676                                                 InstanceKlass* k, TRAPS);
 677   static bool is_shared_class_visible(Symbol* class_name, InstanceKlass* ik,
 678                                       Handle class_loader, TRAPS);
 679   static InstanceKlass* load_shared_class(InstanceKlass* ik,
 680                                           Handle class_loader,
 681                                           Handle protection_domain,
 682                                           TRAPS);
 683   static InstanceKlass* load_instance_class(Symbol* class_name, Handle class_loader, TRAPS);
 684   static Handle compute_loader_lock_object(Handle class_loader, TRAPS);
 685   static void check_loader_lock_contention(Handle loader_lock, TRAPS);
 686   static bool is_parallelCapable(Handle class_loader);


< prev index next >