2017 ? this |
2017 ? this |
2018 : call->in(TypeFunc::Parms); |
2018 : call->in(TypeFunc::Parms); |
2019 } |
2019 } |
2020 |
2020 |
2021 //============================================================================= |
2021 //============================================================================= |
|
2022 //------------------------------Value------------------------------------------ |
|
2023 // Check for being unreachable. |
|
2024 const Type *NeverBranchNode::Value( PhaseTransform *phase ) const { |
|
2025 if (!in(0) || in(0)->is_top()) return Type::TOP; |
|
2026 return bottom_type(); |
|
2027 } |
|
2028 |
|
2029 //------------------------------Ideal------------------------------------------ |
|
2030 // Check for no longer being part of a loop |
|
2031 Node *NeverBranchNode::Ideal(PhaseGVN *phase, bool can_reshape) { |
|
2032 if (can_reshape && !in(0)->is_Loop()) { |
|
2033 // Dead code elimination can sometimes delete this projection so |
|
2034 // if it's not there, there's nothing to do. |
|
2035 Node* fallthru = proj_out(0); |
|
2036 if (fallthru != NULL) { |
|
2037 phase->is_IterGVN()->subsume_node(fallthru, in(0)); |
|
2038 } |
|
2039 return phase->C->top(); |
|
2040 } |
|
2041 return NULL; |
|
2042 } |
|
2043 |
2022 #ifndef PRODUCT |
2044 #ifndef PRODUCT |
2023 void NeverBranchNode::format( PhaseRegAlloc *ra_, outputStream *st) const { |
2045 void NeverBranchNode::format( PhaseRegAlloc *ra_, outputStream *st) const { |
2024 st->print("%s", Name()); |
2046 st->print("%s", Name()); |
2025 } |
2047 } |
2026 #endif |
2048 #endif |