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

    • INVOKEDYNAMIC

      public INVOKEDYNAMIC(int index)
  • Method Details

    • 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
    • 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
    • toString

      public String toString(ConstantPool cp)
      Overrides:
      toString in class InvokeInstruction
      Returns:
      mnemonic for instruction with symbolic references resolved
    • getExceptions

      public Class<?>[] getExceptions()
    • 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
    • getClassName

      public String getClassName(ConstantPoolGen cpg)
      Override the parent method because our classname is held elsewhere.
      Overrides:
      getClassName in class InvokeInstruction
      Returns:
      name of the referenced class/interface
    • getReferenceType

      public ReferenceType getReferenceType(ConstantPoolGen cpg)
      Since InvokeDynamic doesn't refer to a reference type, just return java.lang.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 java.lang.Object
      Since:
      6.1