Request for reviews (S): 6860599: Relax nodes limit check for Output phase
Vladimir Kozlov
Vladimir.Kozlov at Sun.COM
Mon Jul 20 12:53:02 PDT 2009
Tom,
I do not want disable the assert since it may catch a situation
when something goes wrong in Output(), I want relax it.
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