On Mon, 17 Aug 2026 12:30:43 GMT, Casper Norrbin <[email protected]> wrote:
> Hi everyone, `ClassPrintLayout::class_print_layout` expects internal class > names as its argument, but is called externally by users through `jcmd`. This > leads to inconsistencies with other commands. For example: > > > jcmd <pid> VM.class_hierarchy java.lang.String > jcmd <pid> VM.class_print_layout java/lang/String > > > In addition, the command's output is also in the internal format. This should > be changed to also use the external dotted class name instead. To resolve > this, I added a conversion step that replaces external dotted names with > internal slashed names in-place before we start searching for classes. That > way we avoid extra allocations and string comparisons. As a side effect, this > now works on both internal and external names, as slashes are left untouched. > > This was a previously approved PR in > https://github.com/openjdk/valhalla/pull/2375, but did not get integrated in > time. > > Testing: > > - Tier 1 > - Manual inspection with jcmd > > --------- > - [x] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai). src/hotspot/share/memory/heapInspection.cpp line 600: > 598: } > 599: > 600: for (char* p = class_name; *p != '\0'; p++) { Should we add a comment above the method to clarify that the string passed in argument might be modified? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/32396#discussion_r3797138220
