1.1 --- a/src/share/vm/opto/node.cpp Fri Aug 23 03:14:54 2013 -0700 1.2 +++ b/src/share/vm/opto/node.cpp Fri Aug 23 11:41:37 2013 -0700 1.3 @@ -773,6 +773,21 @@ 1.4 _in[_cnt] = NULL; // NULL out emptied slot 1.5 } 1.6 1.7 +//------------------------------del_req_ordered-------------------------------- 1.8 +// Delete the required edge and compact the edge array with preserved order 1.9 +void Node::del_req_ordered( uint idx ) { 1.10 + assert( idx < _cnt, "oob"); 1.11 + assert( !VerifyHashTableKeys || _hash_lock == 0, 1.12 + "remove node from hash table before modifying it"); 1.13 + // First remove corresponding def-use edge 1.14 + Node *n = in(idx); 1.15 + if (n != NULL) n->del_out((Node *)this); 1.16 + if (idx < _cnt - 1) { // Not last edge ? 1.17 + Copy::conjoint_words_to_lower((HeapWord*)&_in[idx+1], (HeapWord*)&_in[idx], ((_cnt-idx-1)*sizeof(Node*))); 1.18 + } 1.19 + _in[--_cnt] = NULL; // NULL out emptied slot 1.20 +} 1.21 + 1.22 //------------------------------ins_req---------------------------------------- 1.23 // Insert a new required input at the end 1.24 void Node::ins_req( uint idx, Node *n ) {