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

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Thu Feb 21 15:54:23 UTC 2019


On 21/02/2019 15:22, Vicente Romero wrote:
>
>
> 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?

I think that bug refers mostly to the message associated with the NPE, 
not with the *line* at which it is reported. At least that's my 
understanding.

Maurizio

>
>> 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/f88f6aed/attachment.html>


More information about the compiler-dev mailing list