8356998: Convert -Xlog:cds to -Xlog:aot (step 2)
Reviewed-by: ccheung, matsaave
This commit is contained in:
parent
7077535c0b
commit
f8d7f663c1
@ -162,7 +162,7 @@ define CreateCDSArchive
|
||||
endif
|
||||
|
||||
ifeq ($(DEBUG_CDS_ARCHIVE), true)
|
||||
$1_$2_CDS_DUMP_FLAGS += -Xlog:cds+map*=trace:file=$$(JDK_IMAGE_DIR)/$$($1_$2_CDS_ARCHIVE).cdsmap:none:filesize=0
|
||||
$1_$2_CDS_DUMP_FLAGS += -Xlog:aot+map*=trace:file=$$(JDK_IMAGE_DIR)/$$($1_$2_CDS_ARCHIVE).cdsmap:none:filesize=0
|
||||
endif
|
||||
|
||||
$$(eval $$(call SetupExecute, $1_$2_gen_cds_archive_jdk, \
|
||||
|
@ -22,9 +22,10 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "cds/aotClassLinker.hpp"
|
||||
#include "cds/aotArtifactFinder.hpp"
|
||||
#include "cds/aotClassInitializer.hpp"
|
||||
#include "cds/aotClassLinker.hpp"
|
||||
#include "cds/aotLogging.hpp"
|
||||
#include "cds/aotReferenceObjSupport.hpp"
|
||||
#include "cds/dumpTimeClassInfo.inline.hpp"
|
||||
#include "cds/heapShared.hpp"
|
||||
@ -155,9 +156,9 @@ void AOTArtifactFinder::find_artifacts() {
|
||||
if (!info.is_excluded() && _seen_classes->get(k) == nullptr) {
|
||||
info.set_excluded();
|
||||
info.set_has_checked_exclusion();
|
||||
if (log_is_enabled(Debug, cds)) {
|
||||
if (aot_log_is_enabled(Debug, aot)) {
|
||||
ResourceMark rm;
|
||||
log_debug(cds)("Skipping %s: %s class", k->name()->as_C_string(),
|
||||
aot_log_debug(aot)("Skipping %s: %s class", k->name()->as_C_string(),
|
||||
k->is_hidden() ? "Unreferenced hidden" : "AOT tooling");
|
||||
}
|
||||
}
|
||||
|
@ -219,7 +219,7 @@ bool AOTClassInitializer::can_archive_initialized_mirror(InstanceKlass* ik) {
|
||||
//
|
||||
// Then run the following:
|
||||
// java -XX:AOTMode=record -XX:AOTConfiguration=jc.aotconfig com.sun.tools.javac.Main
|
||||
// java -XX:AOTMode=create -Xlog:cds -XX:AOTCache=jc.aot -XX:AOTConfiguration=jc.aotconfig
|
||||
// java -XX:AOTMode=create -Xlog:aot -XX:AOTCache=jc.aot -XX:AOTConfiguration=jc.aotconfig
|
||||
//
|
||||
// You will see an error like this:
|
||||
//
|
||||
@ -350,9 +350,9 @@ bool AOTClassInitializer::is_runtime_setup_required(InstanceKlass* ik) {
|
||||
void AOTClassInitializer::call_runtime_setup(JavaThread* current, InstanceKlass* ik) {
|
||||
assert(ik->has_aot_initialized_mirror(), "sanity");
|
||||
if (ik->is_runtime_setup_required()) {
|
||||
if (log_is_enabled(Info, cds, init)) {
|
||||
if (log_is_enabled(Info, aot, init)) {
|
||||
ResourceMark rm;
|
||||
log_info(cds, init)("Calling %s::runtimeSetup()", ik->external_name());
|
||||
log_info(aot, init)("Calling %s::runtimeSetup()", ik->external_name());
|
||||
}
|
||||
JavaValue result(T_VOID);
|
||||
JavaCalls::call_static(&result, ik,
|
||||
@ -375,7 +375,7 @@ void AOTClassInitializer::init_test_class(TRAPS) {
|
||||
// -XX:AOTInitTestClass is NOT a general mechanism for including user-defined objects into
|
||||
// the AOT cache. Therefore, this option is NOT available in product JVM.
|
||||
if (AOTInitTestClass != nullptr && CDSConfig::is_initing_classes_at_dump_time()) {
|
||||
log_info(cds)("Debug build only: force initialization of AOTInitTestClass %s", AOTInitTestClass);
|
||||
log_info(aot)("Debug build only: force initialization of AOTInitTestClass %s", AOTInitTestClass);
|
||||
TempNewSymbol class_name = SymbolTable::new_symbol(AOTInitTestClass);
|
||||
Handle app_loader(THREAD, SystemDictionary::java_system_loader());
|
||||
Klass* k = SystemDictionary::resolve_or_null(class_name, app_loader, CHECK);
|
||||
|
@ -23,6 +23,7 @@
|
||||
*/
|
||||
|
||||
#include "cds/aotClassLocation.hpp"
|
||||
#include "cds/aotLogging.hpp"
|
||||
#include "cds/archiveBuilder.hpp"
|
||||
#include "cds/cdsConfig.hpp"
|
||||
#include "cds/dynamicArchive.hpp"
|
||||
@ -250,7 +251,7 @@ AOTClassLocation* AOTClassLocation::allocate(JavaThread* current, const char* pa
|
||||
// We allow the file to not exist, as long as it also doesn't exist during runtime.
|
||||
type = FileType::NOT_EXIST;
|
||||
} else {
|
||||
log_error(cds)("Unable to open file %s.", path);
|
||||
aot_log_error(aot)("Unable to open file %s.", path);
|
||||
MetaspaceShared::unrecoverable_loading_error();
|
||||
}
|
||||
|
||||
@ -359,7 +360,7 @@ char* AOTClassLocation::get_cpattr() const {
|
||||
if (found != nullptr) {
|
||||
// Same behavior as jdk/src/share/classes/java/util/jar/Attributes.java
|
||||
// If duplicated entries are found, the last one is used.
|
||||
log_warning(cds)("Warning: Duplicate name in Manifest: %s.\n"
|
||||
log_warning(aot)("Warning: Duplicate name in Manifest: %s.\n"
|
||||
"Ensure that the manifest does not have duplicate entries, and\n"
|
||||
"that blank lines separate individual sections in both your\n"
|
||||
"manifest and in the META-INF/MANIFEST.MF entry in the jar file:\n%s\n", tag, path());
|
||||
@ -392,31 +393,31 @@ bool AOTClassLocation::check(const char* runtime_path, bool has_aot_linked_class
|
||||
struct stat st;
|
||||
if (os::stat(runtime_path, &st) != 0) {
|
||||
if (_file_type != FileType::NOT_EXIST) {
|
||||
log_warning(cds)("Required classpath entry does not exist: %s", runtime_path);
|
||||
aot_log_warning(aot)("Required classpath entry does not exist: %s", runtime_path);
|
||||
return false;
|
||||
}
|
||||
} else if ((st.st_mode & S_IFMT) == S_IFDIR) {
|
||||
if (_file_type == FileType::NOT_EXIST) {
|
||||
log_warning(cds)("'%s' must not exist", runtime_path);
|
||||
aot_log_warning(aot)("'%s' must not exist", runtime_path);
|
||||
return false;
|
||||
}
|
||||
if (_file_type == FileType::NORMAL) {
|
||||
log_warning(cds)("'%s' must be a file", runtime_path);
|
||||
aot_log_warning(aot)("'%s' must be a file", runtime_path);
|
||||
return false;
|
||||
}
|
||||
if (!os::dir_is_empty(runtime_path)) {
|
||||
log_warning(cds)("directory is not empty: '%s'", runtime_path);
|
||||
aot_log_warning(aot)("directory is not empty: '%s'", runtime_path);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (_file_type == FileType::NOT_EXIST) {
|
||||
log_warning(cds)("'%s' must not exist", runtime_path);
|
||||
aot_log_warning(aot)("'%s' must not exist", runtime_path);
|
||||
if (has_aot_linked_classes) {
|
||||
log_error(cds)("CDS archive has aot-linked classes. It cannot be used because the "
|
||||
aot_log_error(aot)("CDS archive has aot-linked classes. It cannot be used because the "
|
||||
"file %s exists", runtime_path);
|
||||
return false;
|
||||
} else {
|
||||
log_warning(cds)("Archived non-system classes are disabled because the "
|
||||
aot_log_warning(aot)("Archived non-system classes are disabled because the "
|
||||
"file %s exists", runtime_path);
|
||||
FileMapInfo::current_info()->set_has_platform_or_app_classes(false);
|
||||
if (DynamicArchive::is_mapped()) {
|
||||
@ -425,13 +426,13 @@ bool AOTClassLocation::check(const char* runtime_path, bool has_aot_linked_class
|
||||
}
|
||||
}
|
||||
if (_file_type == FileType::DIR) {
|
||||
log_warning(cds)("'%s' must be a directory", runtime_path);
|
||||
aot_log_warning(aot)("'%s' must be a directory", runtime_path);
|
||||
return false;
|
||||
}
|
||||
bool size_differs = _filesize != st.st_size;
|
||||
bool time_differs = _check_time && (_timestamp != st.st_mtime);
|
||||
if (size_differs || time_differs) {
|
||||
log_warning(cds)("This file is not the one used while building the shared archive file: '%s'%s%s",
|
||||
aot_log_warning(aot)("This file is not the one used while building the shared archive file: '%s'%s%s",
|
||||
runtime_path,
|
||||
time_differs ? ", timestamp has changed" : "",
|
||||
size_differs ? ", size has changed" : "");
|
||||
@ -689,7 +690,7 @@ void AOTClassLocationConfig::check_nonempty_dirs() const {
|
||||
}
|
||||
if (cs->is_dir()) {
|
||||
if (!os::dir_is_empty(cs->path())) {
|
||||
log_error(cds)("Error: non-empty directory '%s'", cs->path());
|
||||
aot_log_error(aot)("Error: non-empty directory '%s'", cs->path());
|
||||
has_nonempty_dir = true;
|
||||
}
|
||||
}
|
||||
@ -714,7 +715,7 @@ bool AOTClassLocationConfig::is_valid_classpath_index(int classpath_index, Insta
|
||||
const char* const file_name = ClassLoader::file_name_for_class_name(class_name,
|
||||
ik->name()->utf8_length());
|
||||
if (!zip->has_entry(current, file_name)) {
|
||||
log_warning(cds)("class %s cannot be archived because it was not defined from %s as claimed",
|
||||
aot_log_warning(aot)("class %s cannot be archived because it was not defined from %s as claimed",
|
||||
class_name, zip->name());
|
||||
return false;
|
||||
}
|
||||
@ -776,7 +777,7 @@ bool AOTClassLocationConfig::check_classpaths(bool is_boot_classpath, bool has_a
|
||||
cs->from_cpattr() ? " (from JAR manifest ClassPath attribute)" : "");
|
||||
if (!cs->from_cpattr() && file_exists(effective_dumptime_path)) {
|
||||
if (!runtime_css.has_next()) {
|
||||
log_warning(cds)("%s classpath has fewer elements than expected", which);
|
||||
aot_log_warning(aot)("%s classpath has fewer elements than expected", which);
|
||||
return false;
|
||||
}
|
||||
const char* runtime_path = runtime_css.get_next();
|
||||
@ -784,7 +785,7 @@ bool AOTClassLocationConfig::check_classpaths(bool is_boot_classpath, bool has_a
|
||||
runtime_path = runtime_css.get_next();
|
||||
}
|
||||
if (!os::same_files(effective_dumptime_path, runtime_path)) {
|
||||
log_warning(cds)("The name of %s classpath [%d] does not match: expected '%s', got '%s'",
|
||||
aot_log_warning(aot)("The name of %s classpath [%d] does not match: expected '%s', got '%s'",
|
||||
which, runtime_css.current(), effective_dumptime_path, runtime_path);
|
||||
return false;
|
||||
}
|
||||
@ -800,7 +801,7 @@ bool AOTClassLocationConfig::check_classpaths(bool is_boot_classpath, bool has_a
|
||||
if (is_boot_classpath && runtime_css.has_next() && (need_to_check_app_classpath() || num_module_paths() > 0)) {
|
||||
// the check passes if all the extra runtime boot classpath entries are non-existent
|
||||
if (check_paths_existence(runtime_css)) {
|
||||
log_warning(cds)("boot classpath is longer than expected");
|
||||
aot_log_warning(aot)("boot classpath is longer than expected");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -869,7 +870,7 @@ bool AOTClassLocationConfig::check_module_paths(bool has_aot_linked_classes, int
|
||||
|
||||
while (true) {
|
||||
if (!runtime_css.has_next()) {
|
||||
log_warning(cds)("module path has fewer elements than expected");
|
||||
aot_log_warning(aot)("module path has fewer elements than expected");
|
||||
*has_extra_module_paths = true;
|
||||
return true;
|
||||
}
|
||||
@ -1021,11 +1022,11 @@ bool AOTClassLocationConfig::validate(bool has_aot_linked_classes, bool* has_ext
|
||||
"" : " (hint: enable -Xlog:class+path=info to diagnose the failure)";
|
||||
if (RequireSharedSpaces && !PrintSharedArchiveAndExit) {
|
||||
if (CDSConfig::is_dumping_final_static_archive()) {
|
||||
log_error(cds)("class path and/or module path are not compatible with the "
|
||||
aot_log_error(aot)("class path and/or module path are not compatible with the "
|
||||
"ones specified when the AOTConfiguration file was recorded%s", hint_msg);
|
||||
vm_exit_during_initialization("Unable to use create AOT cache.", nullptr);
|
||||
} else {
|
||||
log_error(cds)("%s%s", mismatch_msg, hint_msg);
|
||||
aot_log_error(aot)("%s%s", mismatch_msg, hint_msg);
|
||||
MetaspaceShared::unrecoverable_loading_error();
|
||||
}
|
||||
} else {
|
||||
|
@ -204,7 +204,7 @@ void AOTConstantPoolResolver::preresolve_class_cp_entries(JavaThread* current, I
|
||||
if (HAS_PENDING_EXCEPTION) {
|
||||
CLEAR_PENDING_EXCEPTION; // just ignore
|
||||
} else {
|
||||
log_trace(cds, resolve)("Resolved class [%3d] %s -> %s", cp_index, ik->external_name(),
|
||||
log_trace(aot, resolve)("Resolved class [%3d] %s -> %s", cp_index, ik->external_name(),
|
||||
resolved_klass->external_name());
|
||||
}
|
||||
}
|
||||
@ -292,12 +292,12 @@ void AOTConstantPoolResolver::maybe_resolve_fmi_ref(InstanceKlass* ik, Method* m
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
|
||||
if (log_is_enabled(Trace, cds, resolve)) {
|
||||
if (log_is_enabled(Trace, aot, resolve)) {
|
||||
ResourceMark rm(THREAD);
|
||||
bool resolved = cp->is_resolved(raw_index, bc);
|
||||
Symbol* name = cp->name_ref_at(raw_index, bc);
|
||||
Symbol* signature = cp->signature_ref_at(raw_index, bc);
|
||||
log_trace(cds, resolve)("%s %s [%3d] %s -> %s.%s:%s",
|
||||
log_trace(aot, resolve)("%s %s [%3d] %s -> %s.%s:%s",
|
||||
(resolved ? "Resolved" : "Failed to resolve"),
|
||||
Bytecodes::name(bc), cp_index, ik->external_name(),
|
||||
resolved_klass->external_name(),
|
||||
@ -326,9 +326,9 @@ void AOTConstantPoolResolver::preresolve_indy_cp_entries(JavaThread* current, In
|
||||
CLEAR_PENDING_EXCEPTION; // just ignore
|
||||
}
|
||||
}
|
||||
if (log_is_enabled(Trace, cds, resolve)) {
|
||||
if (log_is_enabled(Trace, aot, resolve)) {
|
||||
ResourceMark rm(THREAD);
|
||||
log_trace(cds, resolve)("%s indy [%3d] %s",
|
||||
log_trace(aot, resolve)("%s indy [%3d] %s",
|
||||
rie->is_resolved() ? "Resolved" : "Failed to resolve",
|
||||
cp_index, ik->external_name());
|
||||
}
|
||||
@ -350,9 +350,9 @@ bool AOTConstantPoolResolver::check_methodtype_signature(ConstantPool* cp, Symbo
|
||||
}
|
||||
|
||||
if (SystemDictionaryShared::should_be_excluded(k)) {
|
||||
if (log_is_enabled(Warning, cds, resolve)) {
|
||||
if (log_is_enabled(Warning, aot, resolve)) {
|
||||
ResourceMark rm;
|
||||
log_warning(cds, resolve)("Cannot aot-resolve Lambda proxy because %s is excluded", k->external_name());
|
||||
log_warning(aot, resolve)("Cannot aot-resolve Lambda proxy because %s is excluded", k->external_name());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -383,9 +383,9 @@ bool AOTConstantPoolResolver::check_lambda_metafactory_signature(ConstantPool* c
|
||||
// as <clinit> can have side effects ==> exclude such cases.
|
||||
InstanceKlass* intf = InstanceKlass::cast(k);
|
||||
bool exclude = intf->interface_needs_clinit_execution_as_super();
|
||||
if (log_is_enabled(Debug, cds, resolve)) {
|
||||
if (log_is_enabled(Debug, aot, resolve)) {
|
||||
ResourceMark rm;
|
||||
log_debug(cds, resolve)("%s aot-resolve Lambda proxy of interface type %s",
|
||||
log_debug(aot, resolve)("%s aot-resolve Lambda proxy of interface type %s",
|
||||
exclude ? "Cannot" : "Can", k->external_name());
|
||||
}
|
||||
return !exclude;
|
||||
@ -399,9 +399,9 @@ bool AOTConstantPoolResolver::check_lambda_metafactory_methodtype_arg(ConstantPo
|
||||
}
|
||||
|
||||
Symbol* sig = cp->method_type_signature_at(mt_index);
|
||||
if (log_is_enabled(Debug, cds, resolve)) {
|
||||
if (log_is_enabled(Debug, aot, resolve)) {
|
||||
ResourceMark rm;
|
||||
log_debug(cds, resolve)("Checking MethodType for LambdaMetafactory BSM arg %d: %s", arg_i, sig->as_C_string());
|
||||
log_debug(aot, resolve)("Checking MethodType for LambdaMetafactory BSM arg %d: %s", arg_i, sig->as_C_string());
|
||||
}
|
||||
|
||||
return check_methodtype_signature(cp, sig);
|
||||
@ -415,9 +415,9 @@ bool AOTConstantPoolResolver::check_lambda_metafactory_methodhandle_arg(Constant
|
||||
}
|
||||
|
||||
Symbol* sig = cp->method_handle_signature_ref_at(mh_index);
|
||||
if (log_is_enabled(Debug, cds, resolve)) {
|
||||
if (log_is_enabled(Debug, aot, resolve)) {
|
||||
ResourceMark rm;
|
||||
log_debug(cds, resolve)("Checking MethodType of MethodHandle for LambdaMetafactory BSM arg %d: %s", arg_i, sig->as_C_string());
|
||||
log_debug(aot, resolve)("Checking MethodType of MethodHandle for LambdaMetafactory BSM arg %d: %s", arg_i, sig->as_C_string());
|
||||
}
|
||||
return check_methodtype_signature(cp, sig);
|
||||
}
|
||||
@ -452,9 +452,9 @@ bool AOTConstantPoolResolver::is_indy_resolution_deterministic(ConstantPool* cp,
|
||||
"[Ljava/lang/Object;"
|
||||
")Ljava/lang/invoke/CallSite;")) {
|
||||
Symbol* factory_type_sig = cp->uncached_signature_ref_at(cp_index);
|
||||
if (log_is_enabled(Debug, cds, resolve)) {
|
||||
if (log_is_enabled(Debug, aot, resolve)) {
|
||||
ResourceMark rm;
|
||||
log_debug(cds, resolve)("Checking StringConcatFactory callsite signature [%d]: %s", cp_index, factory_type_sig->as_C_string());
|
||||
log_debug(aot, resolve)("Checking StringConcatFactory callsite signature [%d]: %s", cp_index, factory_type_sig->as_C_string());
|
||||
}
|
||||
|
||||
Klass* k;
|
||||
@ -504,9 +504,9 @@ bool AOTConstantPoolResolver::is_indy_resolution_deterministic(ConstantPool* cp,
|
||||
* {@code interfaceMethodType}.
|
||||
*/
|
||||
Symbol* factory_type_sig = cp->uncached_signature_ref_at(cp_index);
|
||||
if (log_is_enabled(Debug, cds, resolve)) {
|
||||
if (log_is_enabled(Debug, aot, resolve)) {
|
||||
ResourceMark rm;
|
||||
log_debug(cds, resolve)("Checking lambda callsite signature [%d]: %s", cp_index, factory_type_sig->as_C_string());
|
||||
log_debug(aot, resolve)("Checking lambda callsite signature [%d]: %s", cp_index, factory_type_sig->as_C_string());
|
||||
}
|
||||
|
||||
if (!check_lambda_metafactory_signature(cp, factory_type_sig)) {
|
||||
|
@ -87,10 +87,10 @@ void AOTLinkedClassBulkLoader::exit_on_exception(JavaThread* current) {
|
||||
assert(current->has_pending_exception(), "precondition");
|
||||
ResourceMark rm(current);
|
||||
if (current->pending_exception()->is_a(vmClasses::OutOfMemoryError_klass())) {
|
||||
log_error(cds)("Out of memory. Please run with a larger Java heap, current MaxHeapSize = "
|
||||
log_error(aot)("Out of memory. Please run with a larger Java heap, current MaxHeapSize = "
|
||||
"%zuM", MaxHeapSize/M);
|
||||
} else {
|
||||
log_error(cds)("%s: %s", current->pending_exception()->klass()->external_name(),
|
||||
log_error(aot)("%s: %s", current->pending_exception()->klass()->external_name(),
|
||||
java_lang_String::as_utf8_string(java_lang_Throwable::message(current->pending_exception())));
|
||||
}
|
||||
vm_exit_during_initialization("Unexpected exception when loading aot-linked classes.");
|
||||
@ -199,9 +199,9 @@ void AOTLinkedClassBulkLoader::load_classes_impl(AOTLinkedClassCategory class_ca
|
||||
|
||||
if (actual != ik) {
|
||||
ResourceMark rm(THREAD);
|
||||
log_error(cds)("Unable to resolve %s class from CDS archive: %s", category_name, ik->external_name());
|
||||
log_error(cds)("Expected: " INTPTR_FORMAT ", actual: " INTPTR_FORMAT, p2i(ik), p2i(actual));
|
||||
log_error(cds)("JVMTI class retransformation is not supported when archive was generated with -XX:+AOTClassLinking.");
|
||||
log_error(aot)("Unable to resolve %s class from %s: %s", category_name, CDSConfig::type_of_archive_being_loaded(), ik->external_name());
|
||||
log_error(aot)("Expected: " INTPTR_FORMAT ", actual: " INTPTR_FORMAT, p2i(ik), p2i(actual));
|
||||
log_error(aot)("JVMTI class retransformation is not supported when archive was generated with -XX:+AOTClassLinking.");
|
||||
MetaspaceShared::unrecoverable_loading_error();
|
||||
}
|
||||
assert(actual->is_loaded(), "must be");
|
||||
|
@ -1155,12 +1155,12 @@ class ArchiveBuilder::CDSMapLogger : AllStatic {
|
||||
|
||||
static void log_klass(Klass* k, address runtime_dest, const char* type_name, int bytes, Thread* current) {
|
||||
ResourceMark rm(current);
|
||||
log_debug(cds, map)(_LOG_PREFIX " %s",
|
||||
log_debug(aot, map)(_LOG_PREFIX " %s",
|
||||
p2i(runtime_dest), type_name, bytes, k->external_name());
|
||||
}
|
||||
static void log_method(Method* m, address runtime_dest, const char* type_name, int bytes, Thread* current) {
|
||||
ResourceMark rm(current);
|
||||
log_debug(cds, map)(_LOG_PREFIX " %s",
|
||||
log_debug(aot, map)(_LOG_PREFIX " %s",
|
||||
p2i(runtime_dest), type_name, bytes, m->external_name());
|
||||
}
|
||||
|
||||
@ -1203,12 +1203,12 @@ class ArchiveBuilder::CDSMapLogger : AllStatic {
|
||||
{
|
||||
ResourceMark rm(current);
|
||||
Symbol* s = (Symbol*)src;
|
||||
log_debug(cds, map)(_LOG_PREFIX " %s", p2i(runtime_dest), type_name, bytes,
|
||||
log_debug(aot, map)(_LOG_PREFIX " %s", p2i(runtime_dest), type_name, bytes,
|
||||
s->as_quoted_ascii());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
log_debug(cds, map)(_LOG_PREFIX, p2i(runtime_dest), type_name, bytes);
|
||||
log_debug(aot, map)(_LOG_PREFIX, p2i(runtime_dest), type_name, bytes);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1218,7 +1218,7 @@ class ArchiveBuilder::CDSMapLogger : AllStatic {
|
||||
|
||||
log_as_hex(last_obj_base, last_obj_end, last_obj_base + buffer_to_runtime_delta());
|
||||
if (last_obj_end < region_end) {
|
||||
log_debug(cds, map)(PTR_FORMAT ": @@ Misc data %zu bytes",
|
||||
log_debug(aot, map)(PTR_FORMAT ": @@ Misc data %zu bytes",
|
||||
p2i(last_obj_end + buffer_to_runtime_delta()),
|
||||
size_t(region_end - last_obj_end));
|
||||
log_as_hex(last_obj_end, region_end, last_obj_end + buffer_to_runtime_delta());
|
||||
@ -1242,7 +1242,7 @@ class ArchiveBuilder::CDSMapLogger : AllStatic {
|
||||
} else {
|
||||
top = requested_base + size;
|
||||
}
|
||||
log_info(cds, map)("[%-18s " PTR_FORMAT " - " PTR_FORMAT " %9zu bytes]",
|
||||
log_info(aot, map)("[%-18s " PTR_FORMAT " - " PTR_FORMAT " %9zu bytes]",
|
||||
name, p2i(base), p2i(top), size);
|
||||
}
|
||||
|
||||
@ -1253,7 +1253,7 @@ class ArchiveBuilder::CDSMapLogger : AllStatic {
|
||||
address end = address(r.end());
|
||||
log_region("heap", start, end, ArchiveHeapWriter::buffered_addr_to_requested_addr(start));
|
||||
|
||||
LogStreamHandle(Info, cds, map) st;
|
||||
LogStreamHandle(Info, aot, map) st;
|
||||
|
||||
HeapRootSegments segments = heap_info->heap_root_segments();
|
||||
assert(segments.base_offset() == 0, "Sanity");
|
||||
@ -1362,7 +1362,7 @@ class ArchiveBuilder::CDSMapLogger : AllStatic {
|
||||
|
||||
// Print the fields of instanceOops, or the elements of arrayOops
|
||||
static void log_oop_details(ArchiveHeapInfo* heap_info, oop source_oop, address buffered_addr) {
|
||||
LogStreamHandle(Trace, cds, map, oops) st;
|
||||
LogStreamHandle(Trace, aot, map, oops) st;
|
||||
if (st.is_enabled()) {
|
||||
Klass* source_klass = source_oop->klass();
|
||||
ArchiveBuilder* builder = ArchiveBuilder::current();
|
||||
@ -1430,7 +1430,7 @@ class ArchiveBuilder::CDSMapLogger : AllStatic {
|
||||
}
|
||||
|
||||
static void log_heap_roots() {
|
||||
LogStreamHandle(Trace, cds, map, oops) st;
|
||||
LogStreamHandle(Trace, aot, map, oops) st;
|
||||
if (st.is_enabled()) {
|
||||
for (int i = 0; i < HeapShared::pending_roots()->length(); i++) {
|
||||
st.print("roots[%4d]: ", i);
|
||||
@ -1491,7 +1491,7 @@ class ArchiveBuilder::CDSMapLogger : AllStatic {
|
||||
static void log_as_hex(address base, address top, address requested_base, bool is_heap = false) {
|
||||
assert(top >= base, "must be");
|
||||
|
||||
LogStreamHandle(Trace, cds, map) lsh;
|
||||
LogStreamHandle(Trace, aot, map) lsh;
|
||||
if (lsh.is_enabled()) {
|
||||
int unitsize = sizeof(address);
|
||||
if (is_heap && UseCompressedOops) {
|
||||
@ -1504,7 +1504,7 @@ class ArchiveBuilder::CDSMapLogger : AllStatic {
|
||||
}
|
||||
|
||||
static void log_header(FileMapInfo* mapinfo) {
|
||||
LogStreamHandle(Info, cds, map) lsh;
|
||||
LogStreamHandle(Info, aot, map) lsh;
|
||||
if (lsh.is_enabled()) {
|
||||
mapinfo->print(&lsh);
|
||||
}
|
||||
@ -1514,7 +1514,7 @@ public:
|
||||
static void log(ArchiveBuilder* builder, FileMapInfo* mapinfo,
|
||||
ArchiveHeapInfo* heap_info,
|
||||
char* bitmap, size_t bitmap_size_in_bytes) {
|
||||
log_info(cds, map)("%s CDS archive map for %s", CDSConfig::is_dumping_static_archive() ? "Static" : "Dynamic", mapinfo->full_path());
|
||||
log_info(aot, map)("%s CDS archive map for %s", CDSConfig::is_dumping_static_archive() ? "Static" : "Dynamic", mapinfo->full_path());
|
||||
|
||||
address header = address(mapinfo->header());
|
||||
address header_end = header + mapinfo->header()->header_size();
|
||||
@ -1538,7 +1538,7 @@ public:
|
||||
}
|
||||
#endif
|
||||
|
||||
log_info(cds, map)("[End of CDS archive map]");
|
||||
log_info(aot, map)("[End of CDS archive map]");
|
||||
}
|
||||
}; // end ArchiveBuilder::CDSMapLogger
|
||||
|
||||
@ -1580,7 +1580,7 @@ void ArchiveBuilder::write_archive(FileMapInfo* mapinfo, ArchiveHeapInfo* heap_i
|
||||
print_stats();
|
||||
}
|
||||
|
||||
if (log_is_enabled(Info, cds, map)) {
|
||||
if (log_is_enabled(Info, aot, map)) {
|
||||
CDSMapLogger::log(this, mapinfo, heap_info,
|
||||
bitmap, bitmap_size_in_bytes);
|
||||
}
|
||||
|
@ -167,7 +167,7 @@ void ArchiveHeapLoader::patch_compressed_embedded_pointers(BitMapView bm,
|
||||
MemRegion region) {
|
||||
narrowOop dt_encoded_bottom = info->encoded_heap_region_dumptime_address();
|
||||
narrowOop rt_encoded_bottom = CompressedOops::encode_not_null(cast_to_oop(region.start()));
|
||||
log_info(cds)("patching heap embedded pointers: narrowOop 0x%8x -> 0x%8x",
|
||||
log_info(aot)("patching heap embedded pointers: narrowOop 0x%8x -> 0x%8x",
|
||||
(uint)dt_encoded_bottom, (uint)rt_encoded_bottom);
|
||||
|
||||
// Optimization: if dumptime shift is the same as runtime shift, we can perform a
|
||||
@ -175,15 +175,15 @@ void ArchiveHeapLoader::patch_compressed_embedded_pointers(BitMapView bm,
|
||||
narrowOop* patching_start = (narrowOop*)region.start() + FileMapInfo::current_info()->heap_oopmap_start_pos();
|
||||
if (_narrow_oop_shift == CompressedOops::shift()) {
|
||||
uint32_t quick_delta = (uint32_t)rt_encoded_bottom - (uint32_t)dt_encoded_bottom;
|
||||
log_info(cds)("CDS heap data relocation quick delta = 0x%x", quick_delta);
|
||||
log_info(aot)("heap data relocation quick delta = 0x%x", quick_delta);
|
||||
if (quick_delta == 0) {
|
||||
log_info(cds)("CDS heap data relocation unnecessary, quick_delta = 0");
|
||||
log_info(aot)("heap data relocation unnecessary, quick_delta = 0");
|
||||
} else {
|
||||
PatchCompressedEmbeddedPointersQuick patcher(patching_start, quick_delta);
|
||||
bm.iterate(&patcher);
|
||||
}
|
||||
} else {
|
||||
log_info(cds)("CDS heap data quick relocation not possible");
|
||||
log_info(aot)("heap data quick relocation not possible");
|
||||
PatchCompressedEmbeddedPointers patcher(patching_start);
|
||||
bm.iterate(&patcher);
|
||||
}
|
||||
@ -301,12 +301,12 @@ bool ArchiveHeapLoader::load_heap_region_impl(FileMapInfo* mapinfo, LoadedArchiv
|
||||
if (!mapinfo->read_region(loaded_region->_region_index, (char*)load_address, r->used(), /* do_commit = */ false)) {
|
||||
// There's no easy way to free the buffer, so we will fill it with zero later
|
||||
// in fill_failed_loaded_heap(), and it will eventually be GC'ed.
|
||||
log_warning(cds)("Loading of heap region %d has failed. Archived objects are disabled", loaded_region->_region_index);
|
||||
log_warning(aot)("Loading of heap region %d has failed. Archived objects are disabled", loaded_region->_region_index);
|
||||
_loading_failed = true;
|
||||
return false;
|
||||
}
|
||||
assert(r->mapped_base() == (char*)load_address, "sanity");
|
||||
log_info(cds)("Loaded heap region #%d at base " INTPTR_FORMAT " top " INTPTR_FORMAT
|
||||
log_info(aot)("Loaded heap region #%d at base " INTPTR_FORMAT " top " INTPTR_FORMAT
|
||||
" size %6zu delta %zd",
|
||||
loaded_region->_region_index, load_address, load_address + loaded_region->_region_size,
|
||||
loaded_region->_region_size, loaded_region->_runtime_offset);
|
||||
|
@ -293,7 +293,7 @@ int ArchiveHeapWriter::compare_objs_by_oop_fields(HeapObjOrder* a, HeapObjOrder*
|
||||
}
|
||||
|
||||
void ArchiveHeapWriter::sort_source_objs() {
|
||||
log_info(cds)("sorting heap objects");
|
||||
log_info(aot)("sorting heap objects");
|
||||
int len = _source_objs->length();
|
||||
_source_objs_order = new GrowableArrayCHeap<HeapObjOrder, mtClassShared>(len);
|
||||
|
||||
@ -303,9 +303,9 @@ void ArchiveHeapWriter::sort_source_objs() {
|
||||
HeapObjOrder os = {i, rank};
|
||||
_source_objs_order->append(os);
|
||||
}
|
||||
log_info(cds)("computed ranks");
|
||||
log_info(aot)("computed ranks");
|
||||
_source_objs_order->sort(compare_objs_by_oop_fields);
|
||||
log_info(cds)("sorting heap objects done");
|
||||
log_info(aot)("sorting heap objects done");
|
||||
}
|
||||
|
||||
void ArchiveHeapWriter::copy_source_objs_to_buffer(GrowableArrayCHeap<oop, mtClassShared>* roots) {
|
||||
@ -330,7 +330,7 @@ void ArchiveHeapWriter::copy_source_objs_to_buffer(GrowableArrayCHeap<oop, mtCla
|
||||
}
|
||||
}
|
||||
|
||||
log_info(cds)("Size of heap region = %zu bytes, %d objects, %d roots, %d native ptrs",
|
||||
log_info(aot)("Size of heap region = %zu bytes, %d objects, %d roots, %d native ptrs",
|
||||
_buffer_used, _source_objs->length() + 1, roots->length(), _num_native_ptrs);
|
||||
}
|
||||
|
||||
@ -636,7 +636,7 @@ static void log_bitmap_usage(const char* which, BitMap* bitmap, size_t total_bit
|
||||
// The whole heap is covered by total_bits, but there are only non-zero bits within [start ... end).
|
||||
size_t start = bitmap->find_first_set_bit(0);
|
||||
size_t end = bitmap->size();
|
||||
log_info(cds)("%s = %7zu ... %7zu (%3zu%% ... %3zu%% = %3zu%%)", which,
|
||||
log_info(aot)("%s = %7zu ... %7zu (%3zu%% ... %3zu%% = %3zu%%)", which,
|
||||
start, end,
|
||||
start * 100 / total_bits,
|
||||
end * 100 / total_bits,
|
||||
|
@ -22,6 +22,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "cds/aotLogging.hpp"
|
||||
#include "cds/archiveBuilder.hpp"
|
||||
#include "cds/archiveHeapLoader.inline.hpp"
|
||||
#include "cds/archiveUtils.hpp"
|
||||
@ -168,7 +169,7 @@ public:
|
||||
}
|
||||
} else {
|
||||
_ptrmap->clear_bit(offset);
|
||||
DEBUG_ONLY(log_trace(cds, reloc)("Clearing pointer [" PTR_FORMAT "] -> null @ %9zu", p2i(ptr_loc), offset));
|
||||
DEBUG_ONLY(log_trace(aot, reloc)("Clearing pointer [" PTR_FORMAT "] -> null @ %9zu", p2i(ptr_loc), offset));
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -207,7 +208,7 @@ char* DumpRegion::expand_top_to(char* newtop) {
|
||||
// This is just a sanity check and should not appear in any real world usage. This
|
||||
// happens only if you allocate more than 2GB of shared objects and would require
|
||||
// millions of shared classes.
|
||||
log_error(cds)("Out of memory in the CDS archive: Please reduce the number of shared classes.");
|
||||
aot_log_error(aot)("Out of memory in the CDS archive: Please reduce the number of shared classes.");
|
||||
MetaspaceShared::unrecoverable_writing_error();
|
||||
}
|
||||
}
|
||||
@ -233,7 +234,7 @@ void DumpRegion::commit_to(char* newtop) {
|
||||
assert(commit <= uncommitted, "sanity");
|
||||
|
||||
if (!_vs->expand_by(commit, false)) {
|
||||
log_error(cds)("Failed to expand shared space to %zu bytes",
|
||||
aot_log_error(aot)("Failed to expand shared space to %zu bytes",
|
||||
need_committed_size);
|
||||
MetaspaceShared::unrecoverable_writing_error();
|
||||
}
|
||||
@ -244,7 +245,7 @@ void DumpRegion::commit_to(char* newtop) {
|
||||
} else {
|
||||
which = "shared";
|
||||
}
|
||||
log_debug(cds)("Expanding %s spaces by %7zu bytes [total %9zu bytes ending at %p]",
|
||||
log_debug(aot)("Expanding %s spaces by %7zu bytes [total %9zu bytes ending at %p]",
|
||||
which, commit, _vs->actual_committed_size(), _vs->high());
|
||||
}
|
||||
|
||||
@ -271,16 +272,16 @@ void DumpRegion::append_intptr_t(intptr_t n, bool need_to_mark) {
|
||||
|
||||
void DumpRegion::print(size_t total_bytes) const {
|
||||
char* base = used() > 0 ? ArchiveBuilder::current()->to_requested(_base) : nullptr;
|
||||
log_debug(cds)("%s space: %9zu [ %4.1f%% of total] out of %9zu bytes [%5.1f%% used] at " INTPTR_FORMAT,
|
||||
log_debug(aot)("%s space: %9zu [ %4.1f%% of total] out of %9zu bytes [%5.1f%% used] at " INTPTR_FORMAT,
|
||||
_name, used(), percent_of(used(), total_bytes), reserved(), percent_of(used(), reserved()),
|
||||
p2i(base));
|
||||
}
|
||||
|
||||
void DumpRegion::print_out_of_space_msg(const char* failing_region, size_t needed_bytes) {
|
||||
log_error(cds)("[%-8s] " PTR_FORMAT " - " PTR_FORMAT " capacity =%9d, allocated =%9d",
|
||||
aot_log_error(aot)("[%-8s] " PTR_FORMAT " - " PTR_FORMAT " capacity =%9d, allocated =%9d",
|
||||
_name, p2i(_base), p2i(_top), int(_end - _base), int(_top - _base));
|
||||
if (strcmp(_name, failing_region) == 0) {
|
||||
log_error(cds)(" required = %d", int(needed_bytes));
|
||||
aot_log_error(aot)(" required = %d", int(needed_bytes));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -136,12 +136,12 @@ class SharedDataRelocator: public BitMapClosure {
|
||||
_valid_old_base(valid_old_base), _valid_old_end(valid_old_end),
|
||||
_valid_new_base(valid_new_base), _valid_new_end(valid_new_end),
|
||||
_delta(delta) {
|
||||
log_debug(cds, reloc)("SharedDataRelocator::_patch_base = " PTR_FORMAT, p2i(_patch_base));
|
||||
log_debug(cds, reloc)("SharedDataRelocator::_patch_end = " PTR_FORMAT, p2i(_patch_end));
|
||||
log_debug(cds, reloc)("SharedDataRelocator::_valid_old_base = " PTR_FORMAT, p2i(_valid_old_base));
|
||||
log_debug(cds, reloc)("SharedDataRelocator::_valid_old_end = " PTR_FORMAT, p2i(_valid_old_end));
|
||||
log_debug(cds, reloc)("SharedDataRelocator::_valid_new_base = " PTR_FORMAT, p2i(_valid_new_base));
|
||||
log_debug(cds, reloc)("SharedDataRelocator::_valid_new_end = " PTR_FORMAT, p2i(_valid_new_end));
|
||||
log_debug(aot, reloc)("SharedDataRelocator::_patch_base = " PTR_FORMAT, p2i(_patch_base));
|
||||
log_debug(aot, reloc)("SharedDataRelocator::_patch_end = " PTR_FORMAT, p2i(_patch_end));
|
||||
log_debug(aot, reloc)("SharedDataRelocator::_valid_old_base = " PTR_FORMAT, p2i(_valid_old_base));
|
||||
log_debug(aot, reloc)("SharedDataRelocator::_valid_old_end = " PTR_FORMAT, p2i(_valid_old_end));
|
||||
log_debug(aot, reloc)("SharedDataRelocator::_valid_new_base = " PTR_FORMAT, p2i(_valid_new_base));
|
||||
log_debug(aot, reloc)("SharedDataRelocator::_valid_new_end = " PTR_FORMAT, p2i(_valid_new_end));
|
||||
}
|
||||
|
||||
bool do_bit(size_t offset);
|
||||
|
@ -27,6 +27,7 @@
|
||||
|
||||
#include "cds/archiveUtils.hpp"
|
||||
|
||||
#include "cds/aotLogging.hpp"
|
||||
#include "cds/archiveBuilder.hpp"
|
||||
#include "cds/cdsConfig.hpp"
|
||||
#include "cds/metaspaceShared.hpp"
|
||||
@ -46,7 +47,7 @@ inline bool SharedDataRelocator::do_bit(size_t offset) {
|
||||
assert(new_ptr != nullptr, "don't point to the bottom of the archive"); // See ArchivePtrMarker::mark_pointer().
|
||||
assert(_valid_new_base <= new_ptr && new_ptr < _valid_new_end, "must be");
|
||||
|
||||
DEBUG_ONLY(log_trace(cds, reloc)("Patch2: @%8d [" PTR_FORMAT "] " PTR_FORMAT " -> " PTR_FORMAT,
|
||||
DEBUG_ONLY(aot_log_trace(aot, reloc)("Patch2: @%8d [" PTR_FORMAT "] " PTR_FORMAT " -> " PTR_FORMAT,
|
||||
(int)offset, p2i(p), p2i(old_ptr), p2i(new_ptr)));
|
||||
*p = new_ptr;
|
||||
return true; // keep iterating
|
||||
|
@ -22,6 +22,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "cds/aotLogging.hpp"
|
||||
#include "cds/archiveHeapLoader.hpp"
|
||||
#include "cds/cdsConfig.hpp"
|
||||
#include "cds/classListWriter.hpp"
|
||||
@ -234,7 +235,7 @@ void CDSConfig::ergo_init_classic_archive_paths() {
|
||||
warning("-XX:+AutoCreateSharedArchive is unsupported when base CDS archive is not loaded. Run with -Xlog:cds for more info.");
|
||||
AutoCreateSharedArchive = false;
|
||||
}
|
||||
log_error(cds)("Not a valid archive (%s)", SharedArchiveFile);
|
||||
aot_log_error(aot)("Not a valid %s (%s)", type_of_archive_being_loaded(), SharedArchiveFile);
|
||||
Arguments::no_shared_spaces("invalid archive");
|
||||
}
|
||||
} else if (base_archive_path == nullptr) {
|
||||
@ -278,7 +279,7 @@ void CDSConfig::ergo_init_classic_archive_paths() {
|
||||
void CDSConfig::check_internal_module_property(const char* key, const char* value) {
|
||||
if (Arguments::is_incompatible_cds_internal_module_property(key)) {
|
||||
stop_using_optimized_module_handling();
|
||||
log_info(cds)("optimized module handling: disabled due to incompatible property: %s=%s", key, value);
|
||||
aot_log_info(aot)("optimized module handling: disabled due to incompatible property: %s=%s", key, value);
|
||||
}
|
||||
}
|
||||
|
||||
@ -293,7 +294,7 @@ void CDSConfig::check_incompatible_property(const char* key, const char* value)
|
||||
if (strcmp(key, property) == 0) {
|
||||
stop_dumping_full_module_graph();
|
||||
stop_using_full_module_graph();
|
||||
log_info(cds)("full module graph: disabled due to incompatible property: %s=%s", key, value);
|
||||
aot_log_info(aot)("full module graph: disabled due to incompatible property: %s=%s", key, value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -359,9 +360,9 @@ bool CDSConfig::has_unsupported_runtime_module_options() {
|
||||
warning("CDS is disabled when the %s option is specified.", option);
|
||||
} else {
|
||||
if (new_aot_flags_used()) {
|
||||
log_warning(cds)("AOT cache is disabled when the %s option is specified.", option);
|
||||
aot_log_warning(aot)("AOT cache is disabled when the %s option is specified.", option);
|
||||
} else {
|
||||
log_info(cds)("CDS is disabled when the %s option is specified.", option);
|
||||
aot_log_info(aot)("CDS is disabled when the %s option is specified.", option);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@ -549,7 +550,7 @@ bool CDSConfig::check_vm_args_consistency(bool patch_mod_javabase, bool mode_fla
|
||||
} else if (Arguments::mode() == Arguments::_comp) {
|
||||
// -Xcomp may use excessive CPU for the test tiers. Also, -Xshare:dump runs a small and fixed set of
|
||||
// Java code, so there's not much benefit in running -Xcomp.
|
||||
log_info(cds)("reduced -Xcomp to -Xmixed for static dumping");
|
||||
aot_log_info(aot)("reduced -Xcomp to -Xmixed for static dumping");
|
||||
Arguments::set_mode_flags(Arguments::_mixed);
|
||||
}
|
||||
|
||||
@ -574,11 +575,11 @@ bool CDSConfig::check_vm_args_consistency(bool patch_mod_javabase, bool mode_fla
|
||||
|
||||
if (AutoCreateSharedArchive) {
|
||||
if (SharedArchiveFile == nullptr) {
|
||||
log_warning(cds)("-XX:+AutoCreateSharedArchive requires -XX:SharedArchiveFile");
|
||||
aot_log_warning(aot)("-XX:+AutoCreateSharedArchive requires -XX:SharedArchiveFile");
|
||||
return false;
|
||||
}
|
||||
if (ArchiveClassesAtExit != nullptr) {
|
||||
log_warning(cds)("-XX:+AutoCreateSharedArchive does not work with ArchiveClassesAtExit");
|
||||
aot_log_warning(aot)("-XX:+AutoCreateSharedArchive does not work with ArchiveClassesAtExit");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -594,7 +595,7 @@ bool CDSConfig::check_vm_args_consistency(bool patch_mod_javabase, bool mode_fla
|
||||
// Always verify non-system classes during CDS dump
|
||||
if (!BytecodeVerificationRemote) {
|
||||
BytecodeVerificationRemote = true;
|
||||
log_info(cds)("All non-system classes will be verified (-Xverify:remote) during CDS dump time.");
|
||||
aot_log_info(aot)("All non-system classes will be verified (-Xverify:remote) during CDS dump time.");
|
||||
}
|
||||
}
|
||||
|
||||
@ -615,11 +616,11 @@ void CDSConfig::prepare_for_dumping() {
|
||||
|
||||
#define __THEMSG " is unsupported when base CDS archive is not loaded. Run with -Xlog:cds for more info."
|
||||
if (RecordDynamicDumpInfo) {
|
||||
log_error(cds)("-XX:+RecordDynamicDumpInfo%s", __THEMSG);
|
||||
aot_log_error(aot)("-XX:+RecordDynamicDumpInfo%s", __THEMSG);
|
||||
MetaspaceShared::unrecoverable_loading_error();
|
||||
} else {
|
||||
assert(ArchiveClassesAtExit != nullptr, "sanity");
|
||||
log_warning(cds)("-XX:ArchiveClassesAtExit" __THEMSG);
|
||||
aot_log_warning(aot)("-XX:ArchiveClassesAtExit" __THEMSG);
|
||||
}
|
||||
#undef __THEMSG
|
||||
disable_dumping_dynamic_archive();
|
||||
@ -766,7 +767,7 @@ void CDSConfig::log_reasons_for_not_dumping_heap() {
|
||||
}
|
||||
|
||||
assert(reason != nullptr, "sanity");
|
||||
log_info(cds)("Archived java heap is not supported: %s", reason);
|
||||
aot_log_info(aot)("Archived java heap is not supported: %s", reason);
|
||||
}
|
||||
|
||||
// This is *Legacy* optimization for lambdas before JEP 483. May be removed in the future.
|
||||
@ -816,7 +817,7 @@ void CDSConfig::stop_dumping_full_module_graph(const char* reason) {
|
||||
if (_is_dumping_full_module_graph) {
|
||||
_is_dumping_full_module_graph = false;
|
||||
if (reason != nullptr) {
|
||||
log_info(cds)("full module graph cannot be dumped: %s", reason);
|
||||
aot_log_info(aot)("full module graph cannot be dumped: %s", reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -826,7 +827,7 @@ void CDSConfig::stop_using_full_module_graph(const char* reason) {
|
||||
if (_is_using_full_module_graph) {
|
||||
_is_using_full_module_graph = false;
|
||||
if (reason != nullptr) {
|
||||
log_info(cds)("full module graph cannot be loaded: %s", reason);
|
||||
aot_log_info(aot)("full module graph cannot be loaded: %s", reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,7 @@
|
||||
*/
|
||||
|
||||
#include "cds/aotConstantPoolResolver.hpp"
|
||||
#include "cds/aotLogging.hpp"
|
||||
#include "cds/archiveUtils.hpp"
|
||||
#include "cds/classListParser.hpp"
|
||||
#include "cds/lambdaFormInvokers.hpp"
|
||||
@ -68,7 +69,7 @@ ClassListParser::ClassListParser(const char* file, ParseMode parse_mode) :
|
||||
_file_input(do_open(file), /* need_close=*/true),
|
||||
_input_stream(&_file_input),
|
||||
_parse_mode(parse_mode) {
|
||||
log_info(cds)("Parsing %s%s", file,
|
||||
aot_log_info(aot)("Parsing %s%s", file,
|
||||
parse_lambda_forms_invokers_only() ? " (lambda form invokers only)" : "");
|
||||
if (!_file_input.is_open()) {
|
||||
char reason[JVM_MAXPATHLEN];
|
||||
@ -163,18 +164,18 @@ void ClassListParser::parse_class_name_and_attributes(TRAPS) {
|
||||
if (message != nullptr) {
|
||||
ex_msg = java_lang_String::as_utf8_string(message);
|
||||
}
|
||||
log_warning(cds)("%s: %s", PENDING_EXCEPTION->klass()->external_name(), ex_msg);
|
||||
aot_log_warning(aot)("%s: %s", PENDING_EXCEPTION->klass()->external_name(), ex_msg);
|
||||
// We might have an invalid class name or an bad class. Warn about it
|
||||
// and keep going to the next line.
|
||||
CLEAR_PENDING_EXCEPTION;
|
||||
log_warning(cds)("Preload Warning: Cannot find %s", _class_name);
|
||||
aot_log_warning(aot)("Preload Warning: Cannot find %s", _class_name);
|
||||
return;
|
||||
}
|
||||
|
||||
assert(klass != nullptr, "sanity");
|
||||
if (log_is_enabled(Trace, cds)) {
|
||||
if (aot_log_is_enabled(Trace, aot)) {
|
||||
ResourceMark rm(THREAD);
|
||||
log_trace(cds)("Shared spaces preloaded: %s", klass->external_name());
|
||||
log_trace(aot)("Shared spaces preloaded: %s", klass->external_name());
|
||||
}
|
||||
|
||||
if (klass->is_instance_klass()) {
|
||||
@ -498,7 +499,7 @@ void ClassListParser::check_class_name(const char* class_name) {
|
||||
void ClassListParser::constant_pool_resolution_warning(const char* msg, ...) {
|
||||
va_list ap;
|
||||
va_start(ap, msg);
|
||||
LogTarget(Warning, cds, resolve) lt;
|
||||
LogTarget(Warning, aot, resolve) lt;
|
||||
LogStream ls(lt);
|
||||
print_diagnostic_info(&ls, msg, ap);
|
||||
ls.print("Your classlist may be out of sync with the JDK or the application.");
|
||||
@ -542,7 +543,7 @@ InstanceKlass* ClassListParser::load_class_from_source(Symbol* class_name, TRAPS
|
||||
error("If source location is specified, id must be also specified");
|
||||
}
|
||||
if (strncmp(_class_name, "java/", 5) == 0) {
|
||||
log_info(cds)("Prohibited package for non-bootstrap classes: %s.class from %s",
|
||||
aot_log_info(aot)("Prohibited package for non-bootstrap classes: %s.class from %s",
|
||||
_class_name, _source);
|
||||
THROW_NULL(vmSymbols::java_lang_ClassNotFoundException());
|
||||
}
|
||||
@ -648,7 +649,7 @@ void ClassListParser::resolve_indy(JavaThread* current, Symbol* class_name_symbo
|
||||
if (message != nullptr) {
|
||||
ex_msg = java_lang_String::as_utf8_string(message);
|
||||
}
|
||||
log_warning(cds)("resolve_indy for class %s has encountered exception: %s %s",
|
||||
aot_log_warning(aot)("resolve_indy for class %s has encountered exception: %s %s",
|
||||
class_name_symbol->as_C_string(),
|
||||
PENDING_EXCEPTION->klass()->external_name(),
|
||||
ex_msg);
|
||||
@ -688,7 +689,7 @@ void ClassListParser::resolve_indy_impl(Symbol* class_name_symbol, TRAPS) {
|
||||
BootstrapInfo bootstrap_specifier(pool, pool_index, indy_index);
|
||||
Handle bsm = bootstrap_specifier.resolve_bsm(CHECK);
|
||||
if (!LambdaProxyClassDictionary::is_supported_invokedynamic(&bootstrap_specifier)) {
|
||||
log_debug(cds, lambda)("is_supported_invokedynamic check failed for cp_index %d", pool_index);
|
||||
log_debug(aot, lambda)("is_supported_invokedynamic check failed for cp_index %d", pool_index);
|
||||
continue;
|
||||
}
|
||||
bool matched = is_matching_cp_entry(pool, pool_index, CHECK);
|
||||
@ -711,7 +712,7 @@ void ClassListParser::resolve_indy_impl(Symbol* class_name_symbol, TRAPS) {
|
||||
}
|
||||
if (!found) {
|
||||
ResourceMark rm(THREAD);
|
||||
log_warning(cds)("No invoke dynamic constant pool entry can be found for class %s. The classlist is probably out-of-date.",
|
||||
aot_log_warning(aot)("No invoke dynamic constant pool entry can be found for class %s. The classlist is probably out-of-date.",
|
||||
class_name_symbol->as_C_string());
|
||||
}
|
||||
}
|
||||
@ -773,7 +774,7 @@ Klass* ClassListParser::load_current_class(Symbol* class_name_symbol, TRAPS) {
|
||||
error("Duplicated ID %d for class %s", id, _class_name);
|
||||
}
|
||||
if (id2klass_table()->maybe_grow()) {
|
||||
log_info(cds, hashtables)("Expanded id2klass_table() to %d", id2klass_table()->table_size());
|
||||
log_info(aot, hashtables)("Expanded id2klass_table() to %d", id2klass_table()->table_size());
|
||||
}
|
||||
}
|
||||
|
||||
@ -877,9 +878,9 @@ void ClassListParser::parse_constant_pool_tag() {
|
||||
}
|
||||
|
||||
if (SystemDictionaryShared::should_be_excluded(ik)) {
|
||||
if (log_is_enabled(Warning, cds, resolve)) {
|
||||
if (log_is_enabled(Warning, aot, resolve)) {
|
||||
ResourceMark rm;
|
||||
log_warning(cds, resolve)("Cannot aot-resolve constants for %s because it is excluded", ik->external_name());
|
||||
log_warning(aot, resolve)("Cannot aot-resolve constants for %s because it is excluded", ik->external_name());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ void ClassListWriter::write(const InstanceKlass* k, const ClassFileStream* cfs)
|
||||
assert(is_enabled(), "must be");
|
||||
|
||||
if (!ClassLoader::has_jrt_entry()) {
|
||||
log_warning(cds)("DumpLoadedClassList and CDS are not supported in exploded build");
|
||||
log_warning(aot)("DumpLoadedClassList and CDS are not supported in exploded build");
|
||||
DumpLoadedClassList = nullptr;
|
||||
return;
|
||||
}
|
||||
|
@ -116,7 +116,7 @@ void CppVtableCloner<T>::initialize(const char* name, CppVtableInfo* info) {
|
||||
|
||||
// We already checked (and, if necessary, adjusted n) when the vtables were allocated, so we are
|
||||
// safe to do memcpy.
|
||||
log_debug(cds, vtables)("Copying %3d vtable entries for %s", n, name);
|
||||
log_debug(aot, vtables)("Copying %3d vtable entries for %s", n, name);
|
||||
memcpy(dstvtable, srcvtable, sizeof(intptr_t) * n);
|
||||
}
|
||||
|
||||
@ -166,7 +166,7 @@ int CppVtableCloner<T>::get_vtable_length(const char* name) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
log_debug(cds, vtables)("Found %3d vtable entries for %s", vtable_len, name);
|
||||
log_debug(aot, vtables)("Found %3d vtable entries for %s", vtable_len, name);
|
||||
|
||||
return vtable_len;
|
||||
}
|
||||
|
@ -71,9 +71,9 @@ void DumpTimeClassInfo::add_verification_constraint(InstanceKlass* k, Symbol* na
|
||||
c |= from_is_object ? RunTimeClassInfo::FROM_IS_OBJECT : 0;
|
||||
vcflags_array->append(c);
|
||||
|
||||
if (log_is_enabled(Trace, cds, verification)) {
|
||||
if (log_is_enabled(Trace, aot, verification)) {
|
||||
ResourceMark rm;
|
||||
log_trace(cds, verification)("add_verification_constraint: %s: %s must be subclass of %s [0x%x] array len %d flags len %d",
|
||||
log_trace(aot, verification)("add_verification_constraint: %s: %s must be subclass of %s [0x%x] array len %d flags len %d",
|
||||
k->external_name(), from_name->as_klass_external_name(),
|
||||
name->as_klass_external_name(), c, vc_array->length(), vcflags_array->length());
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "cds/aotArtifactFinder.hpp"
|
||||
#include "cds/aotClassLinker.hpp"
|
||||
#include "cds/aotClassLocation.hpp"
|
||||
#include "cds/aotLogging.hpp"
|
||||
#include "cds/archiveBuilder.hpp"
|
||||
#include "cds/archiveHeapWriter.hpp"
|
||||
#include "cds/archiveUtils.inline.hpp"
|
||||
@ -101,7 +102,7 @@ public:
|
||||
// is caused by dynamic dumping.
|
||||
void verify_universe(const char* info) {
|
||||
if (VerifyBeforeExit) {
|
||||
log_info(cds)("Verify %s", info);
|
||||
log_info(aot)("Verify %s", info);
|
||||
// Among other things, this ensures that Eden top is correct.
|
||||
Universe::heap()->prepare_for_verify();
|
||||
Universe::verify(info);
|
||||
@ -120,8 +121,8 @@ public:
|
||||
return;
|
||||
}
|
||||
|
||||
log_info(cds,dynamic)("CDS dynamic dump: clinit = " JLONG_FORMAT "ms)",
|
||||
ClassLoader::class_init_time_ms());
|
||||
log_info(cds, dynamic)("CDS dynamic dump: clinit = " JLONG_FORMAT "ms)",
|
||||
ClassLoader::class_init_time_ms());
|
||||
|
||||
init_header();
|
||||
gather_source_objs();
|
||||
@ -136,7 +137,7 @@ public:
|
||||
|
||||
sort_methods();
|
||||
|
||||
log_info(cds)("Make classes shareable");
|
||||
log_info(aot)("Make classes shareable");
|
||||
make_klasses_shareable();
|
||||
|
||||
char* serialized_data;
|
||||
@ -161,7 +162,7 @@ public:
|
||||
}
|
||||
|
||||
if (CDSConfig::is_dumping_lambdas_in_legacy_mode()) {
|
||||
log_info(cds)("Adjust lambda proxy class dictionary");
|
||||
log_info(aot)("Adjust lambda proxy class dictionary");
|
||||
LambdaProxyClassDictionary::adjust_dumptime_table();
|
||||
}
|
||||
|
||||
@ -378,7 +379,7 @@ void DynamicArchiveBuilder::gather_array_klasses() {
|
||||
}
|
||||
}
|
||||
}
|
||||
log_debug(cds)("Total array klasses gathered for dynamic archive: %d", DynamicArchive::num_array_klasses());
|
||||
log_debug(aot)("Total array klasses gathered for dynamic archive: %d", DynamicArchive::num_array_klasses());
|
||||
}
|
||||
|
||||
class VM_PopulateDynamicDumpSharedSpace: public VM_GC_Sync_Operation {
|
||||
@ -390,7 +391,7 @@ public:
|
||||
void doit() {
|
||||
ResourceMark rm;
|
||||
if (AllowArchivingWithJavaAgent) {
|
||||
log_warning(cds)("This %s was created with AllowArchivingWithJavaAgent. It should be used "
|
||||
aot_log_warning(aot)("This %s was created with AllowArchivingWithJavaAgent. It should be used "
|
||||
"for testing purposes only and should not be used in a production environment",
|
||||
CDSConfig::type_of_archive_being_loaded());
|
||||
}
|
||||
@ -445,7 +446,7 @@ void DynamicArchive::setup_array_klasses() {
|
||||
ArrayKlass::cast(elm)->set_higher_dimension(oak);
|
||||
}
|
||||
}
|
||||
log_debug(cds)("Total array klasses read from dynamic archive: %d", _dynamic_archive_array_klasses->length());
|
||||
log_debug(aot)("Total array klasses read from dynamic archive: %d", _dynamic_archive_array_klasses->length());
|
||||
}
|
||||
}
|
||||
|
||||
@ -501,8 +502,8 @@ void DynamicArchive::dump_at_exit(JavaThread* current) {
|
||||
if (HAS_PENDING_EXCEPTION) {
|
||||
// One of the prepatory steps failed
|
||||
oop ex = current->pending_exception();
|
||||
log_error(cds)("Dynamic dump has failed");
|
||||
log_error(cds)("%s: %s", ex->klass()->external_name(),
|
||||
aot_log_error(aot)("Dynamic dump has failed");
|
||||
aot_log_error(aot)("%s: %s", ex->klass()->external_name(),
|
||||
java_lang_String::as_utf8_string(java_lang_Throwable::message(ex)));
|
||||
CLEAR_PENDING_EXCEPTION;
|
||||
CDSConfig::disable_dumping_dynamic_archive(); // Just for good measure
|
||||
@ -526,14 +527,14 @@ bool DynamicArchive::validate(FileMapInfo* dynamic_info) {
|
||||
|
||||
// Check the header crc
|
||||
if (dynamic_header->base_header_crc() != base_info->crc()) {
|
||||
log_warning(cds)("Dynamic archive cannot be used: static archive header checksum verification failed.");
|
||||
aot_log_warning(aot)("Dynamic archive cannot be used: static archive header checksum verification failed.");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check each space's crc
|
||||
for (int i = 0; i < MetaspaceShared::n_regions; i++) {
|
||||
if (dynamic_header->base_region_crc(i) != base_info->region_crc(i)) {
|
||||
log_warning(cds)("Dynamic archive cannot be used: static archive region #%d checksum verification failed.", i);
|
||||
aot_log_warning(aot)("Dynamic archive cannot be used: static archive region #%d checksum verification failed.", i);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -738,7 +738,7 @@ void FileMapInfo::open_as_output() {
|
||||
log_info(aot)("Writing binary AOTConfiguration file: %s", _full_path);
|
||||
}
|
||||
} else {
|
||||
log_info(cds)("Dumping shared data to file: %s", _full_path);
|
||||
aot_log_info(aot)("Dumping shared data to file: %s", _full_path);
|
||||
}
|
||||
|
||||
#ifdef _WINDOWS // On Windows, need WRITE permission to remove the file.
|
||||
@ -1541,11 +1541,20 @@ bool FileMapInfo::can_use_heap_region() {
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
};
|
||||
LogTarget(Info, cds) lt;
|
||||
if (lt.is_enabled()) {
|
||||
LogStream ls(lt);
|
||||
ls.print_raw(ss.base());
|
||||
header()->print(&ls);
|
||||
if (CDSConfig::new_aot_flags_used()) {
|
||||
LogTarget(Info, aot) lt;
|
||||
if (lt.is_enabled()) {
|
||||
LogStream ls(lt);
|
||||
ls.print_raw(ss.base());
|
||||
header()->print(&ls);
|
||||
}
|
||||
} else {
|
||||
LogTarget(Info, cds) lt;
|
||||
if (lt.is_enabled()) {
|
||||
LogStream ls(lt);
|
||||
ls.print_raw(ss.base());
|
||||
header()->print(&ls);
|
||||
}
|
||||
}
|
||||
assert(false, "%s", ss.base());
|
||||
}
|
||||
|
@ -208,7 +208,7 @@ void FinalImageRecipes::apply_recipes(TRAPS) {
|
||||
log_error(aot)("%s: %s", PENDING_EXCEPTION->klass()->external_name(),
|
||||
java_lang_String::as_utf8_string(java_lang_Throwable::message(PENDING_EXCEPTION)));
|
||||
log_error(aot)("Please check if your VM command-line is the same as in the training run");
|
||||
MetaspaceShared::unrecoverable_writing_error("Unexpected exception, use -Xlog:cds,exceptions=trace for detail");
|
||||
MetaspaceShared::unrecoverable_writing_error("Unexpected exception, use -Xlog:aot,exceptions=trace for detail");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -150,7 +150,7 @@ void LambdaFormInvokers::regenerate_holder_classes(TRAPS) {
|
||||
|
||||
if (HAS_PENDING_EXCEPTION) {
|
||||
if (!PENDING_EXCEPTION->is_a(vmClasses::OutOfMemoryError_klass())) {
|
||||
log_error(cds)("%s: %s", PENDING_EXCEPTION->klass()->external_name(),
|
||||
log_error(aot)("%s: %s", PENDING_EXCEPTION->klass()->external_name(),
|
||||
java_lang_String::as_utf8_string(java_lang_Throwable::message(PENDING_EXCEPTION)));
|
||||
if (CDSConfig::is_dumping_static_archive()) {
|
||||
log_error(aot)("Failed to generate LambdaForm holder classes. Is your classlist out of date?");
|
||||
|
@ -99,7 +99,7 @@ void LambdaProxyClassDictionary::dumptime_init() {
|
||||
}
|
||||
|
||||
bool LambdaProxyClassDictionary::is_supported_invokedynamic(BootstrapInfo* bsi) {
|
||||
LogTarget(Debug, cds, lambda) log;
|
||||
LogTarget(Debug, aot, lambda) log;
|
||||
if (bsi->arg_values() == nullptr || !bsi->arg_values()->is_objArray()) {
|
||||
if (log.is_enabled()) {
|
||||
LogStream log_stream(log);
|
||||
@ -268,9 +268,9 @@ InstanceKlass* LambdaProxyClassDictionary::find_lambda_proxy_class(InstanceKlass
|
||||
const RunTimeLambdaProxyClassInfo* info = _runtime_static_table.lookup(&key, hash, 0);
|
||||
InstanceKlass* proxy_klass = find_lambda_proxy_class(info);
|
||||
if (proxy_klass == nullptr) {
|
||||
if (info != nullptr && log_is_enabled(Debug, cds)) {
|
||||
if (info != nullptr && log_is_enabled(Debug, aot)) {
|
||||
ResourceMark rm;
|
||||
log_debug(cds)("Used all static archived lambda proxy classes for: %s %s%s",
|
||||
log_debug(aot)("Used all static archived lambda proxy classes for: %s %s%s",
|
||||
caller_ik->external_name(), invoked_name->as_C_string(), invoked_type->as_C_string());
|
||||
}
|
||||
} else {
|
||||
@ -281,9 +281,9 @@ InstanceKlass* LambdaProxyClassDictionary::find_lambda_proxy_class(InstanceKlass
|
||||
info = _runtime_dynamic_table.lookup(&key, hash, 0);
|
||||
proxy_klass = find_lambda_proxy_class(info);
|
||||
if (proxy_klass == nullptr) {
|
||||
if (info != nullptr && log_is_enabled(Debug, cds)) {
|
||||
if (info != nullptr && log_is_enabled(Debug, aot)) {
|
||||
ResourceMark rm;
|
||||
log_debug(cds)("Used all dynamic archived lambda proxy classes for: %s %s%s",
|
||||
log_debug(aot)("Used all dynamic archived lambda proxy classes for: %s %s%s",
|
||||
caller_ik->external_name(), invoked_name->as_C_string(), invoked_type->as_C_string());
|
||||
}
|
||||
}
|
||||
@ -306,9 +306,9 @@ InstanceKlass* LambdaProxyClassDictionary::find_lambda_proxy_class(const RunTime
|
||||
prev_klass->set_next_link(nullptr);
|
||||
proxy_klass = curr_klass;
|
||||
proxy_klass->clear_lambda_proxy_is_available();
|
||||
if (log_is_enabled(Debug, cds)) {
|
||||
if (log_is_enabled(Debug, aot)) {
|
||||
ResourceMark rm;
|
||||
log_debug(cds)("Loaded lambda proxy: %s ", proxy_klass->external_name());
|
||||
log_debug(aot)("Loaded lambda proxy: %s ", proxy_klass->external_name());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -413,7 +413,7 @@ public:
|
||||
// In static dump, info._proxy_klasses->at(0) is already relocated to point to the archived class
|
||||
// (not the original class).
|
||||
ResourceMark rm;
|
||||
log_info(cds,dynamic)("Archiving hidden %s", info._proxy_klasses->at(0)->external_name());
|
||||
log_info(cds, dynamic)("Archiving hidden %s", info._proxy_klasses->at(0)->external_name());
|
||||
size_t byte_size = sizeof(RunTimeLambdaProxyClassInfo);
|
||||
RunTimeLambdaProxyClassInfo* runtime_info =
|
||||
(RunTimeLambdaProxyClassInfo*)ArchiveBuilder::ro_region_alloc(byte_size);
|
||||
|
@ -801,7 +801,8 @@ void MetaspaceShared::preload_and_dump(TRAPS) {
|
||||
} else {
|
||||
aot_log_error(aot)("%s: %s", PENDING_EXCEPTION->klass()->external_name(),
|
||||
java_lang_String::as_utf8_string(java_lang_Throwable::message(PENDING_EXCEPTION)));
|
||||
MetaspaceShared::writing_error("Unexpected exception, use -Xlog:cds,exceptions=trace for detail");
|
||||
MetaspaceShared::writing_error(err_msg("Unexpected exception, use -Xlog:aot%s,exceptions=trace for detail",
|
||||
CDSConfig::new_aot_flags_used() ? "" : ",cds"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ void RegeneratedClasses::add_class(InstanceKlass* orig_klass, InstanceKlass* reg
|
||||
Method* regen_m = regen_klass->find_method(orig_m->name(), orig_m->signature());
|
||||
if (regen_m == nullptr) {
|
||||
ResourceMark rm;
|
||||
log_warning(cds)("Method in original class is missing from regenerated class: " INTPTR_FORMAT " %s",
|
||||
log_warning(aot)("Method in original class is missing from regenerated class: " INTPTR_FORMAT " %s",
|
||||
p2i(orig_m), orig_m->external_name());
|
||||
} else {
|
||||
_renegerated_objs->put((address)orig_m, (address)regen_m);
|
||||
|
@ -22,6 +22,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "cds/aotLogging.hpp"
|
||||
#include "cds/cdsConfig.hpp"
|
||||
#include "cds/serializeClosure.hpp"
|
||||
#include "classfile/classLoaderData.inline.hpp"
|
||||
@ -192,7 +193,7 @@ void ClassLoaderDataShared::serialize(SerializeClosure* f) {
|
||||
// Must be done before ClassLoader::create_javabase()
|
||||
_archived_boot_loader_data.restore(null_class_loader_data(), true, false);
|
||||
ModuleEntryTable::set_javabase_moduleEntry(_archived_javabase_moduleEntry);
|
||||
log_info(cds)("use_full_module_graph = true; java.base = " INTPTR_FORMAT,
|
||||
aot_log_info(aot)("use_full_module_graph = true; java.base = " INTPTR_FORMAT,
|
||||
p2i(_archived_javabase_moduleEntry));
|
||||
}
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ void ClassLoaderExt::record_result_for_builtin_loader(s2 classpath_index, Instan
|
||||
// which requires all the boot classes to be from known locations. This is an
|
||||
// uncommon scenario (even in test cases). Let's simply disable heap object archiving.
|
||||
ResourceMark rm;
|
||||
log_warning(cds)("CDS heap objects cannot be written because class %s maybe modified by ClassFileLoadHook.",
|
||||
log_warning(aot)("heap objects cannot be written because class %s maybe modified by ClassFileLoadHook.",
|
||||
result->external_name());
|
||||
CDSConfig::disable_heap_dumping();
|
||||
}
|
||||
|
@ -155,7 +155,7 @@ void CompactHashtableWriter::dump(SimpleCompactHashtable *cht, const char* table
|
||||
cht->init(base_address, _num_entries_written, _num_buckets,
|
||||
_compact_buckets->data(), _compact_entries->data());
|
||||
|
||||
LogMessage(cds, hashtables) msg;
|
||||
LogMessage(aot, hashtables) msg;
|
||||
if (msg.is_info()) {
|
||||
double avg_cost = 0.0;
|
||||
if (_num_entries_written > 0) {
|
||||
|
@ -427,9 +427,9 @@ ModuleEntry* ModuleEntry::allocate_archived_entry() const {
|
||||
// For verify_archived_module_entries()
|
||||
DEBUG_ONLY(_num_inited_module_entries++);
|
||||
|
||||
if (log_is_enabled(Info, cds, module)) {
|
||||
if (log_is_enabled(Info, aot, module)) {
|
||||
ResourceMark rm;
|
||||
LogStream ls(Log(cds, module)::info());
|
||||
LogStream ls(Log(aot, module)::info());
|
||||
ls.print("Stored in archive: ");
|
||||
archived_entry->print(&ls);
|
||||
}
|
||||
@ -535,9 +535,9 @@ void ModuleEntry::restore_archived_oops(ClassLoaderData* loader_data) {
|
||||
assert(java_lang_Module::loader(module_handle()) == loader_data->class_loader(),
|
||||
"must be set in dump time");
|
||||
|
||||
if (log_is_enabled(Info, cds, module)) {
|
||||
if (log_is_enabled(Info, aot, module)) {
|
||||
ResourceMark rm;
|
||||
LogStream ls(Log(cds, module)::info());
|
||||
LogStream ls(Log(aot, module)::info());
|
||||
ls.print("Restored from archive: ");
|
||||
print(&ls);
|
||||
}
|
||||
|
@ -22,6 +22,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "cds/aotLogging.hpp"
|
||||
#include "cds/archiveBuilder.hpp"
|
||||
#include "cds/cdsConfig.hpp"
|
||||
#include "cds/metaspaceShared.hpp"
|
||||
@ -489,13 +490,13 @@ void Modules::check_archived_module_oop(oop orig_module_obj) {
|
||||
// java.lang.Module::ALL_UNNAMED_MODULE
|
||||
// java.lang.Module::EVERYONE_MODULE
|
||||
// jdk.internal.loader.ClassLoaders$BootClassLoader::unnamedModule
|
||||
log_info(cds, module)("Archived java.lang.Module oop " PTR_FORMAT " with no ModuleEntry*", p2i(orig_module_obj));
|
||||
log_info(aot, module)("Archived java.lang.Module oop " PTR_FORMAT " with no ModuleEntry*", p2i(orig_module_obj));
|
||||
assert(java_lang_Module::name(orig_module_obj) == nullptr, "must be unnamed");
|
||||
} else {
|
||||
// This java.lang.Module oop has an ModuleEntry*. Check if the latter is archived.
|
||||
if (log_is_enabled(Info, cds, module)) {
|
||||
if (log_is_enabled(Info, aot, module)) {
|
||||
ResourceMark rm;
|
||||
LogStream ls(Log(cds, module)::info());
|
||||
LogStream ls(Log(aot, module)::info());
|
||||
ls.print("Archived java.lang.Module oop " PTR_FORMAT " for ", p2i(orig_module_obj));
|
||||
orig_module_ent->print(&ls);
|
||||
}
|
||||
@ -599,7 +600,7 @@ Modules::ArchivedProperty& Modules::archived_prop(size_t i) {
|
||||
void Modules::ArchivedProperty::runtime_check() const {
|
||||
ResourceMark rm;
|
||||
const char* runtime_value = get_flattened_value();
|
||||
log_info(cds)("archived module property %s: %s", _prop,
|
||||
aot_log_info(aot)("archived module property %s: %s", _prop,
|
||||
_archived_value != nullptr ? _archived_value : "(null)");
|
||||
|
||||
bool disable = false;
|
||||
@ -693,8 +694,8 @@ void Modules::serialize_archived_module_info(SerializeClosure* soc) {
|
||||
archived_prop(i).serialize(soc);
|
||||
}
|
||||
if (soc->reading()) {
|
||||
log_info(cds)("optimized module handling: %s", CDSConfig::is_using_optimized_module_handling() ? "enabled" : "disabled");
|
||||
log_info(cds)("full module graph: %s", CDSConfig::is_using_full_module_graph() ? "enabled" : "disabled");
|
||||
aot_log_info(aot)("optimized module handling: %s", CDSConfig::is_using_optimized_module_handling() ? "enabled" : "disabled");
|
||||
aot_log_info(aot)("full module graph: %s", CDSConfig::is_using_full_module_graph() ? "enabled" : "disabled");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -955,13 +955,13 @@ void StringTable::allocate_shared_strings_array(TRAPS) {
|
||||
int total = (int)_items_count;
|
||||
size_t single_array_size = objArrayOopDesc::object_size(total);
|
||||
|
||||
log_info(cds)("allocated string table for %d strings", total);
|
||||
log_info(aot)("allocated string table for %d strings", total);
|
||||
|
||||
if (!ArchiveHeapWriter::is_too_large_to_archive(single_array_size)) {
|
||||
// The entire table can fit in a single array
|
||||
objArrayOop array = oopFactory::new_objArray(vmClasses::Object_klass(), total, CHECK);
|
||||
_shared_strings_array = OopHandle(Universe::vm_global(), array);
|
||||
log_info(cds)("string table array (single level) length = %d", total);
|
||||
log_info(aot)("string table array (single level) length = %d", total);
|
||||
} else {
|
||||
// Split the table in two levels of arrays.
|
||||
int primary_array_length = (total + _secondary_array_max_length - 1) / _secondary_array_max_length;
|
||||
@ -972,7 +972,7 @@ void StringTable::allocate_shared_strings_array(TRAPS) {
|
||||
// This can only happen if you have an extremely large number of classes that
|
||||
// refer to more than 16384 * 16384 = 26M interned strings! Not a practical concern
|
||||
// but bail out for safety.
|
||||
log_error(cds)("Too many strings to be archived: %zu", _items_count);
|
||||
log_error(aot)("Too many strings to be archived: %zu", _items_count);
|
||||
MetaspaceShared::unrecoverable_writing_error();
|
||||
}
|
||||
|
||||
@ -980,7 +980,7 @@ void StringTable::allocate_shared_strings_array(TRAPS) {
|
||||
objArrayHandle primaryHandle(THREAD, primary);
|
||||
_shared_strings_array = OopHandle(Universe::vm_global(), primary);
|
||||
|
||||
log_info(cds)("string table array (primary) length = %d", primary_array_length);
|
||||
log_info(aot)("string table array (primary) length = %d", primary_array_length);
|
||||
for (int i = 0; i < primary_array_length; i++) {
|
||||
int len;
|
||||
if (total > _secondary_array_max_length) {
|
||||
@ -993,7 +993,7 @@ void StringTable::allocate_shared_strings_array(TRAPS) {
|
||||
objArrayOop secondary = oopFactory::new_objArray(vmClasses::Object_klass(), len, CHECK);
|
||||
primaryHandle()->obj_at_put(i, secondary);
|
||||
|
||||
log_info(cds)("string table array (secondary)[%d] length = %d", i, len);
|
||||
log_info(aot)("string table array (secondary)[%d] length = %d", i, len);
|
||||
assert(!ArchiveHeapWriter::is_too_large_to_archive(secondary), "sanity");
|
||||
}
|
||||
|
||||
@ -1064,7 +1064,7 @@ oop StringTable::init_shared_strings_array() {
|
||||
};
|
||||
|
||||
_local_table->do_safepoint_scan(copy_into_array);
|
||||
log_info(cds)("Archived %d interned strings", index);
|
||||
log_info(aot)("Archived %d interned strings", index);
|
||||
return array;
|
||||
};
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
|
||||
#include "cds/aotClassFilter.hpp"
|
||||
#include "cds/aotClassLocation.hpp"
|
||||
#include "cds/aotLogging.hpp"
|
||||
#include "cds/archiveBuilder.hpp"
|
||||
#include "cds/archiveUtils.hpp"
|
||||
#include "cds/cdsConfig.hpp"
|
||||
@ -229,7 +230,7 @@ bool SystemDictionaryShared::check_for_exclusion(InstanceKlass* k, DumpTimeClass
|
||||
// Returns true so the caller can do: return warn_excluded(".....");
|
||||
bool SystemDictionaryShared::warn_excluded(InstanceKlass* k, const char* reason) {
|
||||
ResourceMark rm;
|
||||
log_warning(cds)("Skipping %s: %s", k->name()->as_C_string(), reason);
|
||||
aot_log_warning(aot)("Skipping %s: %s", k->name()->as_C_string(), reason);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -273,7 +274,7 @@ bool SystemDictionaryShared::check_for_exclusion_impl(InstanceKlass* k) {
|
||||
k->set_shared_classpath_index(0);
|
||||
} else {
|
||||
ResourceMark rm;
|
||||
log_info(cds)("Skipping %s because it is dynamically generated", k->name()->as_C_string());
|
||||
aot_log_info(aot)("Skipping %s because it is dynamically generated", k->name()->as_C_string());
|
||||
return true; // exclude without warning
|
||||
}
|
||||
} else {
|
||||
@ -325,14 +326,14 @@ bool SystemDictionaryShared::check_for_exclusion_impl(InstanceKlass* k) {
|
||||
|
||||
if (UnregisteredClasses::check_for_exclusion(k)) {
|
||||
ResourceMark rm;
|
||||
log_info(cds)("Skipping %s: used only when dumping CDS archive", k->name()->as_C_string());
|
||||
aot_log_info(aot)("Skipping %s: used only when dumping CDS archive", k->name()->as_C_string());
|
||||
return true;
|
||||
}
|
||||
|
||||
InstanceKlass* super = k->java_super();
|
||||
if (super != nullptr && check_for_exclusion(super, nullptr)) {
|
||||
ResourceMark rm;
|
||||
log_warning(cds)("Skipping %s: super class %s is excluded", k->name()->as_C_string(), super->name()->as_C_string());
|
||||
aot_log_warning(aot)("Skipping %s: super class %s is excluded", k->name()->as_C_string(), super->name()->as_C_string());
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -342,7 +343,7 @@ bool SystemDictionaryShared::check_for_exclusion_impl(InstanceKlass* k) {
|
||||
InstanceKlass* intf = interfaces->at(i);
|
||||
if (check_for_exclusion(intf, nullptr)) {
|
||||
ResourceMark rm;
|
||||
log_warning(cds)("Skipping %s: interface %s is excluded", k->name()->as_C_string(), intf->name()->as_C_string());
|
||||
aot_log_warning(aot)("Skipping %s: interface %s is excluded", k->name()->as_C_string(), intf->name()->as_C_string());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -824,9 +825,9 @@ void SystemDictionaryShared::check_verification_constraints(InstanceKlass* klass
|
||||
Symbol* name = vc->name();
|
||||
Symbol* from_name = vc->from_name();
|
||||
|
||||
if (log_is_enabled(Trace, cds, verification)) {
|
||||
if (log_is_enabled(Trace, aot, verification)) {
|
||||
ResourceMark rm(THREAD);
|
||||
log_trace(cds, verification)("check_verification_constraint: %s: %s must be subclass of %s [0x%x]",
|
||||
log_trace(aot, verification)("check_verification_constraint: %s: %s must be subclass of %s [0x%x]",
|
||||
klass->external_name(), from_name->as_klass_external_name(),
|
||||
name->as_klass_external_name(), record->verifier_constraint_flag(i));
|
||||
}
|
||||
@ -1042,9 +1043,9 @@ public:
|
||||
} else {
|
||||
_writer->add(hash, delta);
|
||||
}
|
||||
if (log_is_enabled(Trace, cds, hashtables)) {
|
||||
if (log_is_enabled(Trace, aot, hashtables)) {
|
||||
ResourceMark rm;
|
||||
log_trace(cds,hashtables)("%s dictionary: %s", (_is_builtin ? "builtin" : "unregistered"), info._klass->external_name());
|
||||
log_trace(aot, hashtables)("%s dictionary: %s", (_is_builtin ? "builtin" : "unregistered"), info._klass->external_name());
|
||||
}
|
||||
|
||||
// Save this for quick runtime lookup of InstanceKlass* -> RunTimeClassInfo*
|
||||
|
@ -917,7 +917,7 @@ void InterpreterRuntime::cds_resolve_invoke(Bytecodes::Code bytecode, int method
|
||||
// Can't link it here since there are no guarantees it'll be prelinked on the next run.
|
||||
ResourceMark rm;
|
||||
InstanceKlass* resolved_iklass = InstanceKlass::cast(link_info.resolved_klass());
|
||||
log_info(cds, resolve)("Not resolved: class not linked: %s %s %s",
|
||||
log_info(aot, resolve)("Not resolved: class not linked: %s %s %s",
|
||||
resolved_iklass->is_shared() ? "is_shared" : "",
|
||||
resolved_iklass->init_state_name(),
|
||||
resolved_iklass->external_name());
|
||||
|
@ -91,7 +91,7 @@ bool UniqueMetaspaceClosure::do_ref(MetaspaceClosure::Ref* ref, bool read_only)
|
||||
return false; // Already visited: no need to iterate embedded pointers.
|
||||
} else {
|
||||
if (_has_been_visited.maybe_grow()) {
|
||||
log_info(cds, hashtables)("Expanded _has_been_visited table to %d", _has_been_visited.table_size());
|
||||
log_info(aot, hashtables)("Expanded _has_been_visited table to %d", _has_been_visited.table_size());
|
||||
}
|
||||
return do_unique_ref(ref, read_only);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2017, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -200,11 +200,11 @@ private:
|
||||
|
||||
virtual void metaspace_pointers_do(MetaspaceClosure *it) const {
|
||||
Array<T>* array = ArrayRef<T>::dereference();
|
||||
log_trace(cds)("Iter(OtherArray): %p [%d]", array, array->length());
|
||||
log_trace(aot)("Iter(OtherArray): %p [%d]", array, array->length());
|
||||
}
|
||||
virtual void metaspace_pointers_do_at(MetaspaceClosure *it, address new_loc) const {
|
||||
Array<T>* array = (Array<T>*)new_loc;
|
||||
log_trace(cds)("Iter(OtherArray): %p [%d]", array, array->length());
|
||||
log_trace(aot)("Iter(OtherArray): %p [%d]", array, array->length());
|
||||
}
|
||||
};
|
||||
|
||||
@ -222,7 +222,7 @@ private:
|
||||
}
|
||||
private:
|
||||
void metaspace_pointers_do_at_impl(MetaspaceClosure *it, Array<T>* array) const {
|
||||
log_trace(cds)("Iter(MSOArray): %p [%d]", array, array->length());
|
||||
log_trace(aot)("Iter(MSOArray): %p [%d]", array, array->length());
|
||||
for (int i = 0; i < array->length(); i++) {
|
||||
T* elm = array->adr_at(i);
|
||||
elm->metaspace_pointers_do(it);
|
||||
@ -244,7 +244,7 @@ private:
|
||||
}
|
||||
private:
|
||||
void metaspace_pointers_do_at_impl(MetaspaceClosure *it, Array<T*>* array) const {
|
||||
log_trace(cds)("Iter(MSOPointerArray): %p [%d]", array, array->length());
|
||||
log_trace(aot)("Iter(MSOPointerArray): %p [%d]", array, array->length());
|
||||
for (int i = 0; i < array->length(); i++) {
|
||||
T** mpp = array->adr_at(i);
|
||||
it->push(mpp);
|
||||
|
@ -76,7 +76,7 @@ typeArrayOop Annotations::make_java_array(AnnotationArray* annotations, TRAPS) {
|
||||
}
|
||||
|
||||
void Annotations::metaspace_pointers_do(MetaspaceClosure* it) {
|
||||
log_trace(cds)("Iter(Annotations): %p", this);
|
||||
log_trace(aot)("Iter(Annotations): %p", this);
|
||||
it->push(&_class_annotations);
|
||||
it->push(&_fields_annotations);
|
||||
it->push(&_class_type_annotations);
|
||||
|
@ -207,7 +207,7 @@ void ArrayKlass::metaspace_pointers_do(MetaspaceClosure* it) {
|
||||
Klass::metaspace_pointers_do(it);
|
||||
|
||||
ResourceMark rm;
|
||||
log_trace(cds)("Iter(ArrayKlass): %p (%s)", this, external_name());
|
||||
log_trace(aot)("Iter(ArrayKlass): %p (%s)", this, external_name());
|
||||
|
||||
// need to cast away volatile
|
||||
it->push((Klass**)&_higher_dimension);
|
||||
|
@ -417,7 +417,7 @@ void ConstMethod::copy_annotations_from(ClassLoaderData* loader_data, ConstMetho
|
||||
}
|
||||
|
||||
void ConstMethod::metaspace_pointers_do(MetaspaceClosure* it) {
|
||||
log_trace(cds)("Iter(ConstMethod): %p", this);
|
||||
log_trace(aot)("Iter(ConstMethod): %p", this);
|
||||
|
||||
if (!method()->method_holder()->is_rewritten()) {
|
||||
it->push(&_constants, MetaspaceClosure::_writable);
|
||||
|
@ -149,7 +149,7 @@ void ConstantPool::release_C_heap_structures() {
|
||||
}
|
||||
|
||||
void ConstantPool::metaspace_pointers_do(MetaspaceClosure* it) {
|
||||
log_trace(cds)("Iter(ConstantPool): %p", this);
|
||||
log_trace(aot)("Iter(ConstantPool): %p", this);
|
||||
|
||||
it->push(&_tags, MetaspaceClosure::_writable);
|
||||
it->push(&_cache);
|
||||
@ -501,7 +501,7 @@ static const char* get_type(Klass* k) {
|
||||
|
||||
void ConstantPool::remove_unshareable_entries() {
|
||||
ResourceMark rm;
|
||||
log_info(cds, resolve)("Archiving CP entries for %s", pool_holder()->name()->as_C_string());
|
||||
log_info(aot, resolve)("Archiving CP entries for %s", pool_holder()->name()->as_C_string());
|
||||
for (int cp_index = 1; cp_index < length(); cp_index++) { // cp_index 0 is unused
|
||||
int cp_tag = tag_at(cp_index).value();
|
||||
switch (cp_tag) {
|
||||
@ -560,7 +560,7 @@ void ConstantPool::remove_resolved_klass_if_non_deterministic(int cp_index) {
|
||||
resolved_klasses()->at_put(resolved_klass_index, nullptr);
|
||||
}
|
||||
|
||||
LogStreamHandle(Trace, cds, resolve) log;
|
||||
LogStreamHandle(Trace, aot, resolve) log;
|
||||
if (log.is_enabled()) {
|
||||
ResourceMark rm;
|
||||
log.print("%s klass CP entry [%3d]: %s %s",
|
||||
|
@ -437,7 +437,7 @@ void ConstantPoolCache::remove_resolved_field_entries_if_non_deterministic() {
|
||||
rfi->remove_unshareable_info();
|
||||
}
|
||||
if (resolved) {
|
||||
LogStreamHandle(Trace, cds, resolve) log;
|
||||
LogStreamHandle(Trace, aot, resolve) log;
|
||||
if (log.is_enabled()) {
|
||||
ResourceMark rm;
|
||||
int klass_cp_index = cp->uncached_klass_ref_index_at(cp_index);
|
||||
@ -477,7 +477,7 @@ void ConstantPoolCache::remove_resolved_method_entries_if_non_deterministic() {
|
||||
rme->remove_unshareable_info();
|
||||
}
|
||||
if (resolved) {
|
||||
LogStreamHandle(Trace, cds, resolve) log;
|
||||
LogStreamHandle(Trace, aot, resolve) log;
|
||||
if (log.is_enabled()) {
|
||||
ResourceMark rm;
|
||||
int klass_cp_index = cp->uncached_klass_ref_index_at(cp_index);
|
||||
@ -517,7 +517,7 @@ void ConstantPoolCache::remove_resolved_indy_entries_if_non_deterministic() {
|
||||
rei->remove_unshareable_info();
|
||||
}
|
||||
if (resolved) {
|
||||
LogStreamHandle(Trace, cds, resolve) log;
|
||||
LogStreamHandle(Trace, aot, resolve) log;
|
||||
if (log.is_enabled()) {
|
||||
ResourceMark rm;
|
||||
int bsm = cp->bootstrap_method_ref_index_at(cp_index);
|
||||
@ -705,7 +705,7 @@ void ConstantPoolCache::dump_cache() {
|
||||
#endif // INCLUDE_JVMTI
|
||||
|
||||
void ConstantPoolCache::metaspace_pointers_do(MetaspaceClosure* it) {
|
||||
log_trace(cds)("Iter(ConstantPoolCache): %p", this);
|
||||
log_trace(aot)("Iter(ConstantPoolCache): %p", this);
|
||||
it->push(&_constant_pool);
|
||||
it->push(&_reference_map);
|
||||
if (_resolved_indy_entries != nullptr) {
|
||||
|
@ -866,9 +866,9 @@ void InstanceKlass::initialize_with_aot_initialized_mirror(TRAPS) {
|
||||
initialize(CHECK);
|
||||
return;
|
||||
}
|
||||
if (log_is_enabled(Info, cds, init)) {
|
||||
if (log_is_enabled(Info, aot, init)) {
|
||||
ResourceMark rm;
|
||||
log_info(cds, init)("%s (aot-inited)", external_name());
|
||||
log_info(aot, init)("%s (aot-inited)", external_name());
|
||||
}
|
||||
|
||||
link_class(CHECK);
|
||||
@ -2567,9 +2567,9 @@ void InstanceKlass::clean_method_data() {
|
||||
void InstanceKlass::metaspace_pointers_do(MetaspaceClosure* it) {
|
||||
Klass::metaspace_pointers_do(it);
|
||||
|
||||
if (log_is_enabled(Trace, cds)) {
|
||||
if (log_is_enabled(Trace, aot)) {
|
||||
ResourceMark rm;
|
||||
log_trace(cds)("Iter(InstanceKlass): %p (%s)", this, external_name());
|
||||
log_trace(aot)("Iter(InstanceKlass): %p (%s)", this, external_name());
|
||||
}
|
||||
|
||||
it->push(&_annotations);
|
||||
|
@ -761,9 +761,9 @@ void Klass::clean_weak_klass_links(bool unloading_occurred, bool clean_alive_kla
|
||||
}
|
||||
|
||||
void Klass::metaspace_pointers_do(MetaspaceClosure* it) {
|
||||
if (log_is_enabled(Trace, cds)) {
|
||||
if (log_is_enabled(Trace, aot)) {
|
||||
ResourceMark rm;
|
||||
log_trace(cds)("Iter(Klass): %p (%s)", this, external_name());
|
||||
log_trace(aot)("Iter(Klass): %p (%s)", this, external_name());
|
||||
}
|
||||
|
||||
it->push(&_name);
|
||||
|
@ -386,7 +386,7 @@ Symbol* Method::klass_name() const {
|
||||
}
|
||||
|
||||
void Method::metaspace_pointers_do(MetaspaceClosure* it) {
|
||||
log_trace(cds)("Iter(Method): %p", this);
|
||||
log_trace(aot)("Iter(Method): %p", this);
|
||||
|
||||
if (!method_holder()->is_rewritten()) {
|
||||
it->push(&_constMethod, MetaspaceClosure::_writable);
|
||||
|
@ -1725,7 +1725,7 @@ bool MethodData::profile_parameters_for_method(const methodHandle& m) {
|
||||
}
|
||||
|
||||
void MethodData::metaspace_pointers_do(MetaspaceClosure* it) {
|
||||
log_trace(cds)("Iter(MethodData): %p", this);
|
||||
log_trace(aot)("Iter(MethodData): %p", this);
|
||||
it->push(&_method);
|
||||
}
|
||||
|
||||
|
@ -50,7 +50,7 @@ void RecordComponent::deallocate_contents(ClassLoaderData* loader_data) {
|
||||
}
|
||||
|
||||
void RecordComponent::metaspace_pointers_do(MetaspaceClosure* it) {
|
||||
log_trace(cds)("Iter(RecordComponent): %p", this);
|
||||
log_trace(aot)("Iter(RecordComponent): %p", this);
|
||||
it->push(&_annotations);
|
||||
it->push(&_type_annotations);
|
||||
}
|
||||
|
@ -367,8 +367,8 @@ void Symbol::make_permanent() {
|
||||
}
|
||||
|
||||
void Symbol::metaspace_pointers_do(MetaspaceClosure* it) {
|
||||
if (log_is_enabled(Trace, cds)) {
|
||||
LogStream trace_stream(Log(cds)::trace());
|
||||
if (log_is_enabled(Trace, aot)) {
|
||||
LogStream trace_stream(Log(aot)::trace());
|
||||
trace_stream.print("Iter(Symbol): %p ", this);
|
||||
print_value_on(&trace_stream);
|
||||
trace_stream.cr();
|
||||
|
@ -2767,10 +2767,10 @@ JVM_ENTRY(void, JVM_StartThread(JNIEnv* env, jobject jthread))
|
||||
// creates the module graph, etc. It's safe to not start the other
|
||||
// threads which are launched by class static initializers
|
||||
// (ReferenceHandler, FinalizerThread and CleanerImpl).
|
||||
if (log_is_enabled(Info, cds)) {
|
||||
if (log_is_enabled(Info, aot)) {
|
||||
ResourceMark rm;
|
||||
oop t = JNIHandles::resolve_non_null(jthread);
|
||||
log_info(cds)("JVM_StartThread() ignored: %s", t->klass()->external_name());
|
||||
log_info(aot)("JVM_StartThread() ignored: %s", t->klass()->external_name());
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -3463,7 +3463,7 @@ JVM_ENTRY_NO_ENV(jlong, JVM_GetRandomSeedForDumping())
|
||||
if (seed == 0) { // don't let this ever be zero.
|
||||
seed = 0x87654321;
|
||||
}
|
||||
log_debug(cds)("JVM_GetRandomSeedForDumping() = " JLONG_FORMAT, seed);
|
||||
log_debug(aot)("JVM_GetRandomSeedForDumping() = " JLONG_FORMAT, seed);
|
||||
return seed;
|
||||
} else {
|
||||
return 0;
|
||||
@ -3526,7 +3526,7 @@ JVM_ENTRY(jboolean, JVM_NeedsClassInitBarrierForCDS(JNIEnv* env, jclass cls))
|
||||
// If we cannot cache the class in AOT-initialized state, java.lang.invoke handles
|
||||
// must emit barriers to ensure class initialization during production run.
|
||||
ResourceMark rm(THREAD);
|
||||
log_debug(cds)("NeedsClassInitBarrierForCDS: %s", k->external_name());
|
||||
log_debug(aot)("NeedsClassInitBarrierForCDS: %s", k->external_name());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -1374,7 +1374,7 @@ void Arguments::no_shared_spaces(const char* message) {
|
||||
if (CDSConfig::new_aot_flags_used()) {
|
||||
log_warning(aot)("Unable to use AOT cache: %s", message);
|
||||
} else {
|
||||
log_info(cds)("Unable to use shared archive: %s", message);
|
||||
aot_log_info(aot)("Unable to use shared archive: %s", message);
|
||||
}
|
||||
UseSharedSpaces = false;
|
||||
}
|
||||
@ -3616,10 +3616,11 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
|
||||
return JNI_ERR;
|
||||
}
|
||||
if ((CDSConfig::is_using_archive() && xshare_auto_cmd_line) ||
|
||||
log_is_enabled(Info, cds)) {
|
||||
log_is_enabled(Info, cds) || log_is_enabled(Info, aot)) {
|
||||
warning("Shared spaces are not supported in this VM");
|
||||
UseSharedSpaces = false;
|
||||
LogConfiguration::configure_stdout(LogLevel::Off, true, LOG_TAGS(cds));
|
||||
LogConfiguration::configure_stdout(LogLevel::Off, true, LOG_TAGS(aot));
|
||||
}
|
||||
no_shared_spaces("CDS Disabled");
|
||||
#endif // INCLUDE_CDS
|
||||
|
@ -2898,7 +2898,7 @@ public:
|
||||
{}
|
||||
|
||||
bool do_entry(AdapterFingerPrint* fp, AdapterHandlerEntry* entry) {
|
||||
LogStreamHandle(Trace, cds) lsh;
|
||||
LogStreamHandle(Trace, aot) lsh;
|
||||
if (ArchiveBuilder::current()->has_been_archived((address)entry)) {
|
||||
assert(ArchiveBuilder::current()->has_been_archived((address)fp), "must be");
|
||||
AdapterFingerPrint* buffered_fp = ArchiveBuilder::current()->get_buffered_addr(fp);
|
||||
@ -2912,11 +2912,11 @@ public:
|
||||
if (lsh.is_enabled()) {
|
||||
address fp_runtime_addr = (address)buffered_fp + ArchiveBuilder::current()->buffer_to_requested_delta();
|
||||
address entry_runtime_addr = (address)buffered_entry + ArchiveBuilder::current()->buffer_to_requested_delta();
|
||||
log_trace(cds)("Added fp=%p (%s), entry=%p to the archived adater table", buffered_fp, buffered_fp->as_basic_args_string(), buffered_entry);
|
||||
log_trace(aot)("Added fp=%p (%s), entry=%p to the archived adater table", buffered_fp, buffered_fp->as_basic_args_string(), buffered_entry);
|
||||
}
|
||||
} else {
|
||||
if (lsh.is_enabled()) {
|
||||
log_trace(cds)("Skipping adapter handler %p (fp=%s) as it is not archived", entry, fp->as_basic_args_string());
|
||||
log_trace(aot)("Skipping adapter handler %p (fp=%s) as it is not archived", entry, fp->as_basic_args_string());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@ -2964,7 +2964,7 @@ void AdapterHandlerEntry::link() {
|
||||
if (AOTCodeCache::is_using_adapter()) {
|
||||
adapter_blob = AdapterHandlerLibrary::link_aot_adapter_handler(this);
|
||||
if (adapter_blob == nullptr) {
|
||||
log_warning(cds)("Failed to link AdapterHandlerEntry (fp=%s) to its code in the AOT code cache", _fingerprint->as_basic_args_string());
|
||||
log_warning(aot)("Failed to link AdapterHandlerEntry (fp=%s) to its code in the AOT code cache", _fingerprint->as_basic_args_string());
|
||||
generate_code = true;
|
||||
}
|
||||
} else {
|
||||
@ -3052,7 +3052,7 @@ void AdapterHandlerEntry::relocate(address new_base) {
|
||||
}
|
||||
|
||||
void AdapterHandlerEntry::metaspace_pointers_do(MetaspaceClosure* it) {
|
||||
LogStreamHandle(Trace, cds) lsh;
|
||||
LogStreamHandle(Trace, aot) lsh;
|
||||
if (lsh.is_enabled()) {
|
||||
lsh.print("Iter(AdapterHandlerEntry): %p(%s)", this, _fingerprint->as_basic_args_string());
|
||||
lsh.cr();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -33,7 +33,7 @@ import java.util.regex.Pattern;
|
||||
|
||||
This is a simple parser for parsing the output of
|
||||
|
||||
java -Xshare:dump -Xlog:cds+map=debug,cds+map+oops=trace:file=cds.map:none:filesize=0
|
||||
java -Xshare:dump -Xlog:aot+map=debug,aot+map+oops=trace:file=cds.map:none:filesize=0
|
||||
|
||||
The map file contains patterns like this for the heap objects:
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -24,7 +24,7 @@
|
||||
/**
|
||||
* @test
|
||||
* @bug 8308903
|
||||
* @summary Test the contents of -Xlog:cds+map
|
||||
* @summary Test the contents of -Xlog:aot+map
|
||||
* @requires vm.cds
|
||||
* @library /test/lib
|
||||
* @run driver CDSMapTest
|
||||
@ -67,7 +67,7 @@ public class CDSMapTest {
|
||||
String mapName = logName + ".map";
|
||||
CDSOptions opts = (new CDSOptions())
|
||||
.addPrefix("-Xlog:cds=debug")
|
||||
.addPrefix("-Xlog:cds+map=debug,cds+map+oops=trace:file=" + mapName + ":none:filesize=0")
|
||||
.addPrefix("-Xlog:aot+map=debug,aot+map+oops=trace:file=" + mapName + ":none:filesize=0")
|
||||
.setArchiveName(archiveName)
|
||||
.addSuffix(args)
|
||||
.addSuffix(more);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -100,7 +100,7 @@ public class DeterministicDump {
|
||||
CDSOptions opts = (new CDSOptions())
|
||||
.addPrefix("-Xint") // Override any -Xmixed/-Xcomp flags from jtreg -vmoptions
|
||||
.addPrefix("-Xlog:cds=debug,gc=debug")
|
||||
.addPrefix("-Xlog:cds+map*=trace:file=" + mapName + ":none:filesize=0")
|
||||
.addPrefix("-Xlog:aot+map*=trace:file=" + mapName + ":none:filesize=0")
|
||||
.setArchiveName(archiveName)
|
||||
.addSuffix(args)
|
||||
.addSuffix(more);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -47,7 +47,7 @@ public class SharedStrings {
|
||||
ProcessBuilder pb = ProcessTools.createLimitedTestJavaProcessBuilder(
|
||||
"-XX:+UnlockDiagnosticVMOptions",
|
||||
"-XX:SharedArchiveFile=./SharedStrings.jsa",
|
||||
"-Xlog:cds,cds+hashtables",
|
||||
"-Xlog:cds,aot+hashtables",
|
||||
// Needed for bootclasspath match, for CDS to work with WhiteBox API
|
||||
"-Xbootclasspath/a:" + ClassFileInstaller.getJarPath("whitebox.jar"),
|
||||
"-Xshare:dump");
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -49,7 +49,7 @@ public class SpaceUtilizationCheck {
|
||||
// [2] There must be no gap between two consecutive regions.
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
test("-Xlog:cds=debug");
|
||||
test("-Xlog:aot=debug,cds=debug");
|
||||
}
|
||||
|
||||
static void test(String... extra_options) throws Exception {
|
||||
|
@ -283,7 +283,7 @@ public class AOTFlags {
|
||||
"-cp", appJar, helloClass);
|
||||
|
||||
out = CDSTestUtils.executeAndLog(pb, "neg");
|
||||
out.shouldContain("Not a valid archive (hello.aotconfig)");
|
||||
out.shouldContain("Not a valid shared archive file (hello.aotconfig)");
|
||||
out.shouldNotHaveExitValue(0);
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -36,7 +36,7 @@ import jdk.test.lib.process.OutputAnalyzer;
|
||||
import jdk.test.lib.cds.CDSTestUtils;
|
||||
|
||||
public class ExtraSymbols {
|
||||
static final String CDS_LOGGING = "-Xlog:cds,cds+hashtables";
|
||||
static final String CDS_LOGGING = "-Xlog:cds,aot+hashtables";
|
||||
public static void main(String[] args) throws Exception {
|
||||
String appJar = JarBuilder.getOrCreateHelloJar();
|
||||
|
||||
@ -75,8 +75,8 @@ public class ExtraSymbols {
|
||||
|
||||
static int numOfEntries(OutputAnalyzer output) {
|
||||
// Look for this pattern:
|
||||
// [4.661s][info][cds,hashtables] Shared symbol table stats -------- base: 0x0000000800000000
|
||||
// [4.661s][info][cds,hashtables] Number of entries : 50078
|
||||
// [4.661s][info][aot,hashtables] Shared symbol table stats -------- base: 0x0000000800000000
|
||||
// [4.661s][info][aot,hashtables] Number of entries : 50078
|
||||
String s = output.firstMatch("Shared symbol table stats[^\n]*\n[^\n]*Number of entries : .*");
|
||||
String subs[] = s.split("[:]");
|
||||
int numEntries = Integer.parseInt(subs[2].trim());
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -65,7 +65,7 @@ public class LambdaEagerInit {
|
||||
".class.load. java.util.stream.Collectors[$][$]Lambda.*/0x.*source:.*java.*util.*stream.*Collectors";
|
||||
private static final String lambdaLoadedFromArchive =
|
||||
".class.load. java.util.stream.Collectors[$][$]Lambda.*/0x.*source:.*shared.*objects.*file";
|
||||
private static final String cdsLoadedLambdaProxy = ".cds.*Loaded.*lambda.*proxy";
|
||||
private static final String cdsLoadedLambdaProxy = ".aot.*Loaded.*lambda.*proxy";
|
||||
private static final String archiveName = mainClass + ".jsa";
|
||||
private static String appJar;
|
||||
|
||||
@ -75,7 +75,7 @@ public class LambdaEagerInit {
|
||||
// create base archive with the -Djdk.internal.lambda.disableEagerInitialization=true property
|
||||
CDSOptions opts = (new CDSOptions())
|
||||
.addPrefix(testProperty,
|
||||
"-Xlog:class+load,cds")
|
||||
"-Xlog:class+load,aot,cds")
|
||||
.setArchiveName(archiveName);
|
||||
CDSTestUtils.createArchiveAndCheck(opts);
|
||||
}
|
||||
@ -96,7 +96,7 @@ public class LambdaEagerInit {
|
||||
static void testWithEagerInitializationDisabled() throws Exception {
|
||||
// run with custom base archive without the -Djdk.internal.lambda.disableEagerInitialization=true property
|
||||
CDSOptions runOpts = (new CDSOptions())
|
||||
.addPrefix("-cp", appJar, "-Xlog:class+load,cds=debug")
|
||||
.addPrefix("-cp", appJar, "-Xlog:class+load,aot=debug,cds=debug")
|
||||
.setArchiveName(archiveName)
|
||||
.setUseVersion(false)
|
||||
.addSuffix(mainClass);
|
||||
@ -110,7 +110,7 @@ public class LambdaEagerInit {
|
||||
// run with default CDS archive with the -Djdk.internal.lambda.disableEagerInitialization=true property
|
||||
CDSOptions runOpts = (new CDSOptions())
|
||||
.setXShareMode("auto")
|
||||
.addPrefix("-cp", appJar, testProperty, "-Xlog:class+load,cds=debug")
|
||||
.addPrefix("-cp", appJar, testProperty, "-Xlog:class+load,aot=debug,cds=debug")
|
||||
.setUseSystemArchive(true)
|
||||
.setUseVersion(false)
|
||||
.addSuffix(mainClass);
|
||||
@ -124,7 +124,7 @@ public class LambdaEagerInit {
|
||||
// run with default CDS archive without the -Djdk.internal.lambda.disableEagerInitialization=true property
|
||||
CDSOptions runOpts = (new CDSOptions())
|
||||
.setXShareMode("auto")
|
||||
.addPrefix("-cp", appJar, "-Xlog:class+load,cds=debug")
|
||||
.addPrefix("-cp", appJar, "-Xlog:class+load,aot=debug,cds=debug")
|
||||
.setUseSystemArchive(true)
|
||||
.setUseVersion(false)
|
||||
.addSuffix("-showversion", mainClass);
|
||||
|
@ -72,16 +72,16 @@ public class LambdaWithJavaAgent {
|
||||
"-XX:+UnlockDiagnosticVMOptions",
|
||||
"-XX:+AllowArchivingWithJavaAgent",
|
||||
useJavaAgent,
|
||||
"-Xlog:class+load,cds+class=debug,cds")
|
||||
"-Xlog:class+load,cds+class=debug,aot,cds")
|
||||
.setArchiveName(archiveName);
|
||||
OutputAnalyzer output = CDSTestUtils.createArchiveAndCheck(opts);
|
||||
output.shouldContain("CDS heap objects cannot be written because class jdk.internal.math.FDBigInteger maybe modified by ClassFileLoadHook")
|
||||
output.shouldContain("heap objects cannot be written because class jdk.internal.math.FDBigInteger maybe modified by ClassFileLoadHook")
|
||||
.shouldContain("Skipping jdk/internal/math/FDBigInteger: Unsupported location")
|
||||
.shouldMatch(".class.load.*jdk.internal.math.FDBigInteger.*source.*modules");
|
||||
|
||||
// run with archive
|
||||
CDSOptions runOpts = (new CDSOptions())
|
||||
.addPrefix("-cp", appJar, "-Xlog:class+load=debug,cds=debug,class+path=debug",
|
||||
.addPrefix("-cp", appJar, "-Xlog:class+load=debug,aot=debug,cds=debug,class+path=debug",
|
||||
"-XX:+UnlockDiagnosticVMOptions",
|
||||
"-XX:+AllowArchivingWithJavaAgent",
|
||||
useJavaAgent)
|
||||
|
@ -48,7 +48,7 @@ public class VerifierTest implements Opcodes {
|
||||
static final String PASS_RESULT = "Hi, how are you?";
|
||||
static final String VFY_INFO_MESSAGE =
|
||||
"All non-system classes will be verified (-Xverify:remote) during CDS dump time.";
|
||||
static final String CDS_LOGGING = "-Xlog:cds,cds+hashtables";
|
||||
static final String CDS_LOGGING = "-Xlog:cds,aot+hashtables";
|
||||
|
||||
enum Testset1Part {
|
||||
A, B
|
||||
|
@ -99,21 +99,21 @@ public class AddExports {
|
||||
test("FMG should be enabled with '--add-exports java.base/jdk.internal.misc=ALL-UNNAMED'",
|
||||
SimpleCDSAppTester.of("nonModuleNeedsJdkAddExport")
|
||||
.classpath(nonModuleNeedsJdkAddExportJar)
|
||||
.addVmArgs("--add-exports", "java.base/jdk.internal.misc=ALL-UNNAMED", "-Xlog:cds")
|
||||
.addVmArgs("--add-exports", "java.base/jdk.internal.misc=ALL-UNNAMED", "-Xlog:aot,cds")
|
||||
.appCommandLine("com.nomodule.needsjdkaddexport.Main"));
|
||||
|
||||
test("FMG should be enabled with '--add-exports java.base/jdk.internal.misc=com.needsjdkaddexport'",
|
||||
SimpleCDSAppTester.of("moduleNeedsJdkAddExport")
|
||||
.modulepath(modulePath)
|
||||
.addVmArgs("--add-modules", "com.needsjdkaddexport",
|
||||
"--add-exports", "java.base/jdk.internal.misc=com.needsjdkaddexport", "-Xlog:cds")
|
||||
"--add-exports", "java.base/jdk.internal.misc=com.needsjdkaddexport", "-Xlog:aot,cds")
|
||||
.appCommandLine("-m", "com.needsjdkaddexport/com.needsjdkaddexport.Main"));
|
||||
|
||||
test("FMG should be enabled with '--add-exports com.foos/com.foos.internal=com.needsfoosaddexport'",
|
||||
SimpleCDSAppTester.of("moduleNeedsFoosAddExport")
|
||||
.modulepath(modulePath)
|
||||
.addVmArgs("--add-modules", "com.needsfoosaddexport",
|
||||
"--add-exports", "com.foos/com.foos.internal=com.needsfoosaddexport", "-Xlog:cds")
|
||||
"--add-exports", "com.foos/com.foos.internal=com.needsfoosaddexport", "-Xlog:aot,cds")
|
||||
.appCommandLine("-m", "com.needsfoosaddexport/com.needsfoosaddexport.Main"));
|
||||
|
||||
test("FMG should be enabled with multiple --add-exports",
|
||||
@ -124,7 +124,7 @@ public class AddExports {
|
||||
"--add-exports", "com.foos/com.foos.internal=ALL-UNNAMED",
|
||||
"--add-exports", "java.base/jdk.internal.misc=ALL-UNNAMED",
|
||||
"--add-exports", "java.base/jdk.internal.misc=com.foos",
|
||||
"-Xlog:cds")
|
||||
"-Xlog:aot,cds")
|
||||
.appCommandLine("-m", "com.needsfoosaddexport/com.needsfoosaddexport.Main"));
|
||||
}
|
||||
}
|
||||
|
@ -133,13 +133,13 @@ public class AddReads {
|
||||
return new String[] {
|
||||
"--add-modules", SUB_MODULE,
|
||||
"--add-reads", "com.norequires=" + SUB_MODULE,
|
||||
"-Xlog:class+load,cds,class+path=info",
|
||||
"-Xlog:class+load,aot,cds,class+path=info",
|
||||
};
|
||||
} else {
|
||||
return new String[] {
|
||||
"--add-modules", SUB_MODULE,
|
||||
"--add-reads", "com.norequires=ALL-UNNAMED",
|
||||
"-Xlog:class+load,cds,class+path=info",
|
||||
"-Xlog:class+load,aot,cds,class+path=info",
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -184,7 +184,7 @@ public class AddReads {
|
||||
.modulepath(moduleDir.toString())
|
||||
.addVmArgs("--add-modules", SUB_MODULE,
|
||||
"--add-reads", "com.norequires=" + SUB_MODULE,
|
||||
"-Xlog:class+load,cds,class+path=info")
|
||||
"-Xlog:class+load,aot,cds,class+path=info")
|
||||
.appCommandLine("-m", MAIN_MODULE));
|
||||
|
||||
test("FMG should be enabled with '--add-reads com.norequires=org.astro'",
|
||||
@ -193,7 +193,7 @@ public class AddReads {
|
||||
.modulepath(moduleDir.toString())
|
||||
.addVmArgs("--add-modules", SUB_MODULE,
|
||||
"--add-reads", "com.norequires=" + SUB_MODULE,
|
||||
"-Xlog:class+load,cds,class+path=info")
|
||||
"-Xlog:class+load,aot,cds,class+path=info")
|
||||
.appCommandLine("-m", MAIN_MODULE));
|
||||
|
||||
printComment("FMG should be enabled with '--add-reads com.norequires=ALL-UNNAMED");
|
||||
|
@ -75,7 +75,6 @@ public class MethodHandleTest {
|
||||
return new String[] {
|
||||
"-Xlog:gc,cds+class=debug",
|
||||
"-XX:AOTInitTestClass=MethodHandleTestApp",
|
||||
"-Xlog:cds+map,cds+map+oops=trace:file=cds.oops.txt:none:filesize=0",
|
||||
};
|
||||
} else {
|
||||
return new String[] {};
|
||||
|
@ -89,7 +89,6 @@ public class WeakReferenceTest {
|
||||
return new String[] {
|
||||
"-Xlog:gc,cds+class=debug",
|
||||
"-XX:AOTInitTestClass=" + mainClass,
|
||||
"-Xlog:cds+map,cds+map+oops=trace:file=cds.oops.txt:none:filesize=0",
|
||||
};
|
||||
} else {
|
||||
return new String[] {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -90,14 +90,15 @@ public class LambdasInTwoArchives extends DynamicArchiveTestBase {
|
||||
String[] launchArgs = {
|
||||
"-Xshare:off",
|
||||
"-XX:DumpLoadedClassList=" + classListFileName,
|
||||
"-Xlog:aot",
|
||||
"-Xlog:aot+lambda",
|
||||
"-Xlog:cds",
|
||||
"-Xlog:cds+lambda",
|
||||
"-cp", appJar, mainClass};
|
||||
ProcessBuilder pb = ProcessTools.createLimitedTestJavaProcessBuilder(launchArgs);
|
||||
OutputAnalyzer oa = TestCommon.executeAndLog(pb, "lambda-classes");
|
||||
oa.shouldHaveExitValue(0);
|
||||
|
||||
String logOptions = "-Xlog:cds=debug,class+load,cds+class=debug";
|
||||
String logOptions = "-Xlog:aot=debug,cds=debug,class+load,cds+class=debug";
|
||||
String baseArchiveName = CDSTestUtils.getOutputFileName("lambda-base.jsa");
|
||||
// Static dump based on the class list.
|
||||
dumpBaseArchive(baseArchiveName,
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -63,6 +63,7 @@ public class UsedAllArchivedLambdas extends DynamicArchiveTestBase {
|
||||
"-XX:+UnlockDiagnosticVMOptions",
|
||||
"-XX:+WhiteBoxAPI",
|
||||
use_whitebox_jar,
|
||||
"-Xlog:aot=debug",
|
||||
"-Xlog:cds=debug",
|
||||
"-cp", appJar, mainClass, "run")
|
||||
.assertNormalExit(output -> {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -69,7 +69,7 @@ public class ExceptionDuringDumpAtObjectsInitPhase {
|
||||
"-Dtest.with.exception=true",
|
||||
gcLog).shouldNotHaveExitValue(0)
|
||||
.shouldContain("Preload Warning: Cannot find jdk/internal/math/FDBigInteger")
|
||||
.shouldContain("Unexpected exception, use -Xlog:cds,exceptions=trace for detail");
|
||||
.shouldContain("Unexpected exception, use -Xlog:aot,cds,exceptions=trace for detail");
|
||||
|
||||
// 2. Test with OOM
|
||||
System.out.println("2. OOM during dump");
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -63,7 +63,7 @@ public class CheckUnsupportedDumpingOptions {
|
||||
String appClasses[] = {"Hello"};
|
||||
for (int i = 0; i < jigsawOptions.length; i++) {
|
||||
OutputAnalyzer output;
|
||||
output = TestCommon.dump(appJar, appClasses, "-Xlog:cds,cds+hashtables",
|
||||
output = TestCommon.dump(appJar, appClasses, "-Xlog:cds,aot+hashtables",
|
||||
jigsawOptions[i], optionValues[i]);
|
||||
output.shouldContain("Cannot use the following option " +
|
||||
"when dumping the shared archive: " + jigsawOptions[i])
|
||||
|
@ -45,7 +45,7 @@ public class AddmodsOption {
|
||||
final String multiModules = ",,jdk.jconsole,jdk.compiler,,";
|
||||
final String allSystem = "ALL-SYSTEM";
|
||||
final String allModulePath = "ALL-MODULE-PATH";
|
||||
final String loggingOption = "-Xlog:aot=debug,cds+module=debug,aot+heap=info,cds=debug,module=trace";
|
||||
final String loggingOption = "-Xlog:aot=debug,aot+module=debug,aot+heap=info,cds=debug,module=trace";
|
||||
final String versionPattern = "java.[0-9][0-9].*";
|
||||
final String subgraphCannotBeUsed = "subgraph jdk.internal.module.ArchivedBootLayer cannot be used because full module graph is disabled";
|
||||
final String warningIncubator = "WARNING: Using incubator modules: jdk.incubator.vector";
|
||||
@ -70,8 +70,8 @@ public class AddmodsOption {
|
||||
oa.shouldHaveExitValue(0)
|
||||
// version of the jdk.httpserver module, e.g. java 22-ea
|
||||
.shouldMatch(versionPattern)
|
||||
.shouldMatch("cds,module.*Restored from archive: entry.0x.*name jdk.jconsole")
|
||||
.shouldMatch("cds,module.*Restored from archive: entry.0x.*name jdk.httpserver");
|
||||
.shouldMatch("aot,module.*Restored from archive: entry.0x.*name jdk.jconsole")
|
||||
.shouldMatch("aot,module.*Restored from archive: entry.0x.*name jdk.httpserver");
|
||||
|
||||
// different --add-modules specified during runtime
|
||||
oa = TestCommon.execCommon(
|
||||
@ -161,7 +161,7 @@ public class AddmodsOption {
|
||||
"-version");
|
||||
try {
|
||||
oa.shouldHaveExitValue(0)
|
||||
.shouldMatch("cds,module.*Restored from archive: entry.0x.*name jdk.internal.vm.ci");
|
||||
.shouldMatch("aot,module.*Restored from archive: entry.0x.*name jdk.internal.vm.ci");
|
||||
} catch (RuntimeException re) {
|
||||
// JVMCI compile may not be available
|
||||
oa.shouldHaveExitValue(1)
|
||||
@ -188,8 +188,8 @@ public class AddmodsOption {
|
||||
"-m", moduleOption,
|
||||
"-version");
|
||||
oa.shouldHaveExitValue(0)
|
||||
.shouldMatch("cds,module.*Restored from archive: entry.0x.*name jdk.compiler")
|
||||
.shouldMatch("cds,module.*Restored from archive: entry.0x.*name jdk.jconsole");
|
||||
.shouldMatch("aot,module.*Restored from archive: entry.0x.*name jdk.compiler")
|
||||
.shouldMatch("aot,module.*Restored from archive: entry.0x.*name jdk.jconsole");
|
||||
|
||||
// dump an archive with ALL-SYSTEM in -add-modules
|
||||
archiveName = TestCommon.getNewArchiveName("muti-modules");
|
||||
@ -232,6 +232,6 @@ public class AddmodsOption {
|
||||
"-m", moduleOption,
|
||||
"-version");
|
||||
oa.shouldHaveExitValue(0)
|
||||
.shouldMatch("cds,module.*Restored from archive: entry.0x.*name jdk.httpserver");
|
||||
.shouldMatch("aot,module.*Restored from archive: entry.0x.*name jdk.httpserver");
|
||||
}
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ public class AddopensOption {
|
||||
final String moduleOption = "jdk.httpserver/sun.net.httpserver.simpleserver.Main";
|
||||
final String addOpensNio = "java.base/java.nio=ALL-UNNAMED";
|
||||
final String addOpensTimeFormat = "java.base/java.time.format=ALL-UNNAMED";
|
||||
final String loggingOption = "-Xlog:aot=debug,cds+module=debug,aot+heap=info,cds=debug,module=trace";
|
||||
final String loggingOption = "-Xlog:aot=debug,aot+module=debug,aot+heap=info,cds=debug,module=trace";
|
||||
final String versionPattern = "java.[0-9][0-9].*";
|
||||
final String subgraphCannotBeUsed = "subgraph jdk.internal.module.ArchivedBootLayer cannot be used because full module graph is disabled";
|
||||
final String warningIncubator = "WARNING: Using incubator modules: jdk.incubator.vector";
|
||||
@ -66,7 +66,7 @@ public class AddopensOption {
|
||||
oa.shouldHaveExitValue(0)
|
||||
// version of the jdk.httpserver module, e.g. java 22-ea
|
||||
.shouldMatch(versionPattern)
|
||||
.shouldMatch("cds,module.*Restored from archive: entry.0x.*name jdk.httpserver");
|
||||
.shouldMatch("aot,module.*Restored from archive: entry.0x.*name jdk.httpserver");
|
||||
|
||||
// different --add-opens specified during runtime
|
||||
oa = TestCommon.execCommon(
|
||||
@ -151,6 +151,6 @@ public class AddopensOption {
|
||||
"-m", moduleOption,
|
||||
"-version");
|
||||
oa.shouldHaveExitValue(0)
|
||||
.shouldMatch("cds,module.*Restored from archive: entry.0x.*name jdk.httpserver");
|
||||
.shouldMatch("aot,module.*Restored from archive: entry.0x.*name jdk.httpserver");
|
||||
}
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ public class ModuleOption {
|
||||
public static void main(String[] args) throws Exception {
|
||||
final String moduleOption = "jdk.httpserver/sun.net.httpserver.simpleserver.Main";
|
||||
final String incubatorModule = "jdk.incubator.vector";
|
||||
final String loggingOption = "-Xlog:aot=debug,cds+module=debug,aot+heap=info,cds=debug,module=trace";
|
||||
final String loggingOption = "-Xlog:aot=debug,aot+module=debug,aot+heap=info,cds=debug,module=trace";
|
||||
// Pattern of a module version string.
|
||||
// e.g. JDK 22: "java 22"
|
||||
// JDK 22.0.1: "java 22.0.1"
|
||||
@ -62,7 +62,7 @@ public class ModuleOption {
|
||||
oa.shouldHaveExitValue(0)
|
||||
// version of the jdk.httpserver module, e.g. java 22-ea
|
||||
.shouldMatch(versionPattern)
|
||||
.shouldMatch("cds,module.*Restored from archive: entry.0x.*name jdk.httpserver");
|
||||
.shouldMatch("aot,module.*Restored from archive: entry.0x.*name jdk.httpserver");
|
||||
|
||||
// different module specified during runtime
|
||||
oa = TestCommon.execCommon(
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2024, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -62,7 +62,8 @@ public class AOTLinkedLambdas {
|
||||
CDSOptions opts = (new CDSOptions())
|
||||
.addPrefix("-XX:ExtraSharedClassListFile=" + classList,
|
||||
"-XX:+AOTClassLinking",
|
||||
"-Xlog:cds+resolve=trace",
|
||||
"-Xlog:aot+resolve=trace",
|
||||
"-Xlog:aot+class=debug",
|
||||
"-Xlog:cds+class=debug",
|
||||
"-cp", appJar);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2024, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -58,7 +58,7 @@ public class AOTLinkedVarHandles {
|
||||
CDSOptions opts = (new CDSOptions())
|
||||
.addPrefix("-XX:ExtraSharedClassListFile=" + classList,
|
||||
"-XX:+AOTClassLinking",
|
||||
"-Xlog:cds+resolve=trace",
|
||||
"-Xlog:aot+resolve=trace",
|
||||
"-Xlog:cds+class=debug",
|
||||
"-cp", appJar);
|
||||
|
||||
|
@ -81,7 +81,8 @@ public class ResolvedConstants {
|
||||
|
||||
SimpleCDSAppTester.of("ResolvedConstantsApp" + (aotClassLinking ? "1" : "0"))
|
||||
.addVmArgs(aotClassLinking ? "-XX:+AOTClassLinking" : "-XX:-AOTClassLinking",
|
||||
"-Xlog:cds+resolve=trace",
|
||||
"-Xlog:aot+resolve=trace",
|
||||
"-Xlog:aot+class=debug",
|
||||
"-Xlog:cds+class=debug")
|
||||
.classpath(appJar)
|
||||
.appCommandLine(mainClass)
|
||||
@ -183,14 +184,14 @@ public class ResolvedConstants {
|
||||
}
|
||||
|
||||
static String ALWAYS(String s) {
|
||||
return "cds,resolve.*archived " + s;
|
||||
return ",resolve.*archived " + s;
|
||||
}
|
||||
|
||||
static String AOTLINK_ONLY(String s) {
|
||||
if (aotClassLinking) {
|
||||
return ALWAYS(s);
|
||||
} else {
|
||||
return "cds,resolve.*reverted " + s;
|
||||
return ",resolve.*reverted " + s;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2024, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -52,9 +52,9 @@ public class ResolvedPutField {
|
||||
CDSOptions opts = (new CDSOptions())
|
||||
.addPrefix("-XX:ExtraSharedClassListFile=" + classList,
|
||||
"-cp", appJar,
|
||||
"-Xlog:cds+resolve=trace");
|
||||
"-Xlog:aot+resolve=trace");
|
||||
CDSTestUtils.createArchiveAndCheck(opts)
|
||||
.shouldMatch("cds,resolve.*Failed to resolve putfield .*ResolvedPutFieldHelper -> ResolvedPutFieldHelper.x:I");
|
||||
.shouldMatch(",resolve.*Failed to resolve putfield .*ResolvedPutFieldHelper -> ResolvedPutFieldHelper.x:I");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -40,7 +40,7 @@ public class ExerciseGC {
|
||||
SharedStringsUtils.buildJarAndWhiteBox("HelloStringGC");
|
||||
|
||||
SharedStringsUtils.dumpWithWhiteBox(TestCommon.list("HelloStringGC"),
|
||||
"SharedStringsBasic.txt", "-Xlog:cds,cds+hashtables");
|
||||
"SharedStringsBasic.txt", "-Xlog:cds,aot+hashtables");
|
||||
|
||||
SharedStringsUtils.runWithArchiveAndWhiteBox("HelloStringGC",
|
||||
"-XX:+UnlockDiagnosticVMOptions", "-XX:+VerifyBeforeGC");
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -51,7 +51,7 @@ public class FlagCombo {
|
||||
SharedStringsUtils.buildJar("HelloString");
|
||||
|
||||
SharedStringsUtils.dump(TestCommon.list("HelloString"),
|
||||
"SharedStringsBasic.txt", "-Xlog:cds,cds+hashtables");
|
||||
"SharedStringsBasic.txt", "-Xlog:cds,aot+hashtables");
|
||||
|
||||
SharedStringsUtils.runWithArchive("HelloString", "-XX:+UseG1GC");
|
||||
|
||||
|
@ -157,7 +157,7 @@ public class IncompatibleOptions {
|
||||
"-XX:+UseCompressedOops",
|
||||
collectorOption,
|
||||
"-XX:SharedArchiveConfigFile=" + TestCommon.getSourceFile("SharedStringsBasic.txt"),
|
||||
"-Xlog:cds,cds+hashtables",
|
||||
"-Xlog:cds,aot+hashtables",
|
||||
extraOption));
|
||||
|
||||
if (expectedWarning != null) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -45,7 +45,7 @@ public class InternSharedString {
|
||||
SharedStringsUtils.buildJarAndWhiteBox("InternStringTest");
|
||||
|
||||
SharedStringsUtils.dumpWithWhiteBox(TestCommon.list("InternStringTest"),
|
||||
"ExtraSharedInput.txt", "-Xlog:cds,cds+hashtables");
|
||||
"ExtraSharedInput.txt", "-Xlog:cds,aot+hashtables");
|
||||
|
||||
String[] extraMatches = new String[] {
|
||||
InternStringTest.passed_output1,
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -32,7 +32,7 @@
|
||||
* @run driver LargePages
|
||||
*/
|
||||
public class LargePages {
|
||||
static final String CDS_LOGGING = "-Xlog:cds,cds+hashtables";
|
||||
static final String CDS_LOGGING = "-Xlog:cds,aot+hashtables";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
SharedStringsUtils.run(args, LargePages::test);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -54,7 +54,7 @@ public class SharedStringsBasic {
|
||||
.addPrefix(vmOptionsPrefix,
|
||||
"-cp", appJar,
|
||||
"-XX:SharedArchiveConfigFile=" + sharedArchiveConfigFile,
|
||||
"-Xlog:cds,cds+hashtables")
|
||||
"-Xlog:cds,aot+hashtables")
|
||||
.setArchiveName("./SharedStringsBasic.jsa");
|
||||
CDSTestUtils.createArchiveAndCheck(opts)
|
||||
.shouldContain("Shared string table stats");
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -42,7 +42,7 @@ public class SharedStringsBasicPlus {
|
||||
SharedStringsUtils.buildJarAndWhiteBox("HelloStringPlus");
|
||||
|
||||
SharedStringsUtils.dumpWithWhiteBox( TestCommon.list("HelloStringPlus"),
|
||||
"SharedStringsBasic.txt", "-Xlog:cds,cds+hashtables");
|
||||
"SharedStringsBasic.txt", "-Xlog:cds,aot+hashtables");
|
||||
|
||||
SharedStringsUtils.runWithArchiveAndWhiteBox("HelloStringPlus");
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2017, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -71,6 +71,7 @@ public class SharedStringsStress {
|
||||
OutputAnalyzer dumpOutput = TestCommon.dump(appJar, TestCommon.list("HelloString"),
|
||||
TestCommon.concat(vmOptionsPrefix,
|
||||
"-XX:SharedArchiveConfigFile=" + sharedArchiveConfigFile,
|
||||
"-Xlog:aot",
|
||||
"-Xlog:gc+region+cds",
|
||||
"-Xlog:gc+region=trace"));
|
||||
TestCommon.checkDump(dumpOutput);
|
||||
@ -78,7 +79,7 @@ public class SharedStringsStress {
|
||||
dumpOutput.shouldContain("string table array (secondary)");
|
||||
|
||||
OutputAnalyzer execOutput = TestCommon.exec(appJar,
|
||||
TestCommon.concat(vmOptionsPrefix, "-Xlog:cds", "HelloString"));
|
||||
TestCommon.concat(vmOptionsPrefix, "-Xlog:aot,cds", "HelloString"));
|
||||
TestCommon.checkExec(execOutput);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -45,7 +45,7 @@ public class SharedStringsWbTest {
|
||||
SharedStringsUtils.buildJarAndWhiteBox("SharedStringsWb");
|
||||
|
||||
SharedStringsUtils.dumpWithWhiteBox(TestCommon.list("SharedStringsWb"),
|
||||
"SharedStringsBasic.txt", "-Xlog:cds,cds+hashtables");
|
||||
"SharedStringsBasic.txt", "-Xlog:cds,aot+hashtables");
|
||||
|
||||
SharedStringsUtils.runWithArchiveAndWhiteBox("SharedStringsWb");
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -52,7 +52,7 @@ public class SysDictCrash {
|
||||
"-XX:+UseG1GC", "-XX:MaxRAMPercentage=12.5",
|
||||
"-cp", ".",
|
||||
"-XX:SharedBaseAddress=0",
|
||||
"-showversion", "-Xlog:cds,cds+hashtables")
|
||||
"-showversion", "-Xlog:cds,aot+hashtables")
|
||||
.setArchiveName("./SysDictCrash.jsa");
|
||||
OutputAnalyzer output = CDSTestUtils.createArchive(opts);
|
||||
try {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2017, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -255,7 +255,7 @@ public class CDSTestUtils {
|
||||
for (String p : opts.prefix) cmd.add(p);
|
||||
|
||||
cmd.add("-Xshare:dump");
|
||||
cmd.add("-Xlog:cds,cds+hashtables");
|
||||
cmd.add("-Xlog:cds,aot+hashtables");
|
||||
if (opts.archiveName == null)
|
||||
opts.archiveName = getDefaultArchiveName();
|
||||
cmd.add("-XX:SharedArchiveFile=" + opts.archiveName);
|
||||
|
Loading…
x
Reference in New Issue
Block a user