On Wed, 29 Apr 2026 12:25:34 GMT, Casper Norrbin <[email protected]> wrote:
> Hi everyone, `PrintClassLayout::print_class_layout` expects internal class > names as its argument, but is called externally by users through `jcmd`. This > leads to inconsistencies with other functions. For example: > > jcmd <pid> VM.class_hierarchy java.lang.String > jcmd <pid> VM.class_print_layout java/lang/String > > > In addition, its output is also in the internal format. This should be > changed to also use the external dotted class name instead. ~~For this fix I > changed the `Closure` used for finding classes to instead use external names, > and also swapped the output print to use the external name.~~ I added a > conversion from external dotted names to internal slashed names before we > start searching for classes. That way we avoid comparing strings and avoid > allocations from calls to `external_name()`. As a side effect, this now works > on both internal and external names, as slashes are left untouched. > > 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). This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/valhalla/pull/2375
