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:
java.io.Serializable,java.lang.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:
- Serialized Form
-
-
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 Constructor Description INVOKEDYNAMIC(short opcode, int index)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(Visitor v)Call corresponding visitor method(s).intconsumeStack(ConstantPoolGen cpg)Also works for instructions whose stack effect depends on the constant pool entry they reference.Type[]getArgumentTypes(ConstantPoolGen cpg)java.lang.Class<?>[]getExceptions()java.lang.StringgetMethodName(ConstantPoolGen cpg)java.lang.StringgetName(ConstantPoolGen cpg)ConstantNameAndTypegetNameAndType(ConstantPoolGen cpg)TypegetReturnType(ConstantPoolGen cpg)java.lang.StringgetSignature(ConstantPoolGen cpg)TypegetType(ConstantPoolGen cpg)Returns the type associated with this instruction.protected voidinitFromFile(ByteSequence bytes, boolean wide)Read needed data (i.e., index) from file.intproduceStack(ConstantPoolGen cpg)Also works for instructions whose stack effect depends on the constant pool entry they reference.java.lang.StringtoString(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
-
-
-
-
Method Detail
-
toString
public java.lang.String toString(ConstantPool cp)
- Overrides:
toStringin classCPInstruction- Returns:
- mnemonic for instruction with symbolic references resolved
-
getNameAndType
public ConstantNameAndType getNameAndType(ConstantPoolGen cpg)
-
getSignature
public java.lang.String getSignature(ConstantPoolGen cpg)
- Overrides:
getSignaturein classFieldOrMethod- Returns:
- signature of referenced method/field.
-
getName
public java.lang.String getName(ConstantPoolGen cpg)
- Overrides:
getNamein classFieldOrMethod- Returns:
- name of referenced method/field.
-
consumeStack
public int consumeStack(ConstantPoolGen cpg)
Also works for instructions whose stack effect depends on the constant pool entry they reference.- Specified by:
consumeStackin interfaceStackConsumer- Overrides:
consumeStackin classInstruction- Returns:
- Number of words consumed from stack by this instruction
-
produceStack
public int produceStack(ConstantPoolGen cpg)
Also works for instructions whose stack effect depends on the constant pool entry they reference.- Specified by:
produceStackin interfaceStackProducer- Overrides:
produceStackin classInstruction- Returns:
- Number of words produced onto stack by this instruction
-
getType
public Type getType(ConstantPoolGen cpg)
Description copied from interface:LoadClassReturns 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:
getTypein interfaceLoadClass- Specified by:
getTypein interfaceTypedInstruction- Overrides:
getTypein classCPInstruction- Returns:
- return type of referenced method.
- See Also:
LoadClass.getLoadClassType(ConstantPoolGen)
-
getMethodName
public java.lang.String getMethodName(ConstantPoolGen cpg)
- Returns:
- name of referenced method.
-
getReturnType
public Type getReturnType(ConstantPoolGen cpg)
- Returns:
- return type of referenced method.
-
getArgumentTypes
public Type[] getArgumentTypes(ConstantPoolGen cpg)
- Returns:
- argument types of referenced method.
-
initFromFile
protected void initFromFile(ByteSequence bytes, boolean wide) throws java.io.IOException
Read needed data (i.e., index) from file.- Overrides:
initFromFilein classCPInstruction- Parameters:
bytes- input streamwide- wide prefix?- Throws:
java.io.IOException- may be thrown if the implementation needs to read data from the file
-
getExceptions
public java.lang.Class<?>[] getExceptions()
- Specified by:
getExceptionsin interfaceExceptionThrower
-
accept
public void accept(Visitor v)
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:
acceptin classInstruction- Parameters:
v- Visitor object
-
-