Request for reviews (S): 6860599: Relax nodes limit check for Output phase
Tom Rodriguez
Thomas.Rodriguez at Sun.COM
Mon Jul 20 13:10:20 PDT 2009
On Jul 20, 2009, at 12:53 PM, Vladimir Kozlov wrote:
> Tom,
>
> I do not want disable the assert since it may catch a situation
> when something goes wrong in Output(), I want relax it.
Oh. Doubling it seems like disabling it to me. Relaxing it would be
increasing it slightly or increasing the limit based on the amount we
actually expect it to increase by. Isn't the real problem that the
bailout limits aren't triggering when they should? I'd rather see
proper bailout bounds instead of just moving the MaxNodeLimit around.
tom
>
> I can use an other flag instread of doubling:
>
> void increase_nodes_limit() { _nodes_limit = CodeGenMaxNodeLimit; }
>
> And I can use nodes_limit() only in Node::verify_construction()
> if everybody don't want changes in other places where MaxNodeLimit
> is used.
> Thanks,
> Vladimir
>
> Tom Rodriguez wrote:
>> If the intent is just to suppress the assert after a certain point
>> in code generation, why don't you just add a flag in the Compile
>> for that? Adding _node_limit and just doubling it seems arbitrary
>> and doesn't really capture intent.
>> tom
>> On Jul 20, 2009, at 9:32 AM, Vladimir Kozlov wrote:
>>> Christian,
>>>
>>> The only nodes limit check done in Output is in
>>> Node::verify_construction() and it is assert()
>>> which only works in debug mode.
>>> Did I understand your question correctly?
>>>
>>> Thanks,
>>> Vladimir
>>>
>>>
>>> Christian Thalinger wrote:
>>>> Vladimir Kozlov wrote:
>>>>> http://cr.openjdk.java.net/~kvn/6860599/webrev.00
>>>>>
>>>>> Fixed 6860599: Relax nodes limit check for Output phase
>>>>>
>>>>> Problem:
>>>>> I got several CTW cases when without EA C2 "gracefully"
>>>>> bailout compilation when nodes limit check failed during
>>>>> macro nodes expansion. And with EA it passed macro nodes
>>>>> expansion but crashed with ASSERT during Output phase.
>>>>> One byte MachNop nodes are used in debug mode for loops
>>>>> and calls alignment in Output phase. As result for a big
>>>>> method the node limit could be reached.
>>>>>
>>>>> Solution:
>>>>> Increase nodes limit (double) for Output phase.
>>>> What I don't understand with this patch is, it changes the node
>>>> limit
>>>> but this is done for every output. It's not limited to e.g.
>>>> debug mode.
>>>> Is this what you indented?
>>>> -- Christian
More information about the hotspot-compiler-dev
mailing list