< 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 >