Package org.apache.bcel.generic
Class INVOKEDYNAMIC
java.lang.Object
org.apache.bcel.generic.Instruction
org.apache.bcel.generic.CPInstruction
org.apache.bcel.generic.FieldOrMethod
org.apache.bcel.generic.INVOKEDYNAMIC
- All Implemented Interfaces:
Serializable
,Cloneable
,ExceptionThrower
,IndexedInstruction
,LoadClass
,StackConsumer
,StackProducer
,TypedInstruction
public class INVOKEDYNAMIC
extends FieldOrMethod
implements ExceptionThrower, StackConsumer, StackProducer
Class for INVOKEDYNAMIC. Not an instance of InvokeInstruction, since that class
expects to be able to get the class of the method. Ignores the bootstrap
mechanism entirely.
- See Also:
-
Field Summary
Fields inherited from class org.apache.bcel.generic.CPInstruction
index
Fields inherited from class org.apache.bcel.generic.Instruction
length, opcode
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
Call corresponding visitor method(s).int
Also works for instructions whose stack effect depends on the constant pool entry they reference.Type[]
Class<?>[]
getName
(ConstantPoolGen cpg) getType
(ConstantPoolGen cpg) Returns the type associated with this instruction.protected void
initFromFile
(ByteSequence bytes, boolean wide) Read needed data (i.e., index) from file.int
Also works for instructions whose stack effect depends on the constant pool entry they reference.toString
(ConstantPool cp) Methods inherited from class org.apache.bcel.generic.FieldOrMethod
getClassName, getClassType, getLoadClassType, getReferenceType
Methods inherited from class org.apache.bcel.generic.CPInstruction
dump, getIndex, setIndex, toString
Methods inherited from class org.apache.bcel.generic.Instruction
copy, equals, getComparator, getLength, getName, getOpcode, hashCode, readInstruction, setComparator, toString
-
Constructor Details
-
INVOKEDYNAMIC
public INVOKEDYNAMIC(short opcode, int index) - Parameters:
index
- to constant pool
-
-
Method Details
-
toString
- Overrides:
toString
in classCPInstruction
- Returns:
- mnemonic for instruction with symbolic references resolved
-
getNameAndType
-
getSignature
- Overrides:
getSignature
in classFieldOrMethod
- Returns:
- signature of referenced method/field.
-
getName
- Overrides:
getName
in classFieldOrMethod
- Returns:
- name of referenced method/field.
-
consumeStack
Also works for instructions whose stack effect depends on the constant pool entry they reference.- Specified by:
consumeStack
in interfaceStackConsumer
- Overrides:
consumeStack
in classInstruction
- Returns:
- Number of words consumed from stack by this instruction
-
produceStack
Also works for instructions whose stack effect depends on the constant pool entry they reference.- Specified by:
produceStack
in interfaceStackProducer
- Overrides:
produceStack
in classInstruction
- Returns:
- Number of words produced onto stack by this instruction
-
getType
Description copied from interface:LoadClass
Returns the type associated with this instruction. LoadClass instances are always typed, but this type does not always refer to the type of the class or interface that it possibly forces to load. For example, GETFIELD would return the type of the field and not the type of the class where the field is defined. If no class is forced to be loaded, null is returned. An example for this is an ANEWARRAY instruction that creates an int[][].- Specified by:
getType
in interfaceLoadClass
- Specified by:
getType
in interfaceTypedInstruction
- Overrides:
getType
in classCPInstruction
- Returns:
- return type of referenced method.
- See Also:
-
getMethodName
- Returns:
- name of referenced method.
-
getReturnType
- Returns:
- return type of referenced method.
-
getArgumentTypes
- Returns:
- argument types of referenced method.
-
initFromFile
Read needed data (i.e., index) from file.- Overrides:
initFromFile
in classCPInstruction
- Parameters:
bytes
- input streamwide
- wide prefix?- Throws:
IOException
- may be thrown if the implementation needs to read data from the file
-
getExceptions
- Specified by:
getExceptions
in interfaceExceptionThrower
-
accept
Call corresponding visitor method(s). The order is: Call visitor methods of implemented interfaces first, then call methods according to the class hierarchy in descending order, i.e., the most specific visitXXX() call comes last.- Specified by:
accept
in classInstruction
- Parameters:
v
- Visitor object
-