Request for reviews (M): 6966411: escape.cpp:450 assert(base->Opcode() == Op_ConP
Tom Rodriguez
tom.rodriguez at oracle.com
Fri Jul 2 20:10:02 PDT 2010
Looks good.
tom
On Jul 2, 2010, at 3:53 PM, Vladimir Kozlov wrote:
> Thank you, Tom
>
> oop_null/noop_null are generated outside ConnectionGraph constructor
> which creates array _nodes[] of fixed size C->unique() and it should
> include space for oop_null/noop_null. When Connection graph is populated
> escape analysis relies on the fact that no new ideal nodes are created.
>
> I moved all Compile code into new method ConnectionGraph::do_analysis()
> and moved dump() into compute_escape().
>
> http://cr.openjdk.java.net/~kvn/6966411/webrev.01
>
> thanks,
> Vladimir
>
> Tom Rodriguez wrote:
>> I'm glad you're doing this. Is the oop_null/noop_null stuff still needed? I can't remember the reason for that. Could it be moved into compute_escape? Maybe the PrintEscapeAnalysis stuff could be there too. Otherwise it looks good.
>> tom
>> On Jul 2, 2010, at 1:01 PM, Vladimir Kozlov wrote:
>>> I wanted to do this for long time as EA improvement
>>> since IGVN optimization will simplify ideal graph.
>>>
>>> http://cr.openjdk.java.net/~kvn/6966411/webrev
>>>
>>> Fixed 6966411: escape.cpp:450 assert(base->Opcode() == Op_ConP
>>>
>>> OptimizeStringConcat optimization replaces calls with inlined
>>> methods during do_late_inline(). It creates dead paths which
>>> are not eliminated before Escape Analysis since IGVN optimization
>>> is not executed:
>>>
>>> 62 ConL === 0 [[ 63 92 ]] #long:8
>>> 63 AddP === _ 1 1 62 [[ 64 ]] !jvms: CtorTests::StringBuilder0002 @ bci:7
>>>
>>> Solution:
>>> Execute IGVN optimization before and after Escape Analysis.
>>> Use new PhaseIterGVN field ConnectionGraph::_igvn instead of
>>> passing phase as EA methods parameter.
>>>
>>> Failed test, JPRT
More information about the hotspot-compiler-dev
mailing list