Class INVOKEDYNAMIC

All Implemented Interfaces:
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:
  • Constructor Details

  • Method Details

    • 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:
      accept in class Instruction
      Parameters:
      v - Visitor object.
    • dump

      public void dump(DataOutputStream out) throws IOException
      Dumps instruction as byte code to stream out.
      Overrides:
      dump in class CPInstruction
      Parameters:
      out - Output stream.
      Throws:
      IOException - Thrown when an I/O exception of some sort has occurred.
    • getClassName

      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:
      getClassName in class InvokeInstruction
      Parameters:
      cpg - the constant pool generator.
      Returns:
      name of the referenced class/interface.
    • getExceptions

      public Class<?>[] getExceptions()
      Description copied from interface: ExceptionThrower
      Gets the exceptions that may be thrown by this instruction.
      Returns:
      the exceptions that may be thrown by this instruction.
    • getReferenceType

      Since InvokeDynamic doesn't refer to a reference type, just return Object, as that is the only type we can say for sure the reference will be.
      Overrides:
      getReferenceType in class FieldOrMethod
      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 IOException
      Reads needed data (that is, index) from file.
      Overrides:
      initFromFile in class CPInstruction
      Parameters:
      bytes - input stream.
      wide - wide prefix?.
      Throws:
      IOException - may be thrown if the implementation needs to read data from the file