Request for reviews (M): 6966411: escape.cpp:450 assert(base->Opcode() == Op_ConP

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Jul 2 15:53:55 PDT 2010


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