< prev index next >

src/hotspot/share/classfile/classLoader.hpp

Print this page

        

*** 25,35 **** #ifndef SHARE_VM_CLASSFILE_CLASSLOADER_HPP #define SHARE_VM_CLASSFILE_CLASSLOADER_HPP #include "jimage.hpp" #include "runtime/handles.hpp" - #include "runtime/orderAccess.hpp" #include "runtime/perfData.hpp" #include "utilities/exceptions.hpp" #include "utilities/macros.hpp" // The VM class loader. --- 25,34 ----
*** 47,63 **** class ClassPathEntry : public CHeapObj<mtClass> { private: ClassPathEntry* volatile _next; public: ! // Next entry in class path ! ClassPathEntry* next() const { return OrderAccess::load_acquire(&_next); } virtual ~ClassPathEntry() {} ! void set_next(ClassPathEntry* next) { ! // may have unlocked readers, so ensure visibility. ! OrderAccess::release_store(&_next, next); ! } virtual bool is_modules_image() const = 0; virtual bool is_jar_file() const = 0; virtual const char* name() const = 0; virtual JImageFile* jimage() const = 0; // Constructor --- 46,58 ---- class ClassPathEntry : public CHeapObj<mtClass> { private: ClassPathEntry* volatile _next; public: ! ClassPathEntry* next() const; virtual ~ClassPathEntry() {} ! void set_next(ClassPathEntry* next); virtual bool is_modules_image() const = 0; virtual bool is_jar_file() const = 0; virtual const char* name() const = 0; virtual JImageFile* jimage() const = 0; // Constructor
*** 394,462 **** static void classLoader_init2(TRAPS); CDS_ONLY(static void initialize_shared_path();) static int compute_Object_vtable(); ! static ClassPathEntry* classpath_entry(int n) { ! assert(n >= 0, "sanity"); ! if (n == 0) { ! assert(has_jrt_entry(), "No class path entry at 0 for exploded module builds"); ! return ClassLoader::_jrt_entry; ! } else { ! // The java runtime image is always the first entry ! // in the FileMapInfo::_classpath_entry_table. Even though ! // the _jrt_entry is not included in the _first_append_entry ! // linked list, it must be accounted for when comparing the ! // class path vs. the shared archive class path. ! ClassPathEntry* e = ClassLoader::_first_append_entry; ! while (--n >= 1) { ! assert(e != NULL, "Not that many classpath entries."); ! e = e->next(); ! } ! return e; ! } ! } static bool is_in_patch_mod_entries(Symbol* module_name); #if INCLUDE_CDS // Sharing dump and restore // Helper function used by CDS code to get the number of boot classpath // entries during shared classpath setup time. ! static int num_boot_classpath_entries() { ! assert(DumpSharedSpaces, "Should only be called at CDS dump time"); ! assert(has_jrt_entry(), "must have a java runtime image"); ! int num_entries = 1; // count the runtime image ! ClassPathEntry* e = ClassLoader::_first_append_entry; ! while (e != NULL) { ! num_entries ++; ! e = e->next(); ! } ! return num_entries; ! } ! static ClassPathEntry* get_next_boot_classpath_entry(ClassPathEntry* e) { ! if (e == ClassLoader::_jrt_entry) { ! return ClassLoader::_first_append_entry; ! } else { ! return e->next(); ! } ! } // Helper function used by CDS code to get the number of app classpath // entries during shared classpath setup time. ! static int num_app_classpath_entries() { ! assert(DumpSharedSpaces, "Should only be called at CDS dump time"); ! int num_entries = 0; ! ClassPathEntry* e= ClassLoader::_app_classpath_entries; ! while (e != NULL) { ! num_entries ++; ! e = e->next(); ! } ! return num_entries; ! } static void check_shared_classpath(const char *path); static void finalize_shared_paths_misc_info(); static int get_shared_paths_misc_info_size(); static void* get_shared_paths_misc_info(); --- 389,414 ---- static void classLoader_init2(TRAPS); CDS_ONLY(static void initialize_shared_path();) static int compute_Object_vtable(); ! static ClassPathEntry* classpath_entry(int n); static bool is_in_patch_mod_entries(Symbol* module_name); #if INCLUDE_CDS // Sharing dump and restore // Helper function used by CDS code to get the number of boot classpath // entries during shared classpath setup time. ! static int num_boot_classpath_entries(); ! static ClassPathEntry* get_next_boot_classpath_entry(ClassPathEntry* e); // Helper function used by CDS code to get the number of app classpath // entries during shared classpath setup time. ! static int num_app_classpath_entries(); static void check_shared_classpath(const char *path); static void finalize_shared_paths_misc_info(); static int get_shared_paths_misc_info_size(); static void* get_shared_paths_misc_info();
< prev index next >