src/share/vm/code/dependencies.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/code/dependencies.cpp

src/share/vm/code/dependencies.cpp

Print this page
rev 8016 : 8069263: assert(fm == NULL || fm->method_holder() == _participants[n]) failed: sanity
Summary: default methods added to classes confuse dependency processing
Reviewed-by:

*** 843,853 **** // Note: If n==num_participants, returns NULL. Method* found_method(int n) { assert((uint)n <= (uint)_num_participants, "oob"); Method* fm = _found_methods[n]; assert(n == _num_participants || fm != NULL, "proper usage"); ! assert(fm == NULL || fm->method_holder() == _participants[n], "sanity"); return fm; } #ifdef ASSERT // Assert that m is inherited into ctxk, without intervening overrides. --- 843,859 ---- // Note: If n==num_participants, returns NULL. Method* found_method(int n) { assert((uint)n <= (uint)_num_participants, "oob"); Method* fm = _found_methods[n]; assert(n == _num_participants || fm != NULL, "proper usage"); ! if (fm != NULL && fm->method_holder() != _participants[n]) { ! // Default methods from interfaces can be added to classes. In ! // that case the holder of the method is not the class but the ! // interface where it's defined. ! assert(fm->is_default_method(), "sanity"); ! return NULL; ! } return fm; } #ifdef ASSERT // Assert that m is inherited into ctxk, without intervening overrides.
src/share/vm/code/dependencies.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File