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).

Do we think there is already enough dependency on recognising the 
external/slash format in this command that we need to keep recognising it 
forever, unlike VM.class_hierarchy which only recognises the dotted format?

Or can we just aim at being consistent so all jcmds that take class names, take 
the dotted external format.

(The change looks fine, just hinting that maybe we can be consistent.  If we 
think the existing behaviour has visibility we can do a release note.)

-------------

PR Review: https://git.openjdk.org/jdk/pull/32396#pullrequestreview-4959326146

Reply via email to