mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-06 09:29:38 +01:00
8303548: Arguments::get_default_shared_archive_path() should cache the result for future use
Reviewed-by: ccheung, dholmes
This commit is contained in:
committed by
Coleen Phillimore
parent
f2a36b4b52
commit
548d552bc1
@@ -191,7 +191,6 @@ void FileMapInfo::populate_header(size_t core_region_alignment) {
|
||||
header_size += base_archive_name_size;
|
||||
base_archive_name_offset = c_header_size;
|
||||
}
|
||||
FREE_C_HEAP_ARRAY(const char, default_base_archive_name);
|
||||
}
|
||||
ResourceMark rm;
|
||||
GrowableArray<const char*>* app_cp_array = create_dumptime_app_classpath_array();
|
||||
|
||||
@@ -96,6 +96,7 @@ size_t Arguments::_default_SharedBaseAddress = SharedBaseAddress;
|
||||
|
||||
bool Arguments::_enable_preview = false;
|
||||
|
||||
char* Arguments::_default_shared_archive_path = nullptr;
|
||||
char* Arguments::SharedArchivePath = nullptr;
|
||||
char* Arguments::SharedDynamicArchivePath = nullptr;
|
||||
|
||||
@@ -3410,19 +3411,20 @@ void Arguments::set_shared_spaces_flags_and_archive_paths() {
|
||||
// Sharing support
|
||||
// Construct the path to the archive
|
||||
char* Arguments::get_default_shared_archive_path() {
|
||||
char *default_archive_path;
|
||||
char jvm_path[JVM_MAXPATHLEN];
|
||||
os::jvm_path(jvm_path, sizeof(jvm_path));
|
||||
char *end = strrchr(jvm_path, *os::file_separator());
|
||||
if (end != nullptr) *end = '\0';
|
||||
size_t jvm_path_len = strlen(jvm_path);
|
||||
size_t file_sep_len = strlen(os::file_separator());
|
||||
const size_t len = jvm_path_len + file_sep_len + 20;
|
||||
default_archive_path = NEW_C_HEAP_ARRAY(char, len, mtArguments);
|
||||
jio_snprintf(default_archive_path, len,
|
||||
LP64_ONLY(!UseCompressedOops ? "%s%sclasses_nocoops.jsa":) "%s%sclasses.jsa",
|
||||
jvm_path, os::file_separator());
|
||||
return default_archive_path;
|
||||
if (_default_shared_archive_path == nullptr) {
|
||||
char jvm_path[JVM_MAXPATHLEN];
|
||||
os::jvm_path(jvm_path, sizeof(jvm_path));
|
||||
char *end = strrchr(jvm_path, *os::file_separator());
|
||||
if (end != nullptr) *end = '\0';
|
||||
size_t jvm_path_len = strlen(jvm_path);
|
||||
size_t file_sep_len = strlen(os::file_separator());
|
||||
const size_t len = jvm_path_len + file_sep_len + 20;
|
||||
_default_shared_archive_path = NEW_C_HEAP_ARRAY(char, len, mtArguments);
|
||||
jio_snprintf(_default_shared_archive_path, len,
|
||||
LP64_ONLY(!UseCompressedOops ? "%s%sclasses_nocoops.jsa":) "%s%sclasses.jsa",
|
||||
jvm_path, os::file_separator());
|
||||
}
|
||||
return _default_shared_archive_path;
|
||||
}
|
||||
|
||||
int Arguments::num_archives(const char* archive_path) {
|
||||
@@ -3474,12 +3476,10 @@ void Arguments::init_shared_archive_paths() {
|
||||
}
|
||||
check_unsupported_dumping_properties();
|
||||
|
||||
char* shared_archive_path = get_default_shared_archive_path();
|
||||
if (os::same_files(shared_archive_path, ArchiveClassesAtExit)) {
|
||||
if (os::same_files(get_default_shared_archive_path(), ArchiveClassesAtExit)) {
|
||||
vm_exit_during_initialization(
|
||||
"Cannot specify the default CDS archive for -XX:ArchiveClassesAtExit", shared_archive_path);
|
||||
"Cannot specify the default CDS archive for -XX:ArchiveClassesAtExit", get_default_shared_archive_path());
|
||||
}
|
||||
FREE_C_HEAP_ARRAY(char, shared_archive_path);
|
||||
}
|
||||
|
||||
if (SharedArchiveFile == nullptr) {
|
||||
|
||||
@@ -470,6 +470,7 @@ class Arguments : AllStatic {
|
||||
// Return nullptr if the arg has expired.
|
||||
static const char* handle_aliases_and_deprecation(const char* arg);
|
||||
|
||||
static char* _default_shared_archive_path;
|
||||
static char* SharedArchivePath;
|
||||
static char* SharedDynamicArchivePath;
|
||||
static size_t _default_SharedBaseAddress; // The default value specified in globals.hpp
|
||||
|
||||
Reference in New Issue
Block a user