<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 15, 2015 at 3:54 PM, Zoltán Majó <span dir="ltr"><<a href="mailto:zoltan.majo@oracle.com" target="_blank">zoltan.majo@oracle.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
1) in matcher.cpp on line 345 for determining the stack size used in xform();<br>
2) in compile.cpp on line 330 for the estimated worklist size.</blockquote></div><br>Zoltán, sorry for not catching those two cases on the original patch.<br></div><div class="gmail_extra">Here are the notes I took back then, although line numbers may have shifted:<br><br>  * hotspot/src/share/vm/opto/cfgnode.cpp:<br>
      o 805: Node_Stack   Node_Stack stack(a, C->unique() >> 4); => *C->live_nodes() >> 4*<br>
  * hotspot/src/share/vm/opto/chaitin.cpp:<br>
      o 1795: Node **derived_base_map = (Node**)a->Amalloc(sizeof(Node*)*C->unique()); => *needs all indices for<br>
        PhaseChaitin::find_base_for_derived*<br>
  * hotspot/src/share/vm/opto/compile.cpp:<br>
      o 320: int estimated_worklist_size = unique(); => *int estimated_worklist_size = live_nodes();*<br>
      o 3314: Node_Stack nstack(unique() >> 1); => *Node_Stack nstack(live_nodes() >> 1);*<br>
  * hotspot/src/share/vm/opto/domgraph.cpp:<br>
      o 393: *leave unique() alone, since the algorithms rely on indices*<br>
  * hotspot/src/share/vm/opto/escape.cpp:<br>
      o 41: _nodes(C->comp_arena(), C->unique(), C->unique(), NULL) => *leave it alone, nodes are accessed by index*<br>
  * hotspot/src/share/vm/opto/gcm.cpp:<br>
      o 111: GrowableArray <Node *> spstack(C->unique() + 8); 
=> *GrowableArray <Node *> spstack(C->live_nodes() + 8);*<br>
      o 1313: stack.map((C->unique() >> 1) + 16, NULL); => *stack.map((C->live_nodes() >> 1) + 16, NULL);*<br>
      o 1374: GrowableArray ready_cnt(C->unique(), C->unique(), <span>-1</span>); => *leave it, it requires index-based access*<br>
  * hotspot/src/share/vm/opto/loopnode.cpp:<br>
      o 2128: _nodes.map(C->unique(), NULL); => *leave it, it requires index-based access*<br>
      o 2203: _idom      = NEW_RESOURCE_ARRAY( Node*, _idom_size ); => *leave it, it requires index-based access*<br>
      o 2234: int stack_size = (C->unique() >> 1) + 16; // 
(unique>>1)+16 from Java2D stats => *int stack_size =<br>
        (C->live_nodes() >> 1) + 16*<br>
      o 2690: uint init_size = C->unique() / 100; => *uint init_size = C->live_nodes() / 100;*<br>
      o 2781: GrowableArray <Node *> bltstack(C->unique() 
>> 1);**=> *GrowableArray <Node *> 
bltstack(C->live_nodes() >> 1);*<br>
      o 3671: Node_Stack stack(arena, C->unique() >> 2)**=> *Node_Stack stack(arena, C->live_nodes() >> 2);*<br>
  * hotspot/src/share/vm/opto/loopnode.hpp:<br>
      o 521: _max_preorder = C->unique()+8; => *I don't understand why +8, since indexing occurs based on node indices :|*<br>
      o other occurences are similar<br>
  * hotspot/src/share/vm/opto/loopTransform.cpp:<br>
      o 1216: Node_Stack stack(arena, C->unique() >> 2); => *Node_Stack stack(arena, C->live_nodes() >> 2);*<br>
  * hotspot/src/share/vm/opto/matcher.cpp:<br>
      o 326: grow_new_node_array(C->unique()); => *leave alone, indexing based on nodes*<br>
      o 2053: MStack mstack(C->unique() * 2);=> *this can probably be optimized as well, I guess*<br>
  * hotspot/src/share/vm/opto/node.cpp:<br>
      o 1771: GrowableArray <Node *> nstack(C->unique()); =>
 *GrowableArray <Node *> nstack(C->live_nodes());*<br>
  * hotspot/src/share/vm/opto/phaseX.cpp:<br>
      o 461,477: _types.map(C->unique(), NULL); => *leave alone, index-based access occurs later*<br>
      o 794,811: _stack(C->unique() >> 1), => *_stack(C->live_nodes() >> 1),*<br>
      o 1641: GrowableArray <Node *> trstack(C->unique() 
>> 1); => *GrowableArray <Node *> 
trstack(C->live_nodes() >> 1);*<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Hope this is of use for you!<br></div><div class="gmail_extra">Vlad<br></div></div>