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