RFR: 8345145: Display javap LineNumberTable and LocalVariableTable iff disassembled code output with `-c` or `-v`

Chen Liang liach at openjdk.org
Thu Nov 28 15:12:47 UTC 2024


On Thu, 28 Nov 2024 11:33:43 GMT, Jonathan Lampérth <duke at openjdk.org> wrote:

> 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

Looks good. However, note that per our guide https://openjdk.org/guide, we usually integrate after about 24 hours to allow sufficient time for all reviewers. So I may sponsor later.

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

Marked as reviewed by liach (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/22434#pullrequestreview-2468415451


More information about the core-libs-dev mailing list