From 2e783963d21c8edd88e79226ca473cfe0e41335b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Arias=20de=20Reyna=20Dom=C3=ADnguez?= Date: Fri, 3 Oct 2025 07:57:24 +0000 Subject: [PATCH] 8369037: Identify owning method for MethodData and MethodCounters in AOT map output Reviewed-by: iklam, asmehra, adinn, macarte --- src/hotspot/share/cds/aotMapLogger.cpp | 20 ++++++++++++++++++++ src/hotspot/share/cds/aotMapLogger.hpp | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/src/hotspot/share/cds/aotMapLogger.cpp b/src/hotspot/share/cds/aotMapLogger.cpp index a15d7f670d4..ded3f05a9b8 100644 --- a/src/hotspot/share/cds/aotMapLogger.cpp +++ b/src/hotspot/share/cds/aotMapLogger.cpp @@ -33,6 +33,8 @@ #include "memory/metaspaceClosure.hpp" #include "memory/resourceArea.hpp" #include "oops/method.hpp" +#include "oops/methodCounters.hpp" +#include "oops/methodData.hpp" #include "oops/oop.inline.hpp" #include "runtime/fieldDescriptor.inline.hpp" #include "runtime/globals_extension.hpp" @@ -348,6 +350,12 @@ void AOTMapLogger::log_metaspace_objects_impl(address region_base, address regio case MetaspaceObj::MethodType: log_method((Method*)src, requested_addr, type_name, bytes, current); break; + case MetaspaceObj::MethodCountersType: + log_method_counters((MethodCounters*)src, requested_addr, type_name, bytes, current); + break; + case MetaspaceObj::MethodDataType: + log_method_data((MethodData*)src, requested_addr, type_name, bytes, current); + break; case MetaspaceObj::SymbolType: log_symbol((Symbol*)src, requested_addr, type_name, bytes, current); break; @@ -389,6 +397,18 @@ void AOTMapLogger::log_const_method(ConstMethod* cm, address requested_addr, con log_debug(aot, map)(_LOG_PREFIX " %s", p2i(requested_addr), type_name, bytes, cm->method()->external_name()); } +void AOTMapLogger::log_method_counters(MethodCounters* mc, address requested_addr, const char* type_name, + int bytes, Thread* current) { + ResourceMark rm(current); + log_debug(aot, map)(_LOG_PREFIX " %s", p2i(requested_addr), type_name, bytes, mc->method()->external_name()); +} + +void AOTMapLogger::log_method_data(MethodData* md, address requested_addr, const char* type_name, + int bytes, Thread* current) { + ResourceMark rm(current); + log_debug(aot, map)(_LOG_PREFIX " %s", p2i(requested_addr), type_name, bytes, md->method()->external_name()); +} + void AOTMapLogger::log_klass(Klass* k, address requested_addr, const char* type_name, int bytes, Thread* current) { ResourceMark rm(current); diff --git a/src/hotspot/share/cds/aotMapLogger.hpp b/src/hotspot/share/cds/aotMapLogger.hpp index 9cd67fb7ff6..f2ca4c407e3 100644 --- a/src/hotspot/share/cds/aotMapLogger.hpp +++ b/src/hotspot/share/cds/aotMapLogger.hpp @@ -98,6 +98,10 @@ class AOTMapLogger : AllStatic { static void log_constant_pool_cache(ConstantPoolCache* cpc, address requested_addr, const char* type_name, int bytes, Thread* current); static void log_const_method(ConstMethod* cm, address requested_addr, const char* type_name, int bytes, Thread* current); + static void log_method_counters(MethodCounters* mc, address requested_addr, const char* type_name, int bytes, + Thread* current); + static void log_method_data(MethodData* md, address requested_addr, const char* type_name, int bytes, + Thread* current); static void log_klass(Klass* k, address requested_addr, const char* type_name, int bytes, Thread* current); 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);