Mercurial > hg > graal-jvmci-8
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"); |