src/share/vm/opto/node.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
7092905 Cdiff src/share/vm/opto/node.cpp
src/share/vm/opto/node.cpp
Print this page
*** 55,75 ****
_debug_orig = NULL;
int old_debug_idx = Compile::debug_idx();
int new_debug_idx = old_debug_idx+1;
if (new_debug_idx > 0) {
// Arrange that the lowest five decimal digits of _debug_idx
! // will repeat thos of _idx. In case this is somehow pathological,
// we continue to assign negative numbers (!) consecutively.
const int mod = 100000;
int bump = (int)(_idx - new_debug_idx) % mod;
if (bump < 0) bump += mod;
assert(bump >= 0 && bump < mod, "");
new_debug_idx += bump;
}
Compile::set_debug_idx(new_debug_idx);
set_debug_idx( new_debug_idx );
! assert(Compile::current()->unique() < (uint)MaxNodeLimit, "Node limit exceeded");
if (BreakAtNode != 0 && (_debug_idx == BreakAtNode || (int)_idx == BreakAtNode)) {
tty->print_cr("BreakAtNode: _idx=%d _debug_idx=%d", _idx, _debug_idx);
BREAKPOINT;
}
#if OPTO_DU_ITERATOR_ASSERT
--- 55,75 ----
_debug_orig = NULL;
int old_debug_idx = Compile::debug_idx();
int new_debug_idx = old_debug_idx+1;
if (new_debug_idx > 0) {
// Arrange that the lowest five decimal digits of _debug_idx
! // will repeat those of _idx. In case this is somehow pathological,
// we continue to assign negative numbers (!) consecutively.
const int mod = 100000;
int bump = (int)(_idx - new_debug_idx) % mod;
if (bump < 0) bump += mod;
assert(bump >= 0 && bump < mod, "");
new_debug_idx += bump;
}
Compile::set_debug_idx(new_debug_idx);
set_debug_idx( new_debug_idx );
! assert(Compile::current()->unique() < (UINT_MAX - 1), "Node limit exceeded UINT_MAX");
if (BreakAtNode != 0 && (_debug_idx == BreakAtNode || (int)_idx == BreakAtNode)) {
tty->print_cr("BreakAtNode: _idx=%d _debug_idx=%d", _idx, _debug_idx);
BREAKPOINT;
}
#if OPTO_DU_ITERATOR_ASSERT
*** 800,810 ****
}
//-------------------------disconnect_inputs-----------------------------------
// NULL out all inputs to eliminate incoming Def-Use edges.
// Return the number of edges between 'n' and 'this'
! int Node::disconnect_inputs(Node *n) {
int edges_to_n = 0;
uint cnt = req();
for( uint i = 0; i < cnt; ++i ) {
if( in(i) == 0 ) continue;
--- 800,810 ----
}
//-------------------------disconnect_inputs-----------------------------------
// NULL out all inputs to eliminate incoming Def-Use edges.
// Return the number of edges between 'n' and 'this'
! int Node::disconnect_inputs(Node *n, Compile* C) {
int edges_to_n = 0;
uint cnt = req();
for( uint i = 0; i < cnt; ++i ) {
if( in(i) == 0 ) continue;
*** 822,831 ****
--- 822,834 ----
}
}
// Node::destruct requires all out edges be deleted first
// debug_only(destruct();) // no reuse benefit expected
+ if (edges_to_n == 0) {
+ C->record_dead_node(_idx);
+ }
return edges_to_n;
}
//-----------------------------uncast---------------------------------------
// %%% Temporary, until we sort out CheckCastPP vs. CastPP.
src/share/vm/opto/node.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File