1.1 --- a/src/share/vm/opto/node.hpp Mon Feb 11 14:47:04 2013 -0800 1.2 +++ b/src/share/vm/opto/node.hpp Tue Feb 12 12:56:11 2013 +0100 1.3 @@ -378,6 +378,8 @@ 1.4 bool is_dead() const; 1.5 #define is_not_dead(n) ((n) == NULL || !VerifyIterativeGVN || !((n)->is_dead())) 1.6 #endif 1.7 + // Check whether node has become unreachable 1.8 + bool is_unreachable(PhaseIterGVN &igvn) const; 1.9 1.10 // Set a required input edge, also updates corresponding output edge 1.11 void add_req( Node *n ); // Append a NEW required input 1.12 @@ -646,7 +648,8 @@ 1.13 Flag_may_be_short_branch = Flag_is_dead_loop_safe << 1, 1.14 Flag_avoid_back_to_back = Flag_may_be_short_branch << 1, 1.15 Flag_has_call = Flag_avoid_back_to_back << 1, 1.16 - _max_flags = (Flag_has_call << 1) - 1 // allow flags combination 1.17 + Flag_is_expensive = Flag_has_call << 1, 1.18 + _max_flags = (Flag_is_expensive << 1) - 1 // allow flags combination 1.19 }; 1.20 1.21 private: 1.22 @@ -819,6 +822,8 @@ 1.23 1.24 // The node is a "macro" node which needs to be expanded before matching 1.25 bool is_macro() const { return (_flags & Flag_is_macro) != 0; } 1.26 + // The node is expensive: the best control is set during loop opts 1.27 + bool is_expensive() const { return (_flags & Flag_is_expensive) != 0 && in(0) != NULL; } 1.28 1.29 //----------------- Optimization 1.30