mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-18 18:14: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
|
@ -219,15 +219,29 @@ class ConstantPoolCacheEntry VALUE_OBJ_CLASS_SPEC {
|
|||
Klass* root_klass // needed by the GC to dirty the klass
|
||||
);
|
||||
|
||||
void set_method( // sets entry to resolved method entry
|
||||
private:
|
||||
void set_direct_or_vtable_call(
|
||||
Bytecodes::Code invoke_code, // the bytecode used for invoking the method
|
||||
methodHandle method, // the method/prototype if any (NULL, otherwise)
|
||||
int vtable_index // the vtable index if any, else negative
|
||||
);
|
||||
|
||||
void set_interface_call(
|
||||
methodHandle method, // Resolved method
|
||||
int index // Method index into interface
|
||||
public:
|
||||
void set_direct_call( // sets entry to exact concrete method entry
|
||||
Bytecodes::Code invoke_code, // the bytecode used for invoking the method
|
||||
methodHandle method // the method to call
|
||||
);
|
||||
|
||||
void set_vtable_call( // sets entry to vtable index
|
||||
Bytecodes::Code invoke_code, // the bytecode used for invoking the method
|
||||
methodHandle method, // resolved method which declares the vtable index
|
||||
int vtable_index // the vtable index
|
||||
);
|
||||
|
||||
void set_itable_call(
|
||||
Bytecodes::Code invoke_code, // the bytecode used; must be invokeinterface
|
||||
methodHandle method, // the resolved interface method
|
||||
int itable_index // index into itable for the method
|
||||
);
|
||||
|
||||
void set_method_handle(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue