comparison src/share/vm/code/dependencies.cpp @ 22940:dc2f15e0caee

8069263: assert(fm == NULL || fm->method_holder() == _participants[n]) failed: sanity Summary: default methods added to classes confuse dependency processing Reviewed-by: kvn
author roland
date Thu, 12 Mar 2015 14:15:09 +0100
parents c4f1e23c4139
children d8f133adf05d
comparison
equal deleted inserted replaced
22935:bff23dedb306 22940:dc2f15e0caee
809 // Note: If n==num_participants, returns NULL. 809 // Note: If n==num_participants, returns NULL.
810 Method* found_method(int n) { 810 Method* found_method(int n) {
811 assert((uint)n <= (uint)_num_participants, "oob"); 811 assert((uint)n <= (uint)_num_participants, "oob");
812 Method* fm = _found_methods[n]; 812 Method* fm = _found_methods[n];
813 assert(n == _num_participants || fm != NULL, "proper usage"); 813 assert(n == _num_participants || fm != NULL, "proper usage");
814 assert(fm == NULL || fm->method_holder() == _participants[n], "sanity"); 814 if (fm != NULL && fm->method_holder() != _participants[n]) {
815 // Default methods from interfaces can be added to classes. In
816 // that case the holder of the method is not the class but the
817 // interface where it's defined.
818 assert(fm->is_default_method(), "sanity");
819 return NULL;
820 }
815 return fm; 821 return fm;
816 } 822 }
817 823
818 #ifdef ASSERT 824 #ifdef ASSERT
819 // Assert that m is inherited into ctxk, without intervening overrides. 825 // Assert that m is inherited into ctxk, without intervening overrides.