Hi Remi, 

thanks for the heads up, I incorporated it in the 
main webrev:
http://cr.openjdk.java.net/~goetz/wr19/8218628-exMsg-NPE/19/

Best regards,
  Goetz.

> -----Original Message-----
> From: fo...@univ-mlv.fr <fo...@univ-mlv.fr>
> Sent: Montag, 23. September 2019 18:02
> To: Lindenmaier, Goetz <goetz.lindenma...@sap.com>
> Cc: hotspot-runtime-dev <hotspot-runtime-...@openjdk.java.net>; core-libs-
> dev <core-libs-dev@openjdk.java.net>
> Subject: Re: RFR (L, final): 8218626: Add detailed message to
> NullPointerException describing what is null.
> 
> ----- Mail original -----
> > De: "Goetz Lindenmaier" <goetz.lindenma...@sap.com>
> > À: "Remi Forax" <fo...@univ-mlv.fr>
> > Cc: "hotspot-runtime-dev" <hotspot-runtime-...@openjdk.java.net>, "core-
> libs-dev" <core-libs-dev@openjdk.java.net>
> > Envoyé: Lundi 23 Septembre 2019 12:03:30
> > Objet: RE: RFR (L, final): 8218626: Add detailed message to
> NullPointerException describing what is null.
> 
> > Hi Remi,
> 
> Hi Goetz,
> 
> >
> > what do you think about dealing with the problem like this:
> > http://cr.openjdk.java.net/~goetz/wr19/8218628-exMsg-NPE/18-
> obfuscation/
> > It's at the cost of one 64-bit field per bytecode in the analysis data.
> > Also, if there is a real assignment to a parameter it's not named 
> > 'parameteri'
> > after that any more.  See the example in the test.
> >
> 
> yes, it's a nice approximation, having a method with more than 63/64
> parameters is rare.
> 
> patch looks good, thumbs up !
> 
> > Best regards,
> >  Goetz.
> >
> 
> regards,
> Rémi
> 
> >
> >
> >> -----Original Message-----
> >> From: fo...@univ-mlv.fr <fo...@univ-mlv.fr>
> >> Sent: Freitag, 20. September 2019 00:01
> >> To: Lindenmaier, Goetz <goetz.lindenma...@sap.com>
> >> Cc: hotspot-runtime-dev <hotspot-runtime-...@openjdk.java.net>; core-
> libs-
> >> dev <core-libs-dev@openjdk.java.net>
> >> Subject: Re: RFR (L, final): 8218626: Add detailed message to
> >> NullPointerException describing what is null.
> >>
> >> ----- Mail original -----
> >> > De: "Goetz Lindenmaier" <goetz.lindenma...@sap.com>
> >> > À: "Remi Forax" <fo...@univ-mlv.fr>
> >> > Cc: "hotspot-runtime-dev" <hotspot-runtime-...@openjdk.java.net>,
> "core-
> >> libs-dev" <core-libs-dev@openjdk.java.net>
> >> > Envoyé: Mercredi 18 Septembre 2019 09:37:36
> >> > Objet: RE: RFR (L, final): 8218626: Add detailed message to
> >> NullPointerException describing what is null.
> >>
> >> > Hi Remi,
> >>
> >> Hi Goetz,
> >>
> >> >
> >> >> in bytecodeUtils.cpp, in print_local_var(),
> >> >> i believe that the code
> >> >>   if (!method->is_static() && (slot == 0)) {
> >> >>       os->print("this");
> >> >>   }
> >> >>   ...
> >> >> is only true if the bytecode is generated by javac and ecj, tools like
> proguard
> >> >> that tries to obfuscate the code will reuse the slot 0 once "this" is 
> >> >> not
> >> needed
> >> >> anymore.
> >> >> This is obviously also true for any other parameters, so in my opinion,
> you
> >> >> should not try to be too heroic here and always display "local%d".
> >> > Yes, you are right. I assume the bytecode local slots are mapped 1:1 to
> >> > the parameters and are not reused for other values.
> >> >
> >> >> The other solution is to propagate "this" and "parameter%d" during the
> >> static
> >> >> analysis, so "this" will become "local0" once a store_0 is seen.
> >> > It would be possible to spot the place where "this" is first overwritten.
> >> > For other parameters, this is not feasible, they are not read-only, so
> >> > stores don't indicate obfuscation.
> >>
> >> Java is not the only language to run on the Java plateform so try to detect
> >> "obfuscation" is again akind of shortcut.
> >>
> >> >
> >> > I could mark the whole method as 'obfuscated' once I see a store_0,
> >> > and then print "local" instead of "parameter" in all places.
> >> > This does not work for static methods, though. Nor for methods
> >> > where "this" is live to the end, but the parameter slots are
> >> > reused.
> >>
> >> and you can have a path with a store_0 and one without (the code is not
> >> linear).
> >>
> >> >
> >> > For obfuscated methods I would claim that printing "this" etc
> >> > is fine even if the slot is reused for another value.  It just
> >> > adds to the obfuscation!  But there might be code
> >> > that is just optimized and not meant to be obfuscated.
> >>
> >> I've used obfuscation as an example, but there are also valid case to reuse
> >> slots
> >> likeit will consume less stack memory if you are using a very small device.
> >>
> >> >
> >> > Best regards,
> >> >  Goetz.
> >>
> >> regards,
> >> Rémi
> >>
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >>
> >> >> Rémi
> >> >>
> >> >> ----- Mail original -----
> >> >> > De: "Goetz Lindenmaier" <goetz.lindenma...@sap.com>
> >> >> > À: "hotspot-runtime-dev" <hotspot-runtime-...@openjdk.java.net>,
> >> >> "core-libs-dev" <core-libs-dev@openjdk.java.net>
> >> >> > Envoyé: Mardi 17 Septembre 2019 16:18:03
> >> >> > Objet: RE: RFR (L, final): 8218626: Add detailed message to
> >> >> NullPointerException describing what is null.
> >> >>
> >> >> > @core-libs experts, I would appreciate comments on the changes
> >> >> > to NullPointerException.java, especially wrt. the Javadoc comment.
> >> >> > The change there is S.
> >> >> >
> >> >> > Best regards,
> >> >> >  Goetz.
> >> >> >
> >> >> >> -----Original Message-----
> >> >> >> From: Lindenmaier, Goetz
> >> >> >> Sent: Dienstag, 10. September 2019 11:48
> >> >> >> To: 'Hotspot dev runtime' <hotspot-runtime-...@openjdk.java.net>;
> >> >> Java Core
> >> >> >> Libs <core-libs-dev@openjdk.java.net>
> >> >> >> Subject: RFR (L, final): 8218626: Add detailed message to
> >> >> NullPointerException
> >> >> >> describing what is null.
> >> >> >>
> >> >> >> Hi,
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> this is the implementation of JEP 358: Helpful NullPointerExceptions.
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> The JEP is in status "Candidate". Coleen (many, many thanks!) ran
> >> >> >>
> >> >> >> it through the Oracle-internal processes.  Now I please need final
> reviews
> >> >> >>
> >> >> >> for this change so that I can propose it to target jdk 14.
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> JEP: https://bugs.openjdk.java.net/browse/JDK-8220715
> >> >> >>
> >> >> >> Enhancement: https://bugs.openjdk.java.net/browse/JDK-8218628
> >> >> >>
> >> >> >> webrev: http://cr.openjdk.java.net/~goetz/wr19/8218628-exMsg-
> >> >> NPE/16/
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> The change ran through a lot of testing, all jtreg and jck tests to 
> >> >> >> name
> >> >> >>
> >> >> >> only some. The webrev points to patch
> >> >> >>
> >> >> >> http://cr.openjdk.java.net/~goetz/wr19/8218628-exMsg-
> >> >> >> NPE/16/enable_NPE_message.patch
> >> >> >>
> >> >> >> that enables the change by default,  which was useful for testing to
> >> >> >>
> >> >> >> assure the code is used in the tests.
> >> >> >>
> >> >> >> I just pushed the change to jdk/submit once more.
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> Please review.
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> Thanks!
> >> >> >>
> > > > > > >   Goetz.

Reply via email to