RFR: 8314275: Incorrect stepping in switch [v2]

Aggelos Biboudis abimpoudis at openjdk.org
Thu Feb 8 14:57:16 UTC 2024


> In code like the one below, the observable effect was that if the user debugs the following method, `multiply` called with `1`, the debugger steps from line 4 to line 6 (instead of 7) giving the impression that line 6 is going to be executed. The reason is that the `LineNumberTable` did not include an entry at the end of the `switch` mapping the statement that follows, to bytecode.
> 
> 
> 1 private static double multiply(Integer i) { 
> 2   double cr = 15;                              
> 3    cr = switch (i) {                            
> 4        case 1 -> cr * 1;                       
> 5        case 2 -> cr * 2;                      
> 6        default -> cr * 4;                     
> 7    };                                           
> 8    return cr;                              
> 9 }

Aggelos Biboudis has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains two additional commits since the last revision:

 - Merge branch 'master' into fix-#8314275
 - 8314275: Incorrect stepping in switch

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/17772/files
  - new: https://git.openjdk.org/jdk/pull/17772/files/2512d10f..682802c5

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=17772&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=17772&range=00-01

  Stats: 1895 lines in 190 files changed: 1430 ins; 76 del; 389 mod
  Patch: https://git.openjdk.org/jdk/pull/17772.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/17772/head:pull/17772

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


More information about the compiler-dev mailing list