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, i.e., 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
      Dump 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
      Returns:
      name of the referenced class/interface
    • getExceptions

      public Class<?>[] getExceptions()
    • 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
      Read needed data (i.e., 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