Wed, 01 Oct 2014 14:37:46 -0700
Merge
1.1 --- a/.hgtags Wed Oct 01 14:19:24 2014 -0700 1.2 +++ b/.hgtags Wed Oct 01 14:37:46 2014 -0700 1.3 @@ -319,3 +319,4 @@ 1.4 cde557bc48f5cd0c6b6aa70bdbc7563677379347 jdk8u40-b04 1.5 a36fce70b505ec15be8353d40d417d331fcce740 jdk8u40-b05 1.6 7c3d27120b92b6abbd2df910722405dfb02d4399 jdk8u40-b06 1.7 +2fa3858a281f9deae15bcc49224efd5b951b745d jdk8u40-b07
2.1 --- a/src/share/classes/com/sun/tools/javac/jvm/Code.java Wed Oct 01 14:19:24 2014 -0700 2.2 +++ b/src/share/classes/com/sun/tools/javac/jvm/Code.java Wed Oct 01 14:37:46 2014 -0700 2.3 @@ -2032,12 +2032,11 @@ 2.4 2.5 void adjustAliveRanges(int oldCP, int delta) { 2.6 for (LocalVar localVar: lvar) { 2.7 - if (localVar == null) { 2.8 - return; 2.9 - } 2.10 - for (LocalVar.Range range: localVar.aliveRanges) { 2.11 - if (range.closed() && range.start_pc + range.length >= oldCP) { 2.12 - range.length += delta; 2.13 + if (localVar != null) { 2.14 + for (LocalVar.Range range: localVar.aliveRanges) { 2.15 + if (range.closed() && range.start_pc + range.length >= oldCP) { 2.16 + range.length += delta; 2.17 + } 2.18 } 2.19 } 2.20 }
3.1 --- a/test/tools/javac/flow/LVTHarness.java Wed Oct 01 14:19:24 2014 -0700 3.2 +++ b/test/tools/javac/flow/LVTHarness.java Wed Oct 01 14:37:46 2014 -0700 3.3 @@ -23,7 +23,7 @@ 3.4 3.5 /* 3.6 * @test 3.7 - * @bug 7047734 8027660 8037937 8047719 3.8 + * @bug 7047734 8027660 8037937 8047719 8058708 3.9 * @summary The LVT is not generated correctly during some try/catch scenarios 3.10 * javac crash while creating LVT entry for a local variable defined in 3.11 * an inner block
4.1 --- a/test/tools/javac/flow/tests/TestCaseIf.java Wed Oct 01 14:19:24 2014 -0700 4.2 +++ b/test/tools/javac/flow/tests/TestCaseIf.java Wed Oct 01 14:37:46 2014 -0700 4.3 @@ -58,4 +58,18 @@ 4.4 } 4.5 o = ""; 4.6 } 4.7 + 4.8 + @AliveRange(varName="finalLocal", bytecodeStart=11, bytecodeLength=6) 4.9 + @AliveRange(varName="used", bytecodeStart=13, bytecodeLength=4) 4.10 + void m5(Object o) { 4.11 + if (o != null) { 4.12 + Object notUsed; 4.13 + Object used; 4.14 + if (o != null) { 4.15 + final Object finalLocal = null; 4.16 + used = null; 4.17 + if (o == null) {} 4.18 + } 4.19 + } 4.20 + } 4.21 }