提交 4eb4bdb4 编写于 作者: K kvn

7180769: assert(tboth->klass_is_exact()) failed: klass should be exact

Summary: Use class exactness as part of the condition for class compare optimization instead of assert.
Reviewed-by: twisti, roland
上级 85e3a7c0
...@@ -1278,9 +1278,9 @@ void Parse::sharpen_type_after_if(BoolTest::mask btest, ...@@ -1278,9 +1278,9 @@ void Parse::sharpen_type_after_if(BoolTest::mask btest,
// or the narrowOop equivalent. // or the narrowOop equivalent.
const Type* obj_type = _gvn.type(obj); const Type* obj_type = _gvn.type(obj);
const TypeOopPtr* tboth = obj_type->join(con_type)->isa_oopptr(); const TypeOopPtr* tboth = obj_type->join(con_type)->isa_oopptr();
if (tboth != NULL && tboth != obj_type && tboth->higher_equal(obj_type)) { if (tboth != NULL && tboth->klass_is_exact() && tboth != obj_type &&
tboth->higher_equal(obj_type)) {
// obj has to be of the exact type Foo if the CmpP succeeds. // obj has to be of the exact type Foo if the CmpP succeeds.
assert(tboth->klass_is_exact(), "klass should be exact");
int obj_in_map = map()->find_edge(obj); int obj_in_map = map()->find_edge(obj);
JVMState* jvms = this->jvms(); JVMState* jvms = this->jvms();
if (obj_in_map >= 0 && if (obj_in_map >= 0 &&
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册