hotspot/src/share/vm/classfile/systemDictionary.hpp
changeset 34257 4be3504cc03b
parent 33606 af4ec8a4635b
child 34260 140ad0a387ff
equal deleted inserted replaced
34132:aa73af640c61 34257:4be3504cc03b
    25 #ifndef SHARE_VM_CLASSFILE_SYSTEMDICTIONARY_HPP
    25 #ifndef SHARE_VM_CLASSFILE_SYSTEMDICTIONARY_HPP
    26 #define SHARE_VM_CLASSFILE_SYSTEMDICTIONARY_HPP
    26 #define SHARE_VM_CLASSFILE_SYSTEMDICTIONARY_HPP
    27 
    27 
    28 #include "classfile/classFileStream.hpp"
    28 #include "classfile/classFileStream.hpp"
    29 #include "classfile/classLoader.hpp"
    29 #include "classfile/classLoader.hpp"
       
    30 #include "classfile/systemDictionary_ext.hpp"
    30 #include "oops/objArrayOop.hpp"
    31 #include "oops/objArrayOop.hpp"
    31 #include "oops/symbol.hpp"
    32 #include "oops/symbol.hpp"
    32 #include "runtime/java.hpp"
    33 #include "runtime/java.hpp"
    33 #include "runtime/reflectionUtils.hpp"
    34 #include "runtime/reflectionUtils.hpp"
    34 #include "utilities/hashtable.hpp"
    35 #include "utilities/hashtable.hpp"
   192   do_klass(Byte_klass,                                  java_lang_Byte,                            Pre                 ) \
   193   do_klass(Byte_klass,                                  java_lang_Byte,                            Pre                 ) \
   193   do_klass(Short_klass,                                 java_lang_Short,                           Pre                 ) \
   194   do_klass(Short_klass,                                 java_lang_Short,                           Pre                 ) \
   194   do_klass(Integer_klass,                               java_lang_Integer,                         Pre                 ) \
   195   do_klass(Integer_klass,                               java_lang_Integer,                         Pre                 ) \
   195   do_klass(Long_klass,                                  java_lang_Long,                            Pre                 ) \
   196   do_klass(Long_klass,                                  java_lang_Long,                            Pre                 ) \
   196                                                                                                                          \
   197                                                                                                                          \
       
   198   /* Extensions */                                                                                                       \
       
   199   WK_KLASSES_DO_EXT(do_klass)                                                                                            \
   197   /* JVMCI classes. These are loaded on-demand. */                                                                       \
   200   /* JVMCI classes. These are loaded on-demand. */                                                                       \
   198   JVMCI_WK_KLASSES_DO(do_klass) \
   201   JVMCI_WK_KLASSES_DO(do_klass)                                                                                          \
   199 
   202                                                                                                                          \
   200   /*end*/
   203   /*end*/
   201 
   204 
   202 
   205 
   203 class SystemDictionary : AllStatic {
   206 class SystemDictionary : AllStatic {
   204   friend class VMStructs;
   207   friend class VMStructs;
   205   friend class SystemDictionaryHandles;
   208   friend class SystemDictionaryHandles;
       
   209   friend class SharedClassUtil;
   206 
   210 
   207  public:
   211  public:
   208   enum WKID {
   212   enum WKID {
   209     NO_WKID = 0,
   213     NO_WKID = 0,
   210 
   214 
   665   static Klass* find_class(Symbol* class_name, ClassLoaderData* loader_data);
   669   static Klass* find_class(Symbol* class_name, ClassLoaderData* loader_data);
   666 
   670 
   667   // Basic find on classes in the midst of being loaded
   671   // Basic find on classes in the midst of being loaded
   668   static Symbol* find_placeholder(Symbol* name, ClassLoaderData* loader_data);
   672   static Symbol* find_placeholder(Symbol* name, ClassLoaderData* loader_data);
   669 
   673 
   670   // Updating entry in dictionary
       
   671   // Add a completely loaded class
       
   672   static void add_klass(int index, Symbol* class_name,
       
   673                         ClassLoaderData* loader_data, KlassHandle obj);
       
   674 
       
   675   // Add a placeholder for a class being loaded
   674   // Add a placeholder for a class being loaded
   676   static void add_placeholder(int index,
   675   static void add_placeholder(int index,
   677                               Symbol* class_name,
   676                               Symbol* class_name,
   678                               ClassLoaderData* loader_data);
   677                               ClassLoaderData* loader_data);
   679   static void remove_placeholder(int index,
   678   static void remove_placeholder(int index,