On Tue, 26 Nov 2024 08:57:04 GMT, Jonathan Lampérth <d...@openjdk.org> wrote:

>> Very similar and related to: https://bugs.openjdk.org/browse/JDK-8034066
>> 
>> This PR includes changes to ensure the indentation of `LineNumberTable` and 
>> `LocalVariableTable` behave in the same way both for the `javap -verbose` 
>> and `javap -l -c` case. Prior to this PR, for the `javap -l -c` case the 
>> `LineNumberTable` and `LocalVariableTable` attributes are not indented with 
>> regard to the `Code: ` header.
>> 
>> The only case, where no extra indentation is added is for `javap -l` without 
>> `-c` -- As it does not make sense to indent if there is no `Code:` header to 
>> indent relative to. I am not sure if there is a use case for `-l` without 
>> `-c`, but would leave this functionality as is.
>> 
>> ## Current behaviour of javap previously differed with and without -verbose 
>> in the following way:
>> 
>> ### Case: `javap -l -c EmptyLoop.class`
>> 
>> 
>> ...
>>   public void emptyLoop();
>>     Code:
>>        0: iconst_0
>>        ...
>>       14: return
>>     LineNumberTable:
>>       line 3: 0
>>       line 5: 14
>> ...
>> 
>> 
>> ### Case: `javap -verbose EmptyLoop.class`
>> 
>> 
>> ...
>>   public void emptyLoop();
>>     descriptor: ()V
>>     flags: (0x0001) ACC_PUBLIC
>>     Code:
>>       stack=2, locals=2, args_size=1
>>          0: iconst_0
>>          ...
>>         14: return
>>       LineNumberTable:
>>         line 3: 0
>>         line 5: 14
>> ...
>> 
>> 
>> ## New behaviour:
>> ### Case: `javap -l -c EmptyLoop.class`
>> 
>> ...
>>   public void emptyLoop();
>>     Code:
>>          0: iconst_0
>>          ...
>>         14: return
>>       LineNumberTable:
>>         line 3: 0
>>         line 5: 14
>> ...
>> 
>> 
>> 
>> ## Open Questions
>> ### Add code header for only `-l` case?
>> Currently for `-l` without `-c` things look as follows:
>> 
>> 
>> ...
>>   public void emptyLoop();
>>     LineNumberTable:
>>       line 3: 0
>>       line 5: 14
>> ...
>> 
>> 
>> One could also imagine making the output:
>> 
>> ...
>>   public void emptyLoop();
>>     Code:
>>       LineNumberTable:
>>         line 3: 0
>>         line 5: 14
>> ...
>
> Jonathan Lampérth has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   feat: add Code: header for LNT and LVT

For code size rendering, we currently don't even render it even if we print 
whole list of instructions; users have to know the size of the final 
instruction to deduce the code size. If we add a code size output, we should do 
it in another RFE. And this size is useful when people want their code to be 
below the FreqInlineSize.

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

PR Comment: https://git.openjdk.org/jdk/pull/22359#issuecomment-2503863302

Reply via email to