Code review request: 7151580 - Separate DA/DU logic from exception checking logic in Flow.java

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Mon Mar 26 07:33:02 PDT 2012


On 15/03/12 15:40, Neal Gafter wrote:
> Looks great.
Pushed - thx for the review!

Maurizio
>
> On Mon, Mar 12, 2012 at 5:38 AM, Maurizio Cimadamore 
> <maurizio.cimadamore at oracle.com 
> <mailto:maurizio.cimadamore at oracle.com>> wrote:
>
>     Thanks for the comments - updated webrev at the following URL:
>
>     http://cr.openjdk.java.net/~mcimadamore/7151580.1/
>     <http://cr.openjdk.java.net/%7Emcimadamore/7151580.1/>
>
>     *) I added comments to all visitor classes (including abstract
>     base class) in Flow.java
>     *) I refactored the statement:
>
>         tree.finallyCanCompleteNormally = alive;
>
>
>     Outside the enclosing if statement as suggested.
>
>     Maurizio
>
>
>     On 09/03/12 21:56, Neal Gafter wrote:
>>     Maurizio-
>>
>>     Overall, nice work.  I did a similar refactoring recently on
>>     another code base and was able to extract much more of the code
>>     (e.g. most of the code handling statements) into a common base
>>     class by abstracting over the type of the state variable, but it
>>     isn't clear that would be a win here.
>>
>>     It would be helpful to have comments at the top of FlowAnalyzer
>>     and AssignAnalyzer explaining what they do (i.e. the division of
>>     labor).
>>
>>     I suggest moving the assignment to finallyCanCompleteNormally
>>     outside of its if statement to make it clear that it is being
>>     given its final value, like so:
>>
>>         tree.finallyCanCompleteNormally = alive;
>>
>>
>>     Cheers,
>>     Neal
>>
>>     On Fri, Mar 9, 2012 at 3:00 AM, Maurizio Cimadamore
>>     <maurizio.cimadamore at oracle.com
>>     <mailto:maurizio.cimadamore at oracle.com>> wrote:
>>
>>         Hi,
>>         this is a biggie changeset [1] for separating the definite
>>         assignment logic from the exception analysis logic in
>>         Flow.java. The two logic used to share the same visitor -
>>         moving forward it would be nice to split the two routines in
>>         two separate visitors as there are use cases in which we
>>         might only need to run one of the two (i.e. when inferring
>>         thrown types of a lambda).
>>
>>         The inspiration for this work came from the BGGA prototype
>>         which featured a similar refactoring. I have added my own
>>         little twist to the code - for example, both visitors are
>>         nested classes inside Flow - they also share a common super
>>         class that contains shared routine for handling jumps.
>>
>>         [1] -
>>         http://cr.openjdk.java.net/~mcimadamore/7151580.0/webrev/
>>         <http://cr.openjdk.java.net/%7Emcimadamore/7151580.0/webrev/>
>>         <http://cr.openjdk.java.net/%7Emcimadamore/7151580.0/webrev/>
>>
>>         Maurizio
>>
>>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20120326/866f6c72/attachment.html 


More information about the compiler-dev mailing list