RFR: 8193567: Conversion of comparison nodes affects local slots in optimistic continuation

Hannes Wallnöfer hannes.wallnoefer at oracle.com
Mon Jan 8 15:44:35 UTC 2018


Thanks for the review, Attila. 

I didn’t look at the contents of the local slots. I think the root of the problem is that the comparison is represented as RuntimeNode in some cases and as BinaryNode in others, and it can switch between the two between optimistic recompilations (see LocalVariableTypesCalculator.leaveBinaryNode on how comparison nodes are replaced with RuntimeNodes depending on the types of sub-expressions). I doubt it is possible to guarantee these representations use a compatible slot layout, and even if there is, I think for JDK 10 it’s best to take the safe path.

Hannes


> Am 25.12.2017 um 17:27 schrieb Attila Szegedi <szegedia at gmail.com>:
> 
> A sad +1. I too wish this were easier to solve. Can you point me to the code parts that cause differences in local slot assignment? I guess I could try to figure it out myself from that terrible expression in the test, but if you have a quick explanation…
> 
> Thanks,
>  Attila.
> 
>> On Dec 21, 2017, at 4:36 PM, Hannes Wallnöfer <hannes.wallnoefer at oracle.com> wrote:
>> 
>> Please review:
>> 
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8193567
>> Webrev: http://cr.openjdk.java.net/~hannesw/8193567/webrev.00/
>> 
>> I’ve tried finding a smaller fix like just tagging the child nodes of all comparisons as non-optimistic, but that didn't fix the problem as those nodes could still have optimistic children.
>> 
>> Hannes
> 



More information about the nashorn-dev mailing list