RFR: 8314275: Incorrect stepping in switch [v3]

Aggelos Biboudis abimpoudis at openjdk.org
Thu Feb 19 14:06:42 UTC 2026


On Thu, 8 Feb 2024 17:03:20 GMT, Aggelos Biboudis <abimpoudis at openjdk.org> wrote:

>> 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 incrementally with one additional commit since the last revision:
> 
>   Ensure fix is effective for switch expressions only

Hello @turbanoff , if you are interested in a backport to jdk21u see https://wiki.openjdk.org/spaces/JDKUpdates/pages/42598906/How+to+contribute+or+backport+a+fix

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

PR Comment: https://git.openjdk.org/jdk/pull/17772#issuecomment-3927507493


More information about the compiler-dev mailing list