JDK-8147527: Wrong code generated for postfix unary operators

Jan Lahoda jan.lahoda at oracle.com
Fri Dec 2 11:22:23 UTC 2016


Hi,

I've added these comments:
//Need to use the "lhs" at two places, once on the future left hand side
//and once in the future binary operator. But further processing may change
//the components of the tree in place (see visitSelect for e.g. 
<Class>.super.<ident>),
//so cloning the tree to avoid interference between the uses:

//"tmp1" and "tmp2" may be the same instance
//(for e.g. <Class>.super.<ident>). But further processing may
//change the components of the tree in place (see visitSelect),
//so cloning the tree to avoid interference between the two uses:

Webrev:
http://cr.openjdk.java.net/~jlahoda/8147527/webrev.01/

How does this look?

Thanks!

Jan

On 29.11.2016 22:07, B. Blaser wrote:
> Hi,
>
> 2016-11-29 16:28 GMT+01:00 Maurizio Cimadamore <maurizio.cimadamore at oracle.com>:
>> Looks good to me. Use of shallow clone looks a tad odd - but I understand
>> why it's the way it is - maybe worth adding a comment?
>>
>> Maurizio
>
> I agree that a short comment might be helpful, something like:
>
> // Shallow clone shall fit JDK-8147527 requirements, according to
> related threads.
>
> Bernard
>
>> On 25/11/16 11:38, Jan Lahoda wrote:
>>>
>>> Hello,
>>>
>>> As noted here:
>>>
>>> http://mail.openjdk.java.net/pipermail/compiler-dev/2016-October/010452.html
>>>
>>> javac sometimes generates code incorrectly, as discussed further in the
>>> thread.
>>>
>>> The proposed fix is to not reuse the AST nodes on multiple places.
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8147527
>>> Webrev: http://cr.openjdk.java.net/~jlahoda/8147527/webrev.00/
>>>
>>> Any feedback is welcome.
>>>
>>> Thanks to Bernard for his work on this.
>>>
>>> Jan
>>
>>


More information about the compiler-dev mailing list