Skip to content

Commit 548d552

Browse files
Matias Saavedra Silvacoleenp
Matias Saavedra Silva
authored andcommittedMar 10, 2023
8303548: Arguments::get_default_shared_archive_path() should cache the result for future use
Reviewed-by: ccheung, dholmes
1 parent f2a36b4 commit 548d552

File tree

3 files changed

+18
-18
lines changed

3 files changed

+18
-18
lines changed
 

‎src/hotspot/share/cds/filemap.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@ void FileMapInfo::populate_header(size_t core_region_alignment) {
191191
header_size += base_archive_name_size;
192192
base_archive_name_offset = c_header_size;
193193
}
194-
FREE_C_HEAP_ARRAY(const char, default_base_archive_name);
195194
}
196195
ResourceMark rm;
197196
GrowableArray<const char*>* app_cp_array = create_dumptime_app_classpath_array();

‎src/hotspot/share/runtime/arguments.cpp

+17-17
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ size_t Arguments::_default_SharedBaseAddress = SharedBaseAddress;
9696

9797
bool Arguments::_enable_preview = false;
9898

99+
char* Arguments::_default_shared_archive_path = nullptr;
99100
char* Arguments::SharedArchivePath = nullptr;
100101
char* Arguments::SharedDynamicArchivePath = nullptr;
101102

@@ -3410,19 +3411,20 @@ void Arguments::set_shared_spaces_flags_and_archive_paths() {
34103411
// Sharing support
34113412
// Construct the path to the archive
34123413
char* Arguments::get_default_shared_archive_path() {
3413-
char *default_archive_path;
3414-
char jvm_path[JVM_MAXPATHLEN];
3415-
os::jvm_path(jvm_path, sizeof(jvm_path));
3416-
char *end = strrchr(jvm_path, *os::file_separator());
3417-
if (end != nullptr) *end = '\0';
3418-
size_t jvm_path_len = strlen(jvm_path);
3419-
size_t file_sep_len = strlen(os::file_separator());
3420-
const size_t len = jvm_path_len + file_sep_len + 20;
3421-
default_archive_path = NEW_C_HEAP_ARRAY(char, len, mtArguments);
3422-
jio_snprintf(default_archive_path, len,
3423-
LP64_ONLY(!UseCompressedOops ? "%s%sclasses_nocoops.jsa":) "%s%sclasses.jsa",
3424-
jvm_path, os::file_separator());
3425-
return default_archive_path;
3414+
if (_default_shared_archive_path == nullptr) {
3415+
char jvm_path[JVM_MAXPATHLEN];
3416+
os::jvm_path(jvm_path, sizeof(jvm_path));
3417+
char *end = strrchr(jvm_path, *os::file_separator());
3418+
if (end != nullptr) *end = '\0';
3419+
size_t jvm_path_len = strlen(jvm_path);
3420+
size_t file_sep_len = strlen(os::file_separator());
3421+
const size_t len = jvm_path_len + file_sep_len + 20;
3422+
_default_shared_archive_path = NEW_C_HEAP_ARRAY(char, len, mtArguments);
3423+
jio_snprintf(_default_shared_archive_path, len,
3424+
LP64_ONLY(!UseCompressedOops ? "%s%sclasses_nocoops.jsa":) "%s%sclasses.jsa",
3425+
jvm_path, os::file_separator());
3426+
}
3427+
return _default_shared_archive_path;
34263428
}
34273429

34283430
int Arguments::num_archives(const char* archive_path) {
@@ -3474,12 +3476,10 @@ void Arguments::init_shared_archive_paths() {
34743476
}
34753477
check_unsupported_dumping_properties();
34763478

3477-
char* shared_archive_path = get_default_shared_archive_path();
3478-
if (os::same_files(shared_archive_path, ArchiveClassesAtExit)) {
3479+
if (os::same_files(get_default_shared_archive_path(), ArchiveClassesAtExit)) {
34793480
vm_exit_during_initialization(
3480-
"Cannot specify the default CDS archive for -XX:ArchiveClassesAtExit", shared_archive_path);
3481+
"Cannot specify the default CDS archive for -XX:ArchiveClassesAtExit", get_default_shared_archive_path());
34813482
}
3482-
FREE_C_HEAP_ARRAY(char, shared_archive_path);
34833483
}
34843484

34853485
if (SharedArchiveFile == nullptr) {

‎src/hotspot/share/runtime/arguments.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,7 @@ class Arguments : AllStatic {
470470
// Return nullptr if the arg has expired.
471471
static const char* handle_aliases_and_deprecation(const char* arg);
472472

473+
static char* _default_shared_archive_path;
473474
static char* SharedArchivePath;
474475
static char* SharedDynamicArchivePath;
475476
static size_t _default_SharedBaseAddress; // The default value specified in globals.hpp

1 commit comments

Comments
 (1)

openjdk-notifier[bot] commented on Mar 10, 2023

@openjdk-notifier[bot]
Please sign in to comment.