RFR 8178150: Regression in logic for handling inference stuck constraints

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Thu Oct 19 08:38:53 UTC 2017


I think you are right - this method was there when I first wrote the 
patch but then got removed. I resurrected it for the purpose of this 
patch, but it seems like it's not doing what we need.

Maurizio


On 19/10/17 00:57, Vicente Romero wrote:
> Hi Maurizio,
>
> I'm not sure about the correctness or the objective of the closure() 
> method. The termination condition seems to be: stop as soon as you 
> find a cycle in the graph, at least this is my reading. But for some 
> graphs this could imply finding a subset of the closure not the whole 
> of it. It seems to me like implementing a graph traversal method 
> should be what it is wanted here. Unless there is something I'm missing.
>
> Also in the same method the javadoc could have stall comments as it 
> says that a kind of dependencies is given but there is no argument 
> passed to the method.
>
> Thanks,
> Vicente
>
> On 10/18/2017 04:15 PM, Maurizio Cimadamore wrote:
>> Hi,
>> this issue has already been discussed in [1].
>>
>> The issue has to do with the fact that logic for picking a deferred 
>> node to unstick ignores the can-influence relationship (aka inference 
>> graph dependencies).
>>
>> The implemented code is not optimized (almost deliberately); I wanted 
>> the code to follow the spec more or less cleanly. While I'm open to 
>> small improvements, I would please ask to focus on correctness for 
>> the time being since (i) this code is not an hot execution path and 
>> (ii) other performance improvements in this area will follow, see [2].
>>
>> http://cr.openjdk.java.net/~mcimadamore/8178150/
>>
>> [1] - 
>> http://mail.openjdk.java.net/pipermail/compiler-dev/2017-October/011192.html
>> [2] - 
>> http://mail.openjdk.java.net/pipermail/compiler-dev/2017-October/011126.html
>>
>> Cheers
>> Maurizio
>>
>



More information about the compiler-dev mailing list