--- a/hotspot/src/share/vm/opto/graphKit.cpp Tue Jan 28 12:25:34 2014 -0800
+++ b/hotspot/src/share/vm/opto/graphKit.cpp Tue Jan 28 12:28:17 2014 -0800
@@ -420,7 +420,7 @@
}
const Type* srctype = _gvn.type(src);
if (phi->type() != srctype) {
- const Type* dsttype = phi->type()->meet(srctype);
+ const Type* dsttype = phi->type()->meet_speculative(srctype);
if (phi->type() != dsttype) {
phi->set_type(dsttype);
_gvn.set_type(phi, dsttype);
@@ -1224,7 +1224,7 @@
// See if mixing in the NULL pointer changes type.
// If so, then the NULL pointer was not allowed in the original
// type. In other words, "value" was not-null.
- if (t->meet(TypePtr::NULL_PTR) != t) {
+ if (t->meet(TypePtr::NULL_PTR) != t->remove_speculative()) {
// same as: if (!TypePtr::NULL_PTR->higher_equal(t)) ...
explicit_null_checks_elided++;
return value; // Elided null check quickly!
@@ -1357,7 +1357,7 @@
// Cast obj to not-null on this path
Node* GraphKit::cast_not_null(Node* obj, bool do_replace_in_map) {
const Type *t = _gvn.type(obj);
- const Type *t_not_null = t->join(TypePtr::NOTNULL);
+ const Type *t_not_null = t->join_speculative(TypePtr::NOTNULL);
// Object is already not-null?
if( t == t_not_null ) return obj;
@@ -3014,7 +3014,7 @@
if (failure_control != NULL) // failure is now impossible
(*failure_control) = top();
// adjust the type of the phi to the exact klass:
- phi->raise_bottom_type(_gvn.type(cast_obj)->meet(TypePtr::NULL_PTR));
+ phi->raise_bottom_type(_gvn.type(cast_obj)->meet_speculative(TypePtr::NULL_PTR));
}
}