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