diff --git a/src/hotspot/share/memory/heapInspection.cpp b/src/hotspot/share/memory/heapInspection.cpp index 385bf8ff6dd..4161035ac6c 100644 --- a/src/hotspot/share/memory/heapInspection.cpp +++ b/src/hotspot/share/memory/heapInspection.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2026, 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 @@ -597,10 +597,15 @@ void PrintClassLayout::print_class_layout(outputStream* st, char* class_name) { return; } + for (char* p = class_name; *p != '\0'; p++) { + if (*p == JVM_SIGNATURE_DOT) { + *p = JVM_SIGNATURE_SLASH; + } + } + Symbol* classname = SymbolTable::probe(class_name, (int)strlen(class_name)); GrowableArray* klasses = new (mtServiceability) GrowableArray(100, mtServiceability); - FindClassByNameClosure fbnc(klasses, classname); cit.iterate(&fbnc); @@ -608,9 +613,9 @@ void PrintClassLayout::print_class_layout(outputStream* st, char* class_name) { Klass* klass = klasses->at(i); if (!klass->is_instance_klass()) continue; // Skip InstanceKlass* ik = InstanceKlass::cast(klass); - st->print_cr("Class %s [@%s]:", klass->name()->as_C_string(), - klass->class_loader_data()->loader_name()); ResourceMark rm; + st->print_cr("Class %s [@%s]:", klass->external_name(), + klass->class_loader_data()->loader_name()); GrowableArray* fields = new (mtServiceability) GrowableArray(100, mtServiceability); for (AllFieldStream fd(ik); !fd.done(); fd.next()) { if (!fd.access_flags().is_static()) { diff --git a/test/hotspot/jtreg/runtime/valhalla/inlinetypes/ClassPrintLayoutDcmd.java b/test/hotspot/jtreg/runtime/valhalla/inlinetypes/ClassPrintLayoutDcmd.java index afbe6e2182f..e792fea3422 100644 --- a/test/hotspot/jtreg/runtime/valhalla/inlinetypes/ClassPrintLayoutDcmd.java +++ b/test/hotspot/jtreg/runtime/valhalla/inlinetypes/ClassPrintLayoutDcmd.java @@ -81,10 +81,10 @@ static void testCmd(String arg, int expectExitCode, String... expectStrings) thr } public static void main(String args[]) throws Exception { - testCmd("foo/bar", 0, ""); + testCmd("foo.bar", 0, ""); testCmd("", 1, "IllegalArgumentException", "mandatory"); - testCmd("java/lang/Object", 0, "java/lang/Object", "@bootstrap"); - testCmd("java/lang/Class", 0, "java/lang/Class", "@bootstrap"); - testCmd("runtime/valhalla/inlinetypes/ClassPrintLayoutDcmd$Line", 0, "@app", "p1", "p2"); + testCmd("java.lang.Object", 0, "java.lang.Object", "@bootstrap"); + testCmd("java.lang.Class", 0, "java.lang.Class", "@bootstrap"); + testCmd("runtime.valhalla.inlinetypes.ClassPrintLayoutDcmd$Line", 0, "@app", "p1", "p2"); } }