Interface InvokeInstruction
- All Superinterfaces:
ClassFileElement, CodeElement, Instruction
Models a method invocation instruction in the
where
code
array of a
Code
attribute, other than invokedynamic
.
Corresponding opcodes have a kind of Opcode.Kind.INVOKE
.
Delivered as a CodeElement
when traversing the elements of a CodeModel
.
A method invocation instruction is composite:
InvokeInstruction
(
Opcode opcode
,
MethodRefEntry | InterfaceMethodRefEntry method
)
)
method
must be an InterfaceMethodRefEntry
for invokeinterface
opcode, and must be a
MethodRefEntry
for invokevirtual
opcode.
invokestatic
and invokespecial
can have either type of entry for method
.- Since:
- 24
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionint
count()
Returns thecount
value of aninvokeinterface
instruction, or0
for other instructions.boolean
Returns whether the class or interface holding the method is an interface.method()
Returns theMethodRefEntry
orInterfaceMethodRefEntry
constant described by this instruction.default Utf8Entry
name()
Returns the name of the method.static InvokeInstruction
of
(Opcode op, ClassEntry owner, NameAndTypeEntry nameAndType, boolean isInterface) Returns an invocation instruction.static InvokeInstruction
of
(Opcode op, ClassEntry owner, Utf8Entry name, Utf8Entry type, boolean isInterface) Returns an invocation instruction.static InvokeInstruction
of
(Opcode op, MemberRefEntry method) Returns an invocation instruction.default ClassEntry
owner()
Returns the class or interface holding the method.default Utf8Entry
type()
Returns the method descriptor string of the method.default MethodTypeDesc
Returns a symbolic descriptor for the method type.Methods declared in interface Instruction
opcode, sizeInBytes
-
Method Details
-
method
MemberRefEntry method()Returns theMethodRefEntry
orInterfaceMethodRefEntry
constant described by this instruction.- Returns:
- the
MethodRefEntry
orInterfaceMethodRefEntry
constant described by this instruction
-
isInterface
boolean isInterface()Returns whether the class or interface holding the method is an interface.- Returns:
- whether the class or interface holding the method is an interface
-
count
int count()Returns thecount
value of aninvokeinterface
instruction, or0
for other instructions.For an
invokeinterface
instruction, this value must be equivalent to the sum of slot sizes of all arguments plus one, which is equal to the number of operand stack depth consumed by this interface method invocation instruction.- Returns:
- the
count
value of aninvokeinterface
instruction, or0
for other instructions - See Java Virtual Machine Specification:
-
6.5.invokeinterface invokeinterface
-
owner
Returns the class or interface holding the method.- Returns:
- the class or interface holding the method
-
name
-
type
Returns the method descriptor string of the method.- API Note:
- A symbolic descriptor for the type of the method is available through
typeSymbol()
. - Returns:
- the method descriptor string of the method
-
typeSymbol
Returns a symbolic descriptor for the method type.- Returns:
- a symbolic descriptor for the method type
-
of
Returns an invocation instruction.- Parameters:
op
- the opcode for the specific type of invocation instruction, which must be of kindOpcode.Kind.INVOKE
method
- a constant pool entry describing the method- Returns:
- an invocation instruction
- Throws:
IllegalArgumentException
- if the opcode kind is notOpcode.Kind.INVOKE
-
of
static InvokeInstruction of(Opcode op, ClassEntry owner, Utf8Entry name, Utf8Entry type, boolean isInterface) Returns an invocation instruction.- Parameters:
op
- the opcode for the specific type of invocation instruction, which must be of kindOpcode.Kind.INVOKE
owner
- the class holding the methodname
- the name of the methodtype
- the method descriptorisInterface
- whether the class holding the method is an interface- Returns:
- an invocation instruction
- Throws:
IllegalArgumentException
- if the opcode kind is notOpcode.Kind.INVOKE
-
of
static InvokeInstruction of(Opcode op, ClassEntry owner, NameAndTypeEntry nameAndType, boolean isInterface) Returns an invocation instruction.- Parameters:
op
- the opcode for the specific type of invocation instruction, which must be of kindOpcode.Kind.INVOKE
owner
- the class holding the methodnameAndType
- the name and type of the methodisInterface
- whether the class holding the method is an interface- Returns:
- an invocation instruction
- Throws:
IllegalArgumentException
- if the opcode kind is notOpcode.Kind.INVOKE
-