Tue, 20 Jan 2015 14:14:33 -0800
8064857: javac generates LVT entry with length 0 for local variable
Reviewed-by: mcimadamore, jjg
1 /* /nodynamiccopyright/ */
3 public class TestCaseSwitch {
5 @AliveRange(varName="o", bytecodeStart=31, bytecodeLength=16)
6 @AliveRange(varName="o", bytecodeStart=50, bytecodeLength=15)
7 @AliveRange(varName="o", bytecodeStart=68, bytecodeLength=1)
8 @AliveRange(varName="oo", bytecodeStart=39, bytecodeLength=8)
9 @AliveRange(varName="uu", bytecodeStart=59, bytecodeLength=6)
10 void m1(String[] args) {
11 Object o;
12 switch (args.length) {
13 case 0:
14 o = "0";
15 o.hashCode();
16 Object oo = "oo";
17 oo.hashCode();
18 break;
19 case 1:
20 o = "1";
21 o.hashCode();
22 Object uu = "uu";
23 uu.hashCode();
24 break;
25 }
26 o = "return";
27 }
29 @AliveRange(varName="o", bytecodeStart=95, bytecodeLength=18)
30 @AliveRange(varName="o", bytecodeStart=116, bytecodeLength=15)
31 @AliveRange(varName="o", bytecodeStart=134, bytecodeLength=1)
32 @AliveRange(varName="oo", bytecodeStart=104, bytecodeLength=9)
33 @AliveRange(varName="uu", bytecodeStart=125, bytecodeLength=6)
34 void m2(String[] args) {
35 Object o;
36 switch (args[0]) {
37 case "string0":
38 o = "0";
39 o.hashCode();
40 Object oo = "oo";
41 oo.hashCode();
42 break;
43 case "string1":
44 o = "1";
45 o.hashCode();
46 Object uu = "uu";
47 uu.hashCode();
48 break;
49 }
50 o = "return";
51 }
53 @AliveRange(varName="o", bytecodeStart=35, bytecodeLength=8)
54 @AliveRange(varName="o", bytecodeStart=46, bytecodeLength=8)
55 @AliveRange(varName="o", bytecodeStart=78, bytecodeLength=5)
56 @AliveRange(varName="o", bytecodeStart=86, bytecodeLength=1)
57 @AliveRange(varName="oo", bytecodeStart=56, bytecodeLength=16)
58 void m3(int i) {
59 Object o;
60 switch (i) {
61 case 0:
62 o = "0";
63 o.hashCode();
64 break;
65 case 1:
66 o = "1";
67 o.hashCode();
68 break;
69 case 2:
70 int oo = i;
71 if (oo > 1) {
72 System.out.println("greater");
73 }
74 break;
75 case 3:
76 int uu = i;
77 default:
78 o = "default";
79 o.hashCode();
80 }
81 o = "finish";
82 }
84 @AliveRange(varName="oCache", bytecodeStart=30, bytecodeLength=6)
85 @AliveRange(varName="cache", bytecodeStart=41, bytecodeLength=3)
86 @AliveRange(varName="cache", bytecodeStart=54, bytecodeLength=2)
87 @AliveRange(varName="service", bytecodeStart=39, bytecodeLength=5)
88 Object m4(int i) {
89 Object cache;
90 switch (i) {
91 case 0:
92 Object oCache = null;
93 if (oCache != null) {
94 return oCache;
95 }
96 case 1:
97 Object service = null;
98 cache = null;
99 break;
100 default:
101 throw new AssertionError("");
102 }
103 return cache;
104 }
106 }