LVT issue related to JDK-8047719

Vicente-Arturo Romero-Zaldivar vicente.romero at oracle.com
Thu Jan 22 18:21:42 UTC 2015


Hi Liam,

Question: why is this difference important for you? or in other words, 
why is it important to have an LVT entry for a variable with length 0? 
The spec doesn't say that it should be represented in the LVT and 
actually a reading of the spec could imply that they shouldn't be 
represented. The spec says that, I'm not quoting it:

LVT represents ranges from [start, end) where the right extreme is not 
included in the range.

 From this lecture a variable with length 0, is not that it shouldn't be 
represented but is that it can't be represented as the range [start, 
start) is empty.

Thanks,
Vicente

On 01/16/2015 05:16 PM, Liam Miller-Cushon wrote:
> I think this issue is separate, the fix [1] for JDK-8064857 doesn't 
> seem to help.
>
> Here's the repro again:
>
> class Test {
>   {
>     String foo = null;
>   }
> }
>
> Testing with javac9 at head [2], the LVT is still:
>
>       LocalVariableTable:
>         Start  Length  Slot  Name   Signature
>             0       7     0  this   LTest;
>
> [1] http://hg.openjdk.java.net/jdk9/dev/langtools/rev/3bdbc3b8aa14
> [2] http://hg.openjdk.java.net/jdk9/dev/langtools/rev/230c13955250
>
> On Tue, Nov 25, 2014 at 5:59 PM, Liam Miller-Cushon <cushon at google.com 
> <mailto:cushon at google.com>> wrote:
>
>     Thanks Vicente, I'll try out the patch once it lands.
>
>     On Tue, Nov 25, 2014 at 5:19 PM, Vicente-Arturo Romero-Zaldivar
>     <vicente.romero at oracle.com <mailto:vicente.romero at oracle.com>> wrote:
>
>         The patch for
>         https://bugs.openjdk.java.net/browse/JDK-8064857, still under
>         review, should fix this issue too.
>
>         Thanks,
>         Vicente
>
>
>         On 11/25/2014 04:54 PM, Liam Miller-Cushon wrote:
>
>             An LVT entry is no longer emitted for 'foo' in the
>             following code. The behaviour changed after the fix for
>             JDK-8047719 [1]. Is this a bug?
>
>             class Test {
>               {
>                 String foo = null;
>               }
>             }
>
>             Before:
>                   LocalVariableTable:
>                     Start  Length  Slot  Name  Signature
>                         6       0     1   foo  Ljava/lang/String;
>                         0       7     0  this  LTest;
>
>             After:
>                   LocalVariableTable:
>                     Start  Length  Slot  Name  Signature
>                         0       7     0  this  LTest;
>
>             [1]
>             http://hg.openjdk.java.net/jdk9/jdk9/langtools/rev/855f8c7337eb
>
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20150122/61b9942d/attachment-0001.html>


More information about the compiler-dev mailing list