RFR - JDK-8218650: LineNumberTable records for method invocations with arguments

Vicente Romero vicente.romero at oracle.com
Thu Feb 21 15:22:36 UTC 2019



On 2/21/19 8:43 AM, Maurizio Cimadamore wrote:
>
> Hate to be the party pooper :-)
>
> What happens with method calls?
>
> class Test {
> public static void main(String[] args) {
>    Object o = null;
>    o.
>     toString(); <-- NPE here
> }
>
> }
>
> So, while at some level I sympathize with the argument of not making 
> LNT more bloated, I can't help noting the asymmetry between field and 
> method access.
>

yep that's a difference but shouldn't we wait and see if the bug 
referred by Remi solves the problem of the stack trace not being exact 
in some cases?

> Maurizio

Vicente

>
> On 20/02/2019 14:20, Remi Forax wrote:
>> I don't think you need to bloat the line number table for this case 
>> because soon the NPE error message will be more precise [1].
>>
>> Rémi
>>
>> [1] https://bugs.openjdk.java.net/browse/JDK-8218628
>>
>> ------------------------------------------------------------------------
>>
>>     *De: *"Vicente Romero" <vicente.romero at oracle.com>
>>     *À: *"Eddie Aftandilian" <eaftan at google.com>
>>     *Cc: *"compiler-dev" <compiler-dev at openjdk.java.net>
>>     *Envoyé: *Mercredi 20 Février 2019 14:38:45
>>     *Objet: *Re: RFR - JDK-8218650: LineNumberTable records for
>>     method invocations with arguments
>>
>>
>>
>>     On 2/19/19 8:27 PM, Eddie Aftandilian wrote:
>>
>>         Hi Vicente,
>>
>>         Thanks for the reply.  Can I ask why you don't think the LNT
>>         should contain entries for accesses to fields?  It seems that
>>         results in incorrect line numbers in certain cases.  For
>>         example, consider the following code:
>>
>>         1: class LineNumbers {
>>         2:
>>         3:   static class T {
>>         4:     boolean b;
>>         5:   }
>>         6:
>>         7:   static void doIt(boolean... values) {}
>>         8:
>>         9:   public static void main(String[] args) {
>>         10:     T a = new T();
>>         11:     T b = null;
>>         12:
>>         13:     doIt(
>>         14:         a.b,
>>         15:         b.b);
>>         16:   }
>>         17: }
>>
>>         $ javac LineNumbers.java
>>         $ java LineNumbers
>>         Exception in thread "main" java.lang.NullPointerException
>>         at LineNumbers.main(LineNumbers.java:13)
>>
>>         I would expect the exception to be at line 15, not 13.
>>
>>
>>     having the exception at 13 is plain bad or good enough? It seems
>>     to me that you want to do some automation based on the exact line
>>     where the exception was produced. I'm just worried that
>>     generating LNT entries for every expression would produce,
>>     probably unnecessarily, fluffier class files.
>>
>>
>>         Thanks,
>>         Eddie
>>
>>
>>     Thanks,
>>     Vicente
>>
>>
>>
>>
>>         On Fri, Feb 15, 2019 at 6:46 PM Vicente Romero
>>         <vicente.romero at oracle.com
>>         <mailto:vicente.romero at oracle.com>> wrote:
>>
>>             Hi Eddie,
>>
>>             Thanks for the patch. But first I'm not sure that there
>>             is a bug in the
>>             LNT. There is an entry in the LNT, I'm talking about the
>>             example at [1],
>>             for the invocation of method `id`. What we need to
>>             understand is why the
>>             stack trace is not referring to that line and is
>>             referring to line 12.
>>             In any case I don't think that the LNT should contain
>>             entries for
>>             accesses to fields.
>>
>>             Thanks,
>>             Vicente
>>
>>             [1] https://bugs.openjdk.java.net/browse/JDK-8218650
>>
>>             On 2/15/19 8:37 PM, Eddie Aftandilian wrote:
>>             > Hi,
>>             >
>>             > I have attached a patch for JDK-8218650, in which there
>>             are missing
>>             > line number table entries for field accesses. This is
>>             my first attempt
>>             > to contribute to OpenJDK, so I'm happy to take
>>             feedback.  Please see
>>             > the attached patch.
>>             >
>>             > Bug report:
>>             https://bugs.openjdk.java.net/browse/JDK-8218650
>>             >
>>             > Thanks,
>>             > Eddie Aftandilian
>>
>>
>>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20190221/b5c2e0e5/attachment-0001.html>


More information about the compiler-dev mailing list