@@ -96,6 +96,7 @@ size_t Arguments::_default_SharedBaseAddress = SharedBaseAddress;
96
96
97
97
bool Arguments::_enable_preview = false ;
98
98
99
+ char * Arguments::_default_shared_archive_path = nullptr ;
99
100
char * Arguments::SharedArchivePath = nullptr ;
100
101
char * Arguments::SharedDynamicArchivePath = nullptr ;
101
102
@@ -3410,19 +3411,20 @@ void Arguments::set_shared_spaces_flags_and_archive_paths() {
3410
3411
// Sharing support
3411
3412
// Construct the path to the archive
3412
3413
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;
3426
3428
}
3427
3429
3428
3430
int Arguments::num_archives (const char * archive_path) {
@@ -3474,12 +3476,10 @@ void Arguments::init_shared_archive_paths() {
3474
3476
}
3475
3477
check_unsupported_dumping_properties ();
3476
3478
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)) {
3479
3480
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 () );
3481
3482
}
3482
- FREE_C_HEAP_ARRAY (char , shared_archive_path);
3483
3483
}
3484
3484
3485
3485
if (SharedArchiveFile == nullptr ) {
1 commit comments
openjdk-notifier[bot] commentedon Mar 10, 2023
Review
Issues