< prev index next >
src/share/vm/oops/method.cpp
Print this page
*** 275,285 ****
assert(bci == -1 || bci == bci_from(bcp_from(bci)), "sane bci if >=0");
return bci;
}
address Method::bcp_from(int bci) const {
! assert((is_native() && bci == 0) || (!is_native() && 0 <= bci && bci < code_size()), "illegal bci: %d", bci);
address bcp = code_base() + bci;
assert(is_native() && bcp == code_base() || contains(bcp), "bcp doesn't belong to this method");
return bcp;
}
--- 275,286 ----
assert(bci == -1 || bci == bci_from(bcp_from(bci)), "sane bci if >=0");
return bci;
}
address Method::bcp_from(int bci) const {
! assert((is_native() && bci == 0) || (!is_native() && 0 <= bci && bci < code_size()),
! "illegal bci: %d for %s method", bci, is_native() ? "native" : "non-native");
address bcp = code_base() + bci;
assert(is_native() && bcp == code_base() || contains(bcp), "bcp doesn't belong to this method");
return bcp;
}
*** 556,566 ****
}
bool Method::is_final_method(AccessFlags class_access_flags) const {
// or "does_not_require_vtable_entry"
// default method or overpass can occur, is not final (reuses vtable entry)
! // private methods get vtable entries for backward class compatibility.
if (is_overpass() || is_default_method()) return false;
return is_final() || class_access_flags.is_final();
}
bool Method::is_final_method() const {
--- 557,567 ----
}
bool Method::is_final_method(AccessFlags class_access_flags) const {
// or "does_not_require_vtable_entry"
// default method or overpass can occur, is not final (reuses vtable entry)
! // private methods in classes get vtable entries for backward class compatibility.
if (is_overpass() || is_default_method()) return false;
return is_final() || class_access_flags.is_final();
}
bool Method::is_final_method() const {
*** 568,578 ****
}
bool Method::is_default_method() const {
if (method_holder() != NULL &&
method_holder()->is_interface() &&
! !is_abstract()) {
return true;
} else {
return false;
}
}
--- 569,579 ----
}
bool Method::is_default_method() const {
if (method_holder() != NULL &&
method_holder()->is_interface() &&
! !is_abstract() && !is_private()) {
return true;
} else {
return false;
}
}
*** 581,591 ****
if (is_final_method(class_access_flags)) return true;
#ifdef ASSERT
ResourceMark rm;
bool is_nonv = (vtable_index() == nonvirtual_vtable_index);
if (class_access_flags.is_interface()) {
! assert(is_nonv == is_static(), "is_nonv=%s", name_and_sig_as_C_string());
}
#endif
assert(valid_vtable_index() || valid_itable_index(), "method must be linked before we ask this question");
return vtable_index() == nonvirtual_vtable_index;
}
--- 582,594 ----
if (is_final_method(class_access_flags)) return true;
#ifdef ASSERT
ResourceMark rm;
bool is_nonv = (vtable_index() == nonvirtual_vtable_index);
if (class_access_flags.is_interface()) {
! assert(is_nonv == is_static() || is_nonv == is_private(),
! "nonvirtual unexpected for non-static, non-private: %s",
! name_and_sig_as_C_string());
}
#endif
assert(valid_vtable_index() || valid_itable_index(), "method must be linked before we ask this question");
return vtable_index() == nonvirtual_vtable_index;
}
< prev index next >