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