45 // The java runtime image is always the first entry 46 // in the FileMapInfo::_classpath_entry_table. Even though 47 // the _jrt_entry is not included in the _first_append_entry 48 // linked list, it must be accounted for when comparing the 49 // class path vs. the shared archive class path. 50 ClassPathEntry* e = ClassLoader::_first_append_entry; 51 while (--n >= 1) { 52 assert(e != NULL, "Not that many classpath entries."); 53 e = e->next(); 54 } 55 return e; 56 } 57 } 58 59 #if INCLUDE_CDS 60 61 // Helper function used by CDS code to get the number of boot classpath 62 // entries during shared classpath setup time. 63 64 inline int ClassLoader::num_boot_classpath_entries() { 65 assert(DumpSharedSpaces || DynamicDumpSharedSpaces, 66 "Should only be called at CDS dump time"); 67 assert(has_jrt_entry(), "must have a java runtime image"); 68 int num_entries = 1; // count the runtime image 69 ClassPathEntry* e = ClassLoader::_first_append_entry; 70 while (e != NULL) { 71 num_entries ++; 72 e = e->next(); 73 } 74 return num_entries; 75 } 76 77 inline ClassPathEntry* ClassLoader::get_next_boot_classpath_entry(ClassPathEntry* e) { 78 if (e == ClassLoader::_jrt_entry) { 79 return ClassLoader::_first_append_entry; 80 } else { 81 return e->next(); 82 } 83 } 84 85 // Helper function used by CDS code to get the number of app classpath 86 // entries during shared classpath setup time. 87 inline int ClassLoader::num_app_classpath_entries() { 88 assert(DumpSharedSpaces || DynamicDumpSharedSpaces, 89 "Should only be called at CDS dump time"); 90 int num_entries = 0; 91 ClassPathEntry* e= ClassLoader::_app_classpath_entries; 92 while (e != NULL) { 93 num_entries ++; 94 e = e->next(); 95 } 96 return num_entries; 97 } 98 99 #endif // INCLUDE_CDS 100 101 #endif // SHARE_CLASSFILE_CLASSLOADER_INLINE_HPP | 45 // The java runtime image is always the first entry 46 // in the FileMapInfo::_classpath_entry_table. Even though 47 // the _jrt_entry is not included in the _first_append_entry 48 // linked list, it must be accounted for when comparing the 49 // class path vs. the shared archive class path. 50 ClassPathEntry* e = ClassLoader::_first_append_entry; 51 while (--n >= 1) { 52 assert(e != NULL, "Not that many classpath entries."); 53 e = e->next(); 54 } 55 return e; 56 } 57 } 58 59 #if INCLUDE_CDS 60 61 // Helper function used by CDS code to get the number of boot classpath 62 // entries during shared classpath setup time. 63 64 inline int ClassLoader::num_boot_classpath_entries() { 65 assert(Arguments::is_dumping_archive(), 66 "Should only be called at CDS dump time"); 67 assert(has_jrt_entry(), "must have a java runtime image"); 68 int num_entries = 1; // count the runtime image 69 ClassPathEntry* e = ClassLoader::_first_append_entry; 70 while (e != NULL) { 71 num_entries ++; 72 e = e->next(); 73 } 74 return num_entries; 75 } 76 77 inline ClassPathEntry* ClassLoader::get_next_boot_classpath_entry(ClassPathEntry* e) { 78 if (e == ClassLoader::_jrt_entry) { 79 return ClassLoader::_first_append_entry; 80 } else { 81 return e->next(); 82 } 83 } 84 85 // Helper function used by CDS code to get the number of app classpath 86 // entries during shared classpath setup time. 87 inline int ClassLoader::num_app_classpath_entries() { 88 assert(Arguments::is_dumping_archive(), 89 "Should only be called at CDS dump time"); 90 int num_entries = 0; 91 ClassPathEntry* e= ClassLoader::_app_classpath_entries; 92 while (e != NULL) { 93 num_entries ++; 94 e = e->next(); 95 } 96 return num_entries; 97 } 98 99 #endif // INCLUDE_CDS 100 101 #endif // SHARE_CLASSFILE_CLASSLOADER_INLINE_HPP |