Class InvokeInstruction

    • Constructor Detail

      • InvokeInstruction

        InvokeInstruction()
        Empty constructor needed for Instruction.readInstruction. Not to be used otherwise.
      • InvokeInstruction

        protected InvokeInstruction​(short opcode,
                                    int index)
        Parameters:
        index - to constant pool
    • Method Detail

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

        public Type[] getArgumentTypes​(ConstantPoolGen cpg)
        Returns:
        argument types of referenced method.
      • getClassName

        public java.lang.String getClassName​(ConstantPoolGen cpg)
        This overrides the deprecated version as we know here that the referenced class may legally be an array.
        Overrides:
        getClassName in class FieldOrMethod
        Returns:
        name of the referenced class/interface
        Throws:
        java.lang.IllegalArgumentException - if the referenced class is an array (this should not happen)
      • getMethodName

        public java.lang.String getMethodName​(ConstantPoolGen cpg)
        Returns:
        name of referenced method.
      • getReturnType

        public Type getReturnType​(ConstantPoolGen cpg)
        Returns:
        return type of referenced method.
      • 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 NEWARRAY instruction that creates an int[][].
        Specified by:
        getType in interface LoadClass
        Specified by:
        getType in interface TypedInstruction
        Overrides:
        getType in class CPInstruction
        Parameters:
        cpg - A ConstantPoolGen
        Returns:
        return type of referenced method.
        See Also:
        LoadClass.getLoadClassType(ConstantPoolGen)
      • 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
      • toString

        public java.lang.String toString​(ConstantPool cp)
        Overrides:
        toString in class CPInstruction
        Returns:
        mnemonic for instruction with symbolic references resolved