src/share/vm/opto/compile.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/share/vm/opto/compile.cpp
src/share/vm/opto/compile.cpp
Print this page
rev 8962 : sched pressure
rev 9360 : 8137168: Replace IfNode with a new RangeCheckNode for range checks
Summary: new RangeCheckNode to enable optimization of explicit library level range checks
Reviewed-by:
*** 3179,3198 ****
// confuses register allocation.
if (n->req() > MemBarNode::Precedent) {
n->set_req(MemBarNode::Precedent, top());
}
break;
default:
assert( !n->is_Call(), "" );
assert( !n->is_Mem(), "" );
assert( nop != Op_ProfileBoolean, "should be eliminated during IGVN");
break;
}
// Collect CFG split points
! if (n->is_MultiBranch())
frc._tests.push(n);
}
//------------------------------final_graph_reshaping_walk---------------------
// Replacing Opaque nodes with their input in final_graph_reshaping_impl(),
// requires that the walk visits a node's inputs before visiting the node.
--- 3179,3206 ----
// confuses register allocation.
if (n->req() > MemBarNode::Precedent) {
n->set_req(MemBarNode::Precedent, top());
}
break;
+ case Op_RangeCheck: {
+ RangeCheckNode* rc = n->as_RangeCheck();
+ Node* iff = new IfNode(rc->in(0), rc->in(1), rc->_prob, rc->_fcnt);
+ n->subsume_by(iff, this);
+ frc._tests.push(iff);
+ break;
+ }
default:
assert( !n->is_Call(), "" );
assert( !n->is_Mem(), "" );
assert( nop != Op_ProfileBoolean, "should be eliminated during IGVN");
break;
}
// Collect CFG split points
! if (n->is_MultiBranch() && !n->is_RangeCheck()) {
frc._tests.push(n);
+ }
}
//------------------------------final_graph_reshaping_walk---------------------
// Replacing Opaque nodes with their input in final_graph_reshaping_impl(),
// requires that the walk visits a node's inputs before visiting the node.
src/share/vm/opto/compile.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File