aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/opto/node.hpp
diff options
context:
space:
mode:
authorkvn <none@none>2008-04-23 19:09:16 -0700
committerkvn <none@none>2008-04-23 19:09:16 -0700
commitbb6484ee053730dc6bcab567a8b17c0e5ae2829e (patch)
treed826920ead48efae2966b80459b6fff9f39894bf /src/share/vm/opto/node.hpp
parentaac45ecc8cc694200a034d911b9f0052255514b4 (diff)
6625997: CastPP, CheckCastPP and Proj nodes are not dead loop safe
Summary: EA and initialization optimizations could bypass these nodes. Reviewed-by: rasbold, never
Diffstat (limited to 'src/share/vm/opto/node.hpp')
-rw-r--r--src/share/vm/opto/node.hpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/share/vm/opto/node.hpp b/src/share/vm/opto/node.hpp
index e957887b3..dc44aab22 100644
--- a/src/share/vm/opto/node.hpp
+++ b/src/share/vm/opto/node.hpp
@@ -741,8 +741,9 @@ public:
bool is_Goto() const { return (_flags & Flag_is_Goto) != 0; }
// The data node which is safe to leave in dead loop during IGVN optimization.
bool is_dead_loop_safe() const {
- return is_Phi() || is_Proj() ||
- (_flags & (Flag_is_dead_loop_safe | Flag_is_Con)) != 0;
+ return is_Phi() || (is_Proj() && in(0) == NULL) ||
+ ((_flags & (Flag_is_dead_loop_safe | Flag_is_Con)) != 0 &&
+ (!is_Proj() || !in(0)->is_Allocate()));
}
// is_Copy() returns copied edge index (0 or 1)