Skip to content

Commit 47c1960

Browse files
committed
8351689: -Xshare:dump with default classlist fails on static JDK
Reviewed-by: iklam, dholmes
1 parent 6b82b42 commit 47c1960

File tree

1 file changed

+5
-26
lines changed

1 file changed

+5
-26
lines changed

src/hotspot/share/cds/metaspaceShared.cpp

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -844,37 +844,16 @@ void MetaspaceShared::adjust_heap_sizes_for_dumping() {
844844
#endif // INCLUDE_CDS_JAVA_HEAP && _LP64
845845

846846
void MetaspaceShared::get_default_classlist(char* default_classlist, const size_t buf_size) {
847-
// Construct the path to the class list (in jre/lib)
848-
// Walk up two directories from the location of the VM and
849-
// optionally tack on "lib" (depending on platform)
850-
os::jvm_path(default_classlist, (jint)(buf_size));
851-
for (int i = 0; i < 3; i++) {
852-
char *end = strrchr(default_classlist, *os::file_separator());
853-
if (end != nullptr) *end = '\0';
854-
}
855-
size_t classlist_path_len = strlen(default_classlist);
856-
if (classlist_path_len >= 3) {
857-
if (strcmp(default_classlist + classlist_path_len - 3, "lib") != 0) {
858-
if (classlist_path_len < buf_size - 4) {
859-
jio_snprintf(default_classlist + classlist_path_len,
860-
buf_size - classlist_path_len,
861-
"%slib", os::file_separator());
862-
classlist_path_len += 4;
863-
}
864-
}
865-
}
866-
if (classlist_path_len < buf_size - 10) {
867-
jio_snprintf(default_classlist + classlist_path_len,
868-
buf_size - classlist_path_len,
869-
"%sclasslist", os::file_separator());
870-
}
847+
const char* filesep = os::file_separator();
848+
jio_snprintf(default_classlist, buf_size, "%s%slib%sclasslist",
849+
Arguments::get_java_home(), filesep, filesep);
871850
}
872851

873852
void MetaspaceShared::preload_classes(TRAPS) {
874853
char default_classlist[JVM_MAXPATHLEN];
875854
const char* classlist_path;
876855

877-
get_default_classlist(default_classlist, sizeof(default_classlist));
856+
get_default_classlist(default_classlist, JVM_MAXPATHLEN);
878857
if (SharedClassListFile == nullptr) {
879858
classlist_path = default_classlist;
880859
} else {
@@ -929,7 +908,7 @@ void MetaspaceShared::preload_and_dump_impl(StaticArchiveBuilder& builder, TRAPS
929908
if (CDSConfig::is_dumping_preimage_static_archive()) {
930909
log_info(cds)("Reading lambda form invokers from JDK default classlist ...");
931910
char default_classlist[JVM_MAXPATHLEN];
932-
get_default_classlist(default_classlist, sizeof(default_classlist));
911+
get_default_classlist(default_classlist, JVM_MAXPATHLEN);
933912
struct stat statbuf;
934913
if (os::stat(default_classlist, &statbuf) == 0) {
935914
ClassListParser::parse_classlist(default_classlist,

0 commit comments

Comments
 (0)