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.InvokeInstruction
-
- org.apache.bcel.generic.INVOKEDYNAMIC
-
- All Implemented Interfaces:
java.lang.Cloneable,ExceptionThrower,IndexedInstruction,LoadClass,StackConsumer,StackProducer,TypedInstruction
public class INVOKEDYNAMIC extends InvokeInstruction
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.- Since:
- 6.0
- See Also:
- The invokedynamic instruction in The Java Virtual Machine Specification
-
-
Field Summary
-
Fields inherited from class org.apache.bcel.generic.CPInstruction
index
-
Fields inherited from class org.apache.bcel.generic.Instruction
EMPTY_ARRAY, length, opcode
-
-
Constructor Summary
Constructors Constructor Description INVOKEDYNAMIC()Empty constructor needed for Instruction.readInstruction.INVOKEDYNAMIC(int index)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(Visitor v)Call corresponding visitor method(s).voiddump(java.io.DataOutputStream out)Dumps instruction as byte code to stream out.java.lang.StringgetClassName(ConstantPoolGen cpg)Override the parent method because our class name is held elsewhere.java.lang.Class<?>[]getExceptions()Gets the exceptions that may be thrown by this instruction.ReferenceTypegetReferenceType(ConstantPoolGen cpg)Since InvokeDynamic doesn't refer to a reference type, just returnObject, as that is the only type we can say for sure the reference will be.protected voidinitFromFile(ByteSequence bytes, boolean wide)Reads needed data (that is, index) from file.-
Methods inherited from class org.apache.bcel.generic.InvokeInstruction
consumeStack, getArgumentTypes, getMethodName, getReturnType, getType, produceStack, toString
-
Methods inherited from class org.apache.bcel.generic.FieldOrMethod
getClassType, getLoadClassType, getName, getSignature
-
Methods inherited from class org.apache.bcel.generic.CPInstruction
getIndex, setIndex, toString
-
Methods inherited from class org.apache.bcel.generic.Instruction
copy, dispose, equals, getComparator, getLength, getName, getOpcode, hashCode, isValidByte, isValidShort, readInstruction, setComparator, setLength, setOpcode, toString
-
-
-
-
Method Detail
-
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, that is, the most specific visitXXX() call comes last.- Specified by:
acceptin classInstruction- Parameters:
v- Visitor object.
-
dump
public void dump(java.io.DataOutputStream out) throws java.io.IOExceptionDumps instruction as byte code to stream out.- Overrides:
dumpin classCPInstruction- Parameters:
out- Output stream.- Throws:
java.io.IOException- Thrown when an I/O exception of some sort has occurred.
-
getClassName
public java.lang.String getClassName(ConstantPoolGen cpg)
Override the parent method because our class name is held elsewhere. Note: Contrary to this method's name it does not return the class name of the invoke target; rather it returns the name of the method that will be used to invoke the Lambda method generated by this invoke dynamic instruction.- Overrides:
getClassNamein classInvokeInstruction- Parameters:
cpg- the constant pool generator.- Returns:
- name of the referenced class/interface.
-
getExceptions
public java.lang.Class<?>[] getExceptions()
Description copied from interface:ExceptionThrowerGets the exceptions that may be thrown by this instruction.- Returns:
- the exceptions that may be thrown by this instruction.
-
getReferenceType
public ReferenceType getReferenceType(ConstantPoolGen cpg)
Since InvokeDynamic doesn't refer to a reference type, just returnObject, as that is the only type we can say for sure the reference will be.- Overrides:
getReferenceTypein classFieldOrMethod- Parameters:
cpg- the ConstantPoolGen used to create the instruction.- Returns:
- an ObjectType for
Object. - Since:
- 6.1
-
initFromFile
protected void initFromFile(ByteSequence bytes, boolean wide) throws java.io.IOException
Reads needed data (that is, index) from file.- Overrides:
initFromFilein classCPInstruction- Parameters:
bytes- input stream.wide- wide prefix?.- Throws:
java.io.IOException- may be thrown if the implementation needs to read data from the file
-
-