< prev index next >

src/hotspot/share/opto/castnode.cpp

Print this page

        

@@ -340,13 +340,18 @@
     return dom;
   }
   if (_carry_dependency) {
     return this;
   }
+  const Type* t = phase->type(in(1));
+  if (EnableVectorReboxing && in(1)->Opcode() == Op_VectorBox) {
+    return t->higher_equal_speculative(phase->type(this)) ? in(1) : this;
+  } else {
   // 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 (t == phase->type(this)) ? in(1) : 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 >