RFR: 8035271: Incorrect indentation of LineNumberTable/LocalVariableTable/Exception table/LocalVariableTypeTable/StackMapTable/RuntimeVisibleTypeAnnotations in verbose mode
Jonathan Lampérth
duke at openjdk.org
Mon Nov 25 13:02:45 UTC 2024
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
...
-------------
Commit messages:
- fix: Indentation of LineNumberTable and LocalVariableTable in javap output
Changes: https://git.openjdk.org/jdk/pull/22359/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22359&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8035271
Stats: 179 lines in 3 files changed: 170 ins; 8 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/22359.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/22359/head:pull/22359
PR: https://git.openjdk.org/jdk/pull/22359
More information about the core-libs-dev
mailing list