Mercurial > hg > openjdk > jdk9 > langtools
changeset 2649:e891e0c4edc5 jdk9-b33
8058708: java.lang.AssertionError compiling source code
Reviewed-by: jjg
author | vromero |
---|---|
date | Thu, 25 Sep 2014 17:09:23 -0700 |
parents | 180b0fc6cabf |
children | 49d692597e7b 1a77eeed0c06 |
files | src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java test/tools/javac/flow/LVTHarness.java test/tools/javac/flow/tests/TestCaseIf.java |
diffstat | 3 files changed, 20 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java Thu Sep 25 16:21:30 2014 -0700 +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java Thu Sep 25 17:09:23 2014 -0700 @@ -2032,12 +2032,11 @@ void adjustAliveRanges(int oldCP, int delta) { for (LocalVar localVar: lvar) { - if (localVar == null) { - return; - } - for (LocalVar.Range range: localVar.aliveRanges) { - if (range.closed() && range.start_pc + range.length >= oldCP) { - range.length += delta; + if (localVar != null) { + for (LocalVar.Range range: localVar.aliveRanges) { + if (range.closed() && range.start_pc + range.length >= oldCP) { + range.length += delta; + } } } }
--- a/test/tools/javac/flow/LVTHarness.java Thu Sep 25 16:21:30 2014 -0700 +++ b/test/tools/javac/flow/LVTHarness.java Thu Sep 25 17:09:23 2014 -0700 @@ -23,7 +23,7 @@ /* * @test - * @bug 7047734 8027660 8037937 8047719 + * @bug 7047734 8027660 8037937 8047719 8058708 * @summary The LVT is not generated correctly during some try/catch scenarios * javac crash while creating LVT entry for a local variable defined in * an inner block
--- a/test/tools/javac/flow/tests/TestCaseIf.java Thu Sep 25 16:21:30 2014 -0700 +++ b/test/tools/javac/flow/tests/TestCaseIf.java Thu Sep 25 17:09:23 2014 -0700 @@ -58,4 +58,18 @@ } o = ""; } + + @AliveRange(varName="finalLocal", bytecodeStart=11, bytecodeLength=6) + @AliveRange(varName="used", bytecodeStart=13, bytecodeLength=4) + void m5(Object o) { + if (o != null) { + Object notUsed; + Object used; + if (o != null) { + final Object finalLocal = null; + used = null; + if (o == null) {} + } + } + } }