< prev index next >

src/hotspot/share/classfile/systemDictionary.hpp

Print this page

*** 83,104 **** class ProtectionDomainCacheTable; class ProtectionDomainCacheEntry; class GCTimer; class OopStorage; ! // Certain classes are preloaded, such as java.lang.Object and java.lang.String. ! // They are all "well-known", in the sense that no class loader is allowed // to provide a different definition. // ! // These klasses must all have names defined in vmSymbols. #define WK_KLASS_ENUM_NAME(kname) kname##_knum // Each well-known class has a short klass name (like object_klass), // and a vmSymbol name (like java_lang_Object). // The order of these definitions is significant; it is the order in which ! // preloading is actually performed by resolve_preloaded_classes. #define WK_KLASSES_DO(do_klass) \ /* well-known classes */ \ do_klass(Object_klass, java_lang_Object ) \ do_klass(String_klass, java_lang_String ) \ --- 83,105 ---- class ProtectionDomainCacheTable; class ProtectionDomainCacheEntry; class GCTimer; class OopStorage; ! // Certain classes, such as java.lang.Object and java.lang.String, ! // are all "well-known", in the sense that no class loader is allowed // to provide a different definition. // ! // These klasses must all have names defined in vmSymbols. They are ! // resolved during early VM start-up in a specific order. #define WK_KLASS_ENUM_NAME(kname) kname##_knum // Each well-known class has a short klass name (like object_klass), // and a vmSymbol name (like java_lang_Object). // The order of these definitions is significant; it is the order in which ! // class resolution is actually performed by resolve_well_known_classes. #define WK_KLASSES_DO(do_klass) \ /* well-known classes */ \ do_klass(Object_klass, java_lang_Object ) \ do_klass(String_klass, java_lang_String ) \
*** 125,135 **** do_klass(OutOfMemoryError_klass, java_lang_OutOfMemoryError ) \ do_klass(StackOverflowError_klass, java_lang_StackOverflowError ) \ do_klass(IllegalMonitorStateException_klass, java_lang_IllegalMonitorStateException ) \ do_klass(Reference_klass, java_lang_ref_Reference ) \ \ ! /* Preload ref klasses and set reference types */ \ do_klass(SoftReference_klass, java_lang_ref_SoftReference ) \ do_klass(WeakReference_klass, java_lang_ref_WeakReference ) \ do_klass(FinalReference_klass, java_lang_ref_FinalReference ) \ do_klass(PhantomReference_klass, java_lang_ref_PhantomReference ) \ do_klass(Finalizer_klass, java_lang_ref_Finalizer ) \ --- 126,136 ---- do_klass(OutOfMemoryError_klass, java_lang_OutOfMemoryError ) \ do_klass(StackOverflowError_klass, java_lang_StackOverflowError ) \ do_klass(IllegalMonitorStateException_klass, java_lang_IllegalMonitorStateException ) \ do_klass(Reference_klass, java_lang_ref_Reference ) \ \ ! /* ref klasses and set reference types */ \ do_klass(SoftReference_klass, java_lang_ref_SoftReference ) \ do_klass(WeakReference_klass, java_lang_ref_WeakReference ) \ do_klass(FinalReference_klass, java_lang_ref_FinalReference ) \ do_klass(PhantomReference_klass, java_lang_ref_PhantomReference ) \ do_klass(Finalizer_klass, java_lang_ref_Finalizer ) \
*** 198,208 **** do_klass(LiveStackFrameInfo_klass, java_lang_LiveStackFrameInfo ) \ \ /* support for stack dump lock analysis */ \ do_klass(java_util_concurrent_locks_AbstractOwnableSynchronizer_klass, java_util_concurrent_locks_AbstractOwnableSynchronizer) \ \ ! /* Preload boxing klasses */ \ do_klass(Boolean_klass, java_lang_Boolean ) \ do_klass(Character_klass, java_lang_Character ) \ do_klass(Float_klass, java_lang_Float ) \ do_klass(Double_klass, java_lang_Double ) \ do_klass(Byte_klass, java_lang_Byte ) \ --- 199,209 ---- do_klass(LiveStackFrameInfo_klass, java_lang_LiveStackFrameInfo ) \ \ /* support for stack dump lock analysis */ \ do_klass(java_util_concurrent_locks_AbstractOwnableSynchronizer_klass, java_util_concurrent_locks_AbstractOwnableSynchronizer) \ \ ! /* boxing klasses */ \ do_klass(Boolean_klass, java_lang_Boolean ) \ do_klass(Character_klass, java_lang_Character ) \ do_klass(Float_klass, java_lang_Float ) \ do_klass(Double_klass, java_lang_Double ) \ do_klass(Byte_klass, java_lang_Byte ) \
*** 389,399 **** static void verify(); // Initialization static void initialize(TRAPS); ! // Checked fast access to commonly used classes - mostly preloaded static InstanceKlass* check_klass(InstanceKlass* k) { assert(k != NULL, "klass not loaded"); return k; } --- 390,401 ---- static void verify(); // Initialization static void initialize(TRAPS); ! // Checked fast access to the well-known classes -- so that you don't try to use them ! // before they are resolved. static InstanceKlass* check_klass(InstanceKlass* k) { assert(k != NULL, "klass not loaded"); return k; }
*** 433,442 **** --- 435,450 ---- static InstanceKlass* box_klass(BasicType t) { assert((uint)t < T_VOID+1, "range check"); return check_klass(_box_klasses[t]); } static BasicType box_klass_type(Klass* k); // inverse of box_klass + #ifdef ASSERT + static bool is_well_known_klass(Klass* k) { + return is_well_known_klass(k->name()); + } + static bool is_well_known_klass(Symbol* class_name); + #endif protected: // Returns the class loader data to be used when looking up/updating the // system dictionary. static ClassLoaderData *class_loader_data(Handle class_loader) {
*** 693,715 **** // Won't throw, but can block. static void resolution_cleanups(Symbol* class_name, ClassLoaderData* loader_data, TRAPS); ! // Resolve preloaded classes so they can be used like SystemDictionary::String_klass() ! static void resolve_preloaded_classes(TRAPS); // Class loader constraints static void check_constraints(unsigned int hash, InstanceKlass* k, Handle loader, bool defining, TRAPS); static void update_dictionary(unsigned int d_hash, int p_index, unsigned int p_hash, InstanceKlass* k, Handle loader, TRAPS); - // Variables holding commonly used klasses (preloaded) static InstanceKlass* _well_known_klasses[]; // table of box klasses (int_klass, etc.) static InstanceKlass* _box_klasses[T_VOID+1]; --- 701,722 ---- // Won't throw, but can block. static void resolution_cleanups(Symbol* class_name, ClassLoaderData* loader_data, TRAPS); ! // Resolve well_known classes so they can be used like SystemDictionary::String_klass() ! static void resolve_well_known_classes(TRAPS); // Class loader constraints static void check_constraints(unsigned int hash, InstanceKlass* k, Handle loader, bool defining, TRAPS); static void update_dictionary(unsigned int d_hash, int p_index, unsigned int p_hash, InstanceKlass* k, Handle loader, TRAPS); static InstanceKlass* _well_known_klasses[]; // table of box klasses (int_klass, etc.) static InstanceKlass* _box_klasses[T_VOID+1];
< prev index next >