RFR: 8345145: Display javap LineNumberTable and LocalVariableTable iff disassembled code output with `-c` or `-v`
Jonathan Lampérth
duke at openjdk.org
Thu Nov 28 11:37:57 UTC 2024
This PR includes a suggested change in behaviour of `javap -l` without `-v` or `-c`.
Previously it was possible to print `LineNumberTable` and `LocalVariableTable` without disassembled code output. This didn't make much sense, as there is no context for this output. This PR proposes to output a warning for this case, as well as not print the `LineNumberTable`and `LocalVariableTable` attrubutes. They are nested attributes of the `CodeAttribute` and thus should only be printed if the `CodeAttribute` is also printed.
Small changes were also made to existing tests, which seem unproblematic to adjust.
<details>
<summary>Before: `javac -l EmptyLoop`</summary>
Compiled from "EmptyLoop.java"
public class EmptyLoop {
public EmptyLoop();
Code:
LineNumberTable:
line 1: 0
public void emptyLoop();
Code:
LineNumberTable:
line 3: 0
line 5: 14
}
</details>
<details>
<summary>After: `javac -l EmptyLoop`</summary>
Warning: bad combination of options: -l without -c - line number and local variable tables will not be printed
Compiled from "EmptyLoop.java"
public class EmptyLoop {
public EmptyLoop();
public void emptyLoop();
}
</details>
Stems from discussion in: https://github.com/openjdk/jdk/pull/22359
-------------
Commit messages:
- feat: don't display LNT and LVT without -c/-v with warning
Changes: https://git.openjdk.org/jdk/pull/22434/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22434&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8345145
Stats: 118 lines in 8 files changed: 105 ins; 5 del; 8 mod
Patch: https://git.openjdk.org/jdk/pull/22434.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/22434/head:pull/22434
PR: https://git.openjdk.org/jdk/pull/22434
More information about the core-libs-dev
mailing list