Request for reviews (XL): 7147744: CTW: assert(false) failed: infinite EA connection graph build

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu Feb 23 11:58:48 PST 2012


http://cr.openjdk.java.net/~kvn/7147744/webrev

7147744: CTW: assert(false) failed: infinite EA connection graph build

I rewrote Connection graph construction code in EA to reduce time spent there. 
In the bug's test time reduced by 100 (from about 50 to .5 sec on Nahalem-EX 
machine).

Connection graph now has specialized classes for nodes and additional use edges 
to put on worklist only uses of node which added new point edge. Field node has 
also bases edges. Edges never removed only added.
Instead of looking for Field's bases from the start create simple base edge to 
LocalVar during initial graph construction in build_connection_graph(). Late do 
several iteration to push all known JavaObject nodes references through graph. 
This phase has limits on number and time. Also on each iteration check if there 
are non globally escaped objects and bail out from code if not.
Added additional Arraycopy node to connect source and destination objects.
I removed uncast() calls so that all LocalVar nodes point to all related 
JavaObject nodes.
I combined record_for_escape_analysis() and build_connection_graph() into one 
method.
Added TracePhase around Connection graph build code to see how much time spent 
there.

This code need addition work since I still saw outlier (10 min in EA) in sje2010 
on SPARC. But I will look on it after this one is done.

I added new GrowableArray method delete_at(i) to avoid shifting following 
elements which is done in remove_at(i) method.

Thanks,
Vladimir


More information about the hotspot-compiler-dev mailing list