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

Vitaly Davidovich vitalyd at gmail.com
Thu Feb 23 13:20:24 PST 2012


Thanks Vladimir.  I know the method is new and used only in EA but
GrowableArray is a general purpose class so I thought maybe such a method
doesn't gel that well with it.  I'd use a linked list for such scenarios
(some mem bloat, unless it's intrusive, plus indirection hit though), but
your call of course ...

Thanks

Sent from my phone
On Feb 23, 2012 3:42 PM, "Vladimir Kozlov" <vladimir.kozlov at oracle.com>
wrote:

> It is used only in new code in EA where it removes node from list of non
> escaped objects. The order does not matter there. In initial changes it was
> also used to remove  node's edges where it is also does not matter.
>
> If you want to preserve order use remove_at(i).
>
> Vladimir
>
> Vitaly Davidovich wrote:
>
>> Vladimir,
>>
>> deleteAt() doesn't violate ordering assumption for elements previously
>> inserted into the array?
>>
>> Vitaly
>>
>> Sent from my phone
>>
>> On Feb 23, 2012 3:00 PM, "Vladimir Kozlov" <vladimir.kozlov at oracle.com<mailto:
>> vladimir.kozlov@**oracle.com <vladimir.kozlov at oracle.com>>> wrote:
>>
>>    http://cr.openjdk.java.net/~__**kvn/7147744/webrev<http://cr.openjdk.java.net/~__kvn/7147744/webrev>
>>    <http://cr.openjdk.java.net/~**kvn/7147744/webrev<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
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20120223/87400ddf/attachment.html 


More information about the hotspot-compiler-dev mailing list