< prev index next >

src/share/vm/opto/node.cpp

Print this page
rev 10293 : 8150720: Cleanup code around PrintOptoStatistics
Reviewed-by: kvn, shade, vlivanov

*** 574,594 **** } //------------------------------~Node------------------------------------------ // Fancy destructor; eagerly attempt to reclaim Node numberings and storage - extern int reclaim_idx ; - extern int reclaim_in ; - extern int reclaim_node; void Node::destruct() { // Eagerly reclaim unique Node numberings Compile* compile = Compile::current(); if ((uint)_idx+1 == compile->unique()) { compile->set_unique(compile->unique()-1); - #ifdef ASSERT - reclaim_idx++; - #endif } // Clear debug info: Node_Notes* nn = compile->node_notes_at(_idx); if (nn != NULL) nn->clear(); // Walk the input array, freeing the corresponding output edges --- 574,588 ----
*** 602,648 **** // See if the input array was allocated just prior to the object int edge_size = _max*sizeof(void*); int out_edge_size = _outmax*sizeof(void*); char *edge_end = ((char*)_in) + edge_size; char *out_array = (char*)(_out == NO_OUT_ARRAY? NULL: _out); - char *out_edge_end = out_array + out_edge_size; int node_size = size_of(); // Free the output edge array if (out_edge_size > 0) { - #ifdef ASSERT - if( out_edge_end == compile->node_arena()->hwm() ) - reclaim_in += out_edge_size; // count reclaimed out edges with in edges - #endif compile->node_arena()->Afree(out_array, out_edge_size); } // Free the input edge array and the node itself if( edge_end == (char*)this ) { - #ifdef ASSERT - if( edge_end+node_size == compile->node_arena()->hwm() ) { - reclaim_in += edge_size; - reclaim_node+= node_size; - } - #else // It was; free the input array and object all in one hit compile->node_arena()->Afree(_in,edge_size+node_size); #endif } else { - // Free just the input array - #ifdef ASSERT - if( edge_end == compile->node_arena()->hwm() ) - reclaim_in += edge_size; - #endif compile->node_arena()->Afree(_in,edge_size); // Free just the object ! #ifdef ASSERT ! if( ((char*)this) + node_size == compile->node_arena()->hwm() ) ! reclaim_node+= node_size; ! #else compile->node_arena()->Afree(this,node_size); #endif } if (is_macro()) { compile->remove_macro_node(this); --- 596,624 ---- // See if the input array was allocated just prior to the object int edge_size = _max*sizeof(void*); int out_edge_size = _outmax*sizeof(void*); char *edge_end = ((char*)_in) + edge_size; char *out_array = (char*)(_out == NO_OUT_ARRAY? NULL: _out); int node_size = size_of(); // Free the output edge array if (out_edge_size > 0) { compile->node_arena()->Afree(out_array, out_edge_size); } // Free the input edge array and the node itself if( edge_end == (char*)this ) { // It was; free the input array and object all in one hit + #ifndef ASSERT compile->node_arena()->Afree(_in,edge_size+node_size); #endif } else { // Free just the input array compile->node_arena()->Afree(_in,edge_size); // Free just the object ! #ifndef ASSERT compile->node_arena()->Afree(this,node_size); #endif } if (is_macro()) { compile->remove_macro_node(this);
< prev index next >