src/hotspot/share/classfile/systemDictionary.hpp
changeset 51180 b7eb9cc56277
parent 50951 b96466cdfc45
child 51329 9c68699bebe5
equal deleted inserted replaced
51179:516acf6956a2 51180:b7eb9cc56277
    96 // Each well-known class has a short klass name (like object_klass),
    96 // Each well-known class has a short klass name (like object_klass),
    97 // a vmSymbol name (like java_lang_Object), and a flag word
    97 // a vmSymbol name (like java_lang_Object), and a flag word
    98 // that makes some minor distinctions, like whether the klass
    98 // that makes some minor distinctions, like whether the klass
    99 // is preloaded, optional, release-specific, etc.
    99 // is preloaded, optional, release-specific, etc.
   100 // The order of these definitions is significant; it is the order in which
   100 // The order of these definitions is significant; it is the order in which
   101 // preloading is actually performed by initialize_preloaded_classes.
   101 // preloading is actually performed by resolve_preloaded_classes.
   102 
   102 
   103 #define WK_KLASSES_DO(do_klass)                                                                                          \
   103 #define WK_KLASSES_DO(do_klass)                                                                                          \
   104   /* well-known classes */                                                                                               \
   104   /* well-known classes */                                                                                               \
   105   do_klass(Object_klass,                                java_lang_Object,                          Pre                 ) \
   105   do_klass(Object_klass,                                java_lang_Object,                          Pre                 ) \
   106   do_klass(String_klass,                                java_lang_String,                          Pre                 ) \
   106   do_klass(String_klass,                                java_lang_String,                          Pre                 ) \
   415   static InstanceKlass* check_klass_Pre(InstanceKlass* k) { return check_klass(k); }
   415   static InstanceKlass* check_klass_Pre(InstanceKlass* k) { return check_klass(k); }
   416   static InstanceKlass* check_klass_Opt(InstanceKlass* k) { return k; }
   416   static InstanceKlass* check_klass_Opt(InstanceKlass* k) { return k; }
   417 
   417 
   418   JVMCI_ONLY(static InstanceKlass* check_klass_Jvmci(InstanceKlass* k) { return k; })
   418   JVMCI_ONLY(static InstanceKlass* check_klass_Jvmci(InstanceKlass* k) { return k; })
   419 
   419 
   420   static bool initialize_wk_klass(WKID id, int init_opt, TRAPS);
   420   static bool resolve_wk_klass(WKID id, int init_opt, TRAPS);
   421   static void initialize_wk_klasses_until(WKID limit_id, WKID &start_id, TRAPS);
   421   static void resolve_wk_klasses_until(WKID limit_id, WKID &start_id, TRAPS);
   422   static void initialize_wk_klasses_through(WKID end_id, WKID &start_id, TRAPS) {
   422   static void resolve_wk_klasses_through(WKID end_id, WKID &start_id, TRAPS) {
   423     int limit = (int)end_id + 1;
   423     int limit = (int)end_id + 1;
   424     initialize_wk_klasses_until((WKID) limit, start_id, THREAD);
   424     resolve_wk_klasses_until((WKID) limit, start_id, THREAD);
   425   }
   425   }
   426 
   426 
   427 public:
   427 public:
   428   #define WK_KLASS_DECLARE(name, symbol, option) \
   428   #define WK_KLASS_DECLARE(name, symbol, option) \
   429     static InstanceKlass* name() { return check_klass_##option(_well_known_klasses[WK_KLASS_ENUM_NAME(name)]); } \
   429     static InstanceKlass* name() { return check_klass_##option(_well_known_klasses[WK_KLASS_ENUM_NAME(name)]); } \
   706   // Won't throw, but can block.
   706   // Won't throw, but can block.
   707   static void resolution_cleanups(Symbol* class_name,
   707   static void resolution_cleanups(Symbol* class_name,
   708                                   ClassLoaderData* loader_data,
   708                                   ClassLoaderData* loader_data,
   709                                   TRAPS);
   709                                   TRAPS);
   710 
   710 
   711   // Initialization
   711   // Resolve preloaded classes so they can be used like SystemDictionary::String_klass()
   712   static void initialize_preloaded_classes(TRAPS);
   712   static void resolve_preloaded_classes(TRAPS);
   713 
   713 
   714   // Class loader constraints
   714   // Class loader constraints
   715   static void check_constraints(unsigned int hash,
   715   static void check_constraints(unsigned int hash,
   716                                 InstanceKlass* k, Handle loader,
   716                                 InstanceKlass* k, Handle loader,
   717                                 bool defining, TRAPS);
   717                                 bool defining, TRAPS);