< prev index next >

src/hotspot/share/opto/castnode.cpp

Print this page

        

@@ -288,13 +288,21 @@
     return dom;
   }
   if (_carry_dependency) {
     return this;
   }
+  const Type* t = phase->type(in(1));
+  if (EnableVectorReboxing && in(1)->Opcode() == Op_VectorBox) {
+    if (t->higher_equal_speculative(phase->type(this))) {
+      return in(1);
+    }
+  } else if (t == phase->type(this)) {
   // Toned down to rescue meeting at a Phi 3 different oops all implementing
   // the same interface.
-  return (phase->type(in(1)) == phase->type(this)) ? in(1) : this;
+    return in(1);
+  }
+  return this;
 }
 
 //------------------------------Value------------------------------------------
 // Take 'join' of input and cast-up type, unless working with an Interface
 const Type* CheckCastPPNode::Value(PhaseGVN* phase) const {
< prev index next >