RFR 8221118: Avoid eagerly creating JCDiagnostic for CompletionFailures

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Fri Mar 29 11:39:59 UTC 2019


Looks good - for bonus points, you could condense the code a bit - e.g. 
turn this

Supplier<JCDiagnostic> diag =
+                () -> 
diagFactory.fragment(Fragments.ClassFileNotFound(c.flatname));
              return newCompletionFailure(c, diag);

into this:

              return newCompletionFailure(c, () -> 
diagFactory.fragment(Fragments.ClassFileNotFound(c.flatname)));


When the local var type used to be JCDiagnostic it was sort of ok, now 
we have all these Supplier<JCDiagnostic> plus a throwaway variable name...

I'll leave this to your judgement.

Maurizio

On 28/03/2019 22:42, forax at univ-mlv.fr wrote:
> Looks good to me.
>
> Rémi
>
> ------------------------------------------------------------------------
>
>     *De: *"Ron Shapiro" <ronshapiro at google.com>
>     *À: *"Remi Forax" <forax at univ-mlv.fr>
>     *Cc: *"jonathan gibbons" <jonathan.gibbons at oracle.com>,
>     "compiler-dev" <compiler-dev at openjdk.java.net>
>     *Envoyé: *Jeudi 28 Mars 2019 23:30:25
>     *Objet: *Re: RFR 8221118: Avoid eagerly creating JCDiagnostic for
>     CompletionFailures
>
>     Here's an updated webrev with resetDiagnostic():
>     http://cr.openjdk.java.net/~ronsh/8221118/webrev.04/
>
>     On Thu, Mar 28, 2019 at 6:14 PM <forax at univ-mlv.fr
>     <mailto:forax at univ-mlv.fr>> wrote:
>
>
>
>         ------------------------------------------------------------------------
>
>             *De: *"Ron Shapiro" <ronshapiro at google.com
>             <mailto:ronshapiro at google.com>>
>             *À: *"Remi Forax" <forax at univ-mlv.fr
>             <mailto:forax at univ-mlv.fr>>
>             *Cc: *"jonathan gibbons" <jonathan.gibbons at oracle.com
>             <mailto:jonathan.gibbons at oracle.com>>, "compiler-dev"
>             <compiler-dev at openjdk.java.net
>             <mailto:compiler-dev at openjdk.java.net>>
>             *Envoyé: *Jeudi 28 Mars 2019 22:58:00
>             *Objet: *Re: RFR 8221118: Avoid eagerly creating
>             JCDiagnostic for CompletionFailures
>
>             It's currently being reset by the cached CompletionFailure
>             in ClassFinder - I can replace that with a method call
>             that resets the supplier and then nulls the diagnostic.
>             Suggestions on a method name for this?
>
>
>         resetDiagnostic() ?
>
>             Does this complicate the API of this type?
>
>
>         yes, but i believe the complexity comes from the fact you want
>         lazy loading thus it's not a plain data type anymore.
>
>         Rémi
>
>
>             On Thu, Mar 28, 2019 at 5:51 PM Remi Forax
>             <forax at univ-mlv.fr <mailto:forax at univ-mlv.fr>> wrote:
>
>                 Hi Ron,
>                 In Symbol.java, having the field 'diag' being public
>                 means that you can access to the object without
>                 calling the getter so without calling the supplier.
>                 I also think that the supplier should not be public too.
>
>                 regards,
>                 Rémi
>
>                 ------------------------------------------------------------------------
>
>                     *De: *"Ron Shapiro" <ronshapiro at google.com
>                     <mailto:ronshapiro at google.com>>
>                     *À: *"jonathan gibbons"
>                     <jonathan.gibbons at oracle.com
>                     <mailto:jonathan.gibbons at oracle.com>>
>                     *Cc: *"compiler-dev"
>                     <compiler-dev at openjdk.java.net
>                     <mailto:compiler-dev at openjdk.java.net>>
>                     *Envoyé: *Mercredi 27 Mars 2019 18:46:09
>                     *Objet: *Re: RFR 8221118: Avoid eagerly creating
>                     JCDiagnostic for CompletionFailures
>
>                     I missed a few cases earlier - see this updated
>                     webrev:
>                     http://cr.openjdk.java.net/~ronsh/8221118/webrev.01/
>
>                     On Tue, Mar 26, 2019 at 4:10 PM Jonathan Gibbons
>                     <jonathan.gibbons at oracle.com
>                     <mailto:jonathan.gibbons at oracle.com>> wrote:
>
>                         Looks OK to me, especially the similarity to
>                         JDK-8215368
>
>                         -- Jon
>
>
>                         On 03/19/2019 03:37 PM, Ron Shapiro wrote:
>
>                             Hi,
>
>                             This is a small change that avoids eagerly
>                             creating JCDiagnostic for CompletionFailures.
>
>                             webrev:
>                             http://cr.openjdk.java.net/~ronsh/8221118/webrev.00/
>                             <http://cr.openjdk.java.net/%7Eronsh/8221118/webrev.00/>
>                             bug:
>                             https://bugs.openjdk.java.net/browse/JDK-8221118
>
>                             Thanks,
>                             Ron
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20190329/178d7b87/attachment-0001.html>


More information about the compiler-dev mailing list