Wider range possible in LocalVariableTable ?

Ulf Zibis Ulf.Zibis at gmx.de
Fri May 28 10:57:03 PDT 2010


<--- See following code: --->

  93    private static void parsePrefixes1() {
  94        List<UName> sorted = UName.list.sort();
  95        UName current = sorted.get(0), next;
  96        Prefix prefix;
  97        for (int i=1, j=2, m=2, n, pfKey=0; i<sorted.size(); 
current=next, m=n) {
  98            n = matchingEntries(current, next = sorted.get(i++)); // 
n and next are not visible to the debugger here
  99            System.out.println("i="+i);
100            if (n > 2 ||
101                    n == 2 && i<sorted.size() &&
102             matchingEntries(current, sorted.get(i)) >= 2) {
103                if (pfKey == 0)
104                    pfKey = Prefix.newKey(current, n);
105                current.replaceByPrefix(pfKey);
106            } else if (pfKey != 0) {
107                current.replaceByPrefix(pfKey);
108                pfKey = 0;
109            }
110        }
111    }
<--------------->

Variable "next" is defined since bytecode index 78 and "n" since index 83.
Line 98 has index 61, therefore these variables are *not* defined yet.

     LineNumberTable:
       line 93: 0
       line 94: 7
       line 95: 27
       line 97: 38
       line 98: 61
       line 99: 83
       line 100: 109
       line 103: 151
       line 104: 156
       line 105: 164
       line 106: 173
       line 107: 178
       line 108: 184
       line 97: 187
       line 111: 196
     LocalVariableTable:
       Start  Length  Slot  Name   Signature
         78     118     2   next   Lbuild/tools/generatecharacter/CharacterNamesGenerator6$UName;
         41     155     4      i   I
         44     152     5      j   I
         47     149     6      m   I
         83     113     7      n   I
         50     146     8  pfKey   I
          7     190     0  sorted   Ljava/util/List;
         38     159     1  current   Lbuild/tools/generatecharacter/CharacterNamesGenerator6$UName;


Is it possible to define variables n and next since bytecode index 61, 
so they would be visible for debugger on line 98 at least after 2nd 
entry in the for loop?
Additionally I'm wondering, why variable m is defined since bytecode 
index 47, as it is never referenced later.

Additionally please refer to this discussion:
*Bug 186882* <http://netbeans.org/bugzilla/show_bug.cgi?id=186882> - 
[69cat] Valid variables not displayed

Hoping for lively discussion,

-Ulf

<http://netbeans.org/bugzilla/show_bug.cgi?id=186882>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20100528/27869f11/attachment.html 


More information about the compiler-dev mailing list