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


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.


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:
>>>> 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