On Tue, 4 Jun 2024 05:30:36 GMT, David Holmes <[email protected]> wrote:
>> src/hotspot/share/runtime/javaThread.cpp line 1832:
>>
>>> 1830: st->print("\t");
>>> 1831: indentation--;
>>> 1832: }
>>
>> Suggestion:
>>
>> while (indentation-- > 0) {
>> st->print("\t");
>> }
>>
>> Though not sure using `\t` is the best way to indent this as stream
>> indentation is based on spaces.
>
> Actually I'm not sure what this indentation actually does at this location
> and its affect on other user's of this API. I would have expected the caller
> to set up the necessary indentation in the stream that gets passed in. I see
> you inc the indentation but then use the current indentation to insert
> multiple tabs - which should not be necessary if the stream indentation works
> correctly. ???
Note that We are in the process of adding better and saner auto-indentation to
outputStream. See https://github.com/openjdk/jdk/pull/19461 . I don't think
that PR is going to take long.
If you don't want to wait, please:
- As David wrote, use spaces, not tabs
- Today's pattern for using outputStream indentation is:
- set up indentation, preferably with streamIndentor, not manually with
inc/dec
- then, before printing each line, call stream->indent()
This pattern would also help us to later identify and remove this manual
indentation pattern if auto-indent becomes a thing.
But really, waiting for https://github.com/openjdk/jdk/pull/19461 would be
preferable. Then, all you have to do is place a streamIndentor around stack
printing. Sub-function printing is then indented automatically.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/19482#discussion_r1625622263