<p>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&#39;t gel that well with it.  I&#39;d use a linked list for such scenarios (some mem bloat, unless it&#39;s intrusive, plus indirection hit though), but your call of course ...</p>

<p>Thanks</p>
<p>Sent from my phone</p>
<div class="gmail_quote">On Feb 23, 2012 3:42 PM, &quot;Vladimir Kozlov&quot; &lt;<a href="mailto:vladimir.kozlov@oracle.com">vladimir.kozlov@oracle.com</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
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&#39;s edges where it is also does not matter.<br>

<br>
If you want to preserve order use remove_at(i).<br>
<br>
Vladimir<br>
<br>
Vitaly Davidovich wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Vladimir,<br>
<br>
deleteAt() doesn&#39;t violate ordering assumption for elements previously inserted into the array?<br>
<br>
Vitaly<br>
<br>
Sent from my phone<br>
<br>
On Feb 23, 2012 3:00 PM, &quot;Vladimir Kozlov&quot; &lt;<a href="mailto:vladimir.kozlov@oracle.com" target="_blank">vladimir.kozlov@oracle.com</a> &lt;mailto:<a href="mailto:vladimir.kozlov@oracle.com" target="_blank">vladimir.kozlov@<u></u>oracle.com</a>&gt;&gt; wrote:<br>

<br>
    <a href="http://cr.openjdk.java.net/~__kvn/7147744/webrev" target="_blank">http://cr.openjdk.java.net/~__<u></u>kvn/7147744/webrev</a><br>
    &lt;<a href="http://cr.openjdk.java.net/~kvn/7147744/webrev" target="_blank">http://cr.openjdk.java.net/~<u></u>kvn/7147744/webrev</a>&gt;<br>
<br>
    7147744: CTW: assert(false) failed: infinite EA connection graph build<br>
<br>
    I rewrote Connection graph construction code in EA to reduce time<br>
    spent there. In the bug&#39;s test time reduced by 100 (from about 50 to<br>
    .5 sec on Nahalem-EX machine).<br>
<br>
    Connection graph now has specialized classes for nodes and<br>
    additional use edges to put on worklist only uses of node which<br>
    added new point edge. Field node has also bases edges. Edges never<br>
    removed only added.<br>
    Instead of looking for Field&#39;s bases from the start create simple<br>
    base edge to LocalVar during initial graph construction in<br>
    build_connection_graph(). Late do several iteration to push all<br>
    known JavaObject nodes references through graph. This phase has<br>
    limits on number and time. Also on each iteration check if there are<br>
    non globally escaped objects and bail out from code if not.<br>
    Added additional Arraycopy node to connect source and destination<br>
    objects.<br>
    I removed uncast() calls so that all LocalVar nodes point to all<br>
    related JavaObject nodes.<br>
    I combined record_for_escape_analysis() and build_connection_graph()<br>
    into one method.<br>
    Added TracePhase around Connection graph build code to see how much<br>
    time spent there.<br>
<br>
    This code need addition work since I still saw outlier (10 min in<br>
    EA) in sje2010 on SPARC. But I will look on it after this one is done.<br>
<br>
    I added new GrowableArray method delete_at(i) to avoid shifting<br>
    following elements which is done in remove_at(i) method.<br>
<br>
    Thanks,<br>
    Vladimir<br>
<br>
</blockquote>
</blockquote></div>