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