RFR - JDK-8218650: LineNumberTable records for method invocations with arguments
Vicente Romero
vicente.romero at oracle.com
Thu Feb 21 16:30:35 UTC 2019
On 2/21/19 10:54 AM, Maurizio Cimadamore wrote:
>
>
> 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.
>
I'm not opposed to adding more lines to the LNT if that's what you are
proposing, but I wonder about the benefit. I mean how bad it is to miss
for one, two lines vs having bigger class files. Actually, this is an
interesting experiment @Eddie could you please run an experiment to see
how bigger would the class files for the whole JDK be with your patch?
I'm also interested in redundant lines, it could be that this code adds
redundant lines to the LNT and we should avoid that
> Maurizio
>
Vicente
>>
>>> 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/a8fe005c/attachment-0001.html>
More information about the compiler-dev
mailing list