Class INVOKEDYNAMIC

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

    • INVOKEDYNAMIC

      public INVOKEDYNAMIC(short opcode, int index)
      Parameters:
      index - to constant pool
  • Method Details

    • toString

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

      public ConstantNameAndType getNameAndType(ConstantPoolGen cpg)
    • getSignature

      public String getSignature(ConstantPoolGen cpg)
      Overrides:
      getSignature in class FieldOrMethod
      Returns:
      signature of referenced method/field.
    • getName

      public String getName(ConstantPoolGen cpg)
      Overrides:
      getName in class FieldOrMethod
      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:
      consumeStack in interface StackConsumer
      Overrides:
      consumeStack in class Instruction
      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:
      produceStack in interface StackProducer
      Overrides:
      produceStack in class Instruction
      Returns:
      Number of words produced onto stack by this instruction
    • getType

      public Type getType(ConstantPoolGen cpg)
      Description copied from interface: LoadClass
      Returns 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:
      getType in interface LoadClass
      Specified by:
      getType in interface TypedInstruction
      Overrides:
      getType in class CPInstruction
      Returns:
      return type of referenced method.
      See Also:
    • getMethodName

      public 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 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
    • getExceptions

      public Class<?>[] getExceptions()
      Specified by:
      getExceptions in interface ExceptionThrower
    • 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