8027632: assert(xtype->klass_is_exact()) failed: Should be exact at graphKit.cpp

Receiver type collected by profiling for default method may be interface

Reviewed-by: kvn, iveresov
This commit is contained in:
Roland Westrelin 2013-11-12 13:58:37 +01:00
parent 18ca4cc301
commit 31d2d5121a

View File

@ -4338,6 +4338,11 @@ void GraphBuilder::print_stats() {
#endif // PRODUCT
void GraphBuilder::profile_call(ciMethod* callee, Value recv, ciKlass* known_holder, Values* obj_args, bool inlined) {
// A default method's holder is an interface
if (known_holder != NULL && known_holder->is_interface()) {
assert(known_holder->is_instance_klass() && ((ciInstanceKlass*)known_holder)->has_default_methods(), "should be default method");
known_holder = NULL;
}
append(new ProfileCall(method(), bci(), callee, recv, known_holder, obj_args, inlined));
}