comparison src/share/vm/c1/c1_GraphBuilder.cpp @ 13075:144b23411b51

8027632: assert(xtype->klass_is_exact()) failed: Should be exact at graphKit.cpp Summary: receiver type collected by profiling for default method may be interface Reviewed-by: kvn, iveresov
author roland
date Tue, 12 Nov 2013 13:58:37 +0100
parents 4d3575d37a07
children 096c224171c4 1128e5fec05f
comparison
equal deleted inserted replaced
13074:78da3894b86f 13075:144b23411b51
4336 vmap()->print(); 4336 vmap()->print();
4337 } 4337 }
4338 #endif // PRODUCT 4338 #endif // PRODUCT
4339 4339
4340 void GraphBuilder::profile_call(ciMethod* callee, Value recv, ciKlass* known_holder, Values* obj_args, bool inlined) { 4340 void GraphBuilder::profile_call(ciMethod* callee, Value recv, ciKlass* known_holder, Values* obj_args, bool inlined) {
4341 // A default method's holder is an interface
4342 if (known_holder != NULL && known_holder->is_interface()) {
4343 assert(known_holder->is_instance_klass() && ((ciInstanceKlass*)known_holder)->has_default_methods(), "should be default method");
4344 known_holder = NULL;
4345 }
4341 append(new ProfileCall(method(), bci(), callee, recv, known_holder, obj_args, inlined)); 4346 append(new ProfileCall(method(), bci(), callee, recv, known_holder, obj_args, inlined));
4342 } 4347 }
4343 4348
4344 void GraphBuilder::profile_return_type(Value ret, ciMethod* callee, ciMethod* m, int invoke_bci) { 4349 void GraphBuilder::profile_return_type(Value ret, ciMethod* callee, ciMethod* m, int invoke_bci) {
4345 assert((m == NULL) == (invoke_bci < 0), "invalid method and invalid bci together"); 4350 assert((m == NULL) == (invoke_bci < 0), "invalid method and invalid bci together");