Integrated: 8035271: Incorrect indentation of LineNumberTable/LocalVariableTable/Exception table/LocalVariableTypeTable/StackMapTable/RuntimeVisibleTypeAnnotations in verbose mode

Jonathan Lampérth duke at openjdk.org
Wed Nov 27 17:34:44 UTC 2024


On Mon, 25 Nov 2024 12:57:18 GMT, Jonathan Lampérth <duke at 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
> ...

This pull request has now been integrated.

Changeset: 1e3a0fdb
Author:    Jonathan Lampérth <jonathan.lamperth at oracle.com>
Committer: Vicente Romero <vromero at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/1e3a0fdb5d14550de66faa8472c883a9990a87df
Stats:     164 lines in 3 files changed: 146 ins; 11 del; 7 mod

8035271: Incorrect indentation of LineNumberTable/LocalVariableTable/Exception table/LocalVariableTypeTable/StackMapTable/RuntimeVisibleTypeAnnotations in verbose mode

Reviewed-by: liach, jvernee

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

PR: https://git.openjdk.org/jdk/pull/22359


More information about the core-libs-dev mailing list