src/share/vm/opto/cfgnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/cfgnode.cpp Wed Apr 23 14:15:35 2008
--- new/src/share/vm/opto/cfgnode.cpp Wed Apr 23 14:15:35 2008
*** 2015,2024 ****
--- 2015,2046 ----
? this
: call->in(TypeFunc::Parms);
}
//=============================================================================
+ //------------------------------Value------------------------------------------
+ // Check for being unreachable.
+ const Type *NeverBranchNode::Value( PhaseTransform *phase ) const {
+ if (!in(0) || in(0)->is_top()) return Type::TOP;
+ return bottom_type();
+ }
+
+ //------------------------------Ideal------------------------------------------
+ // Check for no longer being part of a loop
+ Node *NeverBranchNode::Ideal(PhaseGVN *phase, bool can_reshape) {
+ if (can_reshape && !in(0)->is_Loop()) {
+ // Dead code elimination can sometimes delete this projection so
+ // if it's not there, there's nothing to do.
+ Node* fallthru = proj_out(0);
+ if (fallthru != NULL) {
+ phase->is_IterGVN()->subsume_node(fallthru, in(0));
+ }
+ return phase->C->top();
+ }
+ return NULL;
+ }
+
#ifndef PRODUCT
void NeverBranchNode::format( PhaseRegAlloc *ra_, outputStream *st) const {
st->print("%s", Name());
}
#endif
src/share/vm/opto/cfgnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File