mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 11:34:38 +02:00
8014013: CallInfo structure no longer accurately reports the result of a LinkResolver operation
Enhance method resolution and resulting data structures, plus some refactoring. Reviewed-by: twisti, acorn, jrose
This commit is contained in:
parent
98d8f57603
commit
222c735458
40 changed files with 715 additions and 601 deletions
|
@ -286,7 +286,10 @@ int ciMethod::itable_index() {
|
|||
check_is_loaded();
|
||||
assert(holder()->is_linked(), "must be linked");
|
||||
VM_ENTRY_MARK;
|
||||
return klassItable::compute_itable_index(get_Method());
|
||||
Method* m = get_Method();
|
||||
if (!m->has_itable_index())
|
||||
return Method::nonvirtual_vtable_index;
|
||||
return m->itable_index();
|
||||
}
|
||||
#endif // SHARK
|
||||
|
||||
|
@ -1137,6 +1140,10 @@ bool ciMethod::is_klass_loaded(int refinfo_index, bool must_be_resolved) const {
|
|||
// ------------------------------------------------------------------
|
||||
// ciMethod::check_call
|
||||
bool ciMethod::check_call(int refinfo_index, bool is_static) const {
|
||||
// This method is used only in C2 from InlineTree::ok_to_inline,
|
||||
// and is only used under -Xcomp or -XX:CompileTheWorld.
|
||||
// It appears to fail when applied to an invokeinterface call site.
|
||||
// FIXME: Remove this method and resolve_method_statically; refactor to use the other LinkResolver entry points.
|
||||
VM_ENTRY_MARK;
|
||||
{
|
||||
EXCEPTION_MARK;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue