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