8369559: Identify owning method for MethodTrainingData and CompileTrainingData in AOT map output

Reviewed-by: adinn, iklam
This commit is contained in:
María Arias de Reyna Domínguez 2025-10-15 09:17:25 +00:00 committed by Andrew Dinn
parent 42b2999c31
commit 355cb45943
2 changed files with 32 additions and 0 deletions

View File

@ -363,6 +363,12 @@ void AOTMapLogger::log_metaspace_objects_impl(address region_base, address regio
case MetaspaceObj::KlassTrainingDataType:
log_klass_training_data((KlassTrainingData*)src, requested_addr, type_name, bytes, current);
break;
case MetaspaceObj::MethodTrainingDataType:
log_method_training_data((MethodTrainingData*)src, requested_addr, type_name, bytes, current);
break;
case MetaspaceObj::CompileTrainingDataType:
log_compile_training_data((CompileTrainingData*)src, requested_addr, type_name, bytes, current);
break;
default:
log_debug(aot, map)(_LOG_PREFIX, p2i(requested_addr), type_name, bytes);
break;
@ -431,6 +437,7 @@ void AOTMapLogger::log_symbol(Symbol* s, address requested_addr, const char* typ
log_debug(aot, map)(_LOG_PREFIX " %s", p2i(requested_addr), type_name, bytes,
s->as_quoted_ascii());
}
void AOTMapLogger::log_klass_training_data(KlassTrainingData* ktd, address requested_addr, const char* type_name,
int bytes, Thread* current) {
ResourceMark rm(current);
@ -442,6 +449,27 @@ void AOTMapLogger::log_klass_training_data(KlassTrainingData* ktd, address reque
}
}
void AOTMapLogger::log_method_training_data(MethodTrainingData* mtd, address requested_addr, const char* type_name,
int bytes, Thread* current) {
ResourceMark rm(current);
if (mtd->has_holder()) {
log_debug(aot, map)(_LOG_PREFIX " %s", p2i(requested_addr), type_name, bytes,
mtd->holder()->external_name());
} else {
log_debug(aot, map)(_LOG_PREFIX, p2i(requested_addr), type_name, bytes);
}
}
void AOTMapLogger::log_compile_training_data(CompileTrainingData* ctd, address requested_addr, const char* type_name,
int bytes, Thread* current) {
ResourceMark rm(current);
if (ctd->method() != nullptr && ctd->method()->has_holder()) {
log_debug(aot, map)(_LOG_PREFIX " %d %s", p2i(requested_addr), type_name, bytes,
ctd->level(), ctd->method()->holder()->external_name());
} else {
log_debug(aot, map)(_LOG_PREFIX, p2i(requested_addr), type_name, bytes);
}
}
#undef _LOG_PREFIX
// Log all the data [base...top). Pretend that the base address

View File

@ -33,9 +33,11 @@
#include "utilities/growableArray.hpp"
class ArchiveHeapInfo;
class CompileTrainingData;
class DumpRegion;
class FileMapInfo;
class KlassTrainingData;
class MethodTrainingData;
class outputStream;
// Write detailed info to a mapfile to analyze contents of the AOT cache/CDS archive.
@ -107,6 +109,8 @@ class AOTMapLogger : AllStatic {
static void log_method(Method* m, address requested_addr, const char* type_name, int bytes, Thread* current);
static void log_symbol(Symbol* s, address requested_addr, const char* type_name, int bytes, Thread* current);
static void log_klass_training_data(KlassTrainingData* ktd, address requested_addr, const char* type_name, int bytes, Thread* current);
static void log_method_training_data(MethodTrainingData* mtd, address requested_addr, const char* type_name, int bytes, Thread* current);
static void log_compile_training_data(CompileTrainingData* ctd, address requested_addr, const char* type_name, int bytes, Thread* current);
#if INCLUDE_CDS_JAVA_HEAP