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