Package org.apache.bcel.generic
Class InvokeInstruction
- java.lang.Object
-
- org.apache.bcel.generic.Instruction
-
- org.apache.bcel.generic.CPInstruction
-
- org.apache.bcel.generic.FieldOrMethod
-
- org.apache.bcel.generic.InvokeInstruction
-
- All Implemented Interfaces:
java.lang.Cloneable,ExceptionThrower,IndexedInstruction,LoadClass,StackConsumer,StackProducer,TypedInstruction
- Direct Known Subclasses:
INVOKEDYNAMIC,INVOKEINTERFACE,INVOKESPECIAL,INVOKESTATIC,INVOKEVIRTUAL
public abstract class InvokeInstruction extends FieldOrMethod implements ExceptionThrower, StackConsumer, StackProducer
Super class for the INVOKExxx family of instructions.
-
-
Field Summary
-
Fields inherited from class org.apache.bcel.generic.CPInstruction
index
-
Fields inherited from class org.apache.bcel.generic.Instruction
EMPTY_ARRAY, length, opcode
-
-
Constructor Summary
Constructors Modifier Constructor Description (package private)InvokeInstruction()Empty constructor needed for Instruction.readInstruction.protectedInvokeInstruction(short opcode, int index)Constructs an InvokeInstruction.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intconsumeStack(ConstantPoolGen cpg)Also works for instructions whose stack effect depends on the constant pool entry they reference.Type[]getArgumentTypes(ConstantPoolGen cpg)Gets the argument types of referenced method.java.lang.StringgetClassName(ConstantPoolGen cpg)This overrides the deprecated version as we know here that the referenced class may legally be an array.java.lang.StringgetMethodName(ConstantPoolGen cpg)Gets the name of referenced method.TypegetReturnType(ConstantPoolGen cpg)Gets the return type of referenced method.TypegetType(ConstantPoolGen cpg)Gets the return type of referenced method.intproduceStack(ConstantPoolGen cpg)Also works for instructions whose stack effect depends on the constant pool entry they reference.java.lang.StringtoString(ConstantPool cp)Gets the mnemonic for instruction with symbolic references resolved.-
Methods inherited from class org.apache.bcel.generic.FieldOrMethod
getClassType, getLoadClassType, getName, getReferenceType, getSignature
-
Methods inherited from class org.apache.bcel.generic.CPInstruction
dump, getIndex, initFromFile, setIndex, toString
-
Methods inherited from class org.apache.bcel.generic.Instruction
accept, copy, dispose, equals, getComparator, getLength, getName, getOpcode, hashCode, isValidByte, isValidShort, readInstruction, setComparator, setLength, setOpcode, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.bcel.generic.ExceptionThrower
getExceptions
-
-
-
-
Constructor Detail
-
InvokeInstruction
InvokeInstruction()
Empty constructor needed for Instruction.readInstruction. Not to be used otherwise.
-
InvokeInstruction
protected InvokeInstruction(short opcode, int index)Constructs an InvokeInstruction.- Parameters:
opcode- the opcode.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:
consumeStackin interfaceStackConsumer- Overrides:
consumeStackin classInstruction- Parameters:
cpg- the constant pool generator.- Returns:
- Number of words consumed from stack by this instruction.
-
getArgumentTypes
public Type[] getArgumentTypes(ConstantPoolGen cpg)
Gets the argument types of referenced method.- Parameters:
cpg- the constant pool generator.- 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:
getClassNamein classFieldOrMethod- Parameters:
cpg- the constant pool generator.- 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)
Gets the name of referenced method.- Parameters:
cpg- the constant pool generator.- Returns:
- name of referenced method.
-
getReturnType
public Type getReturnType(ConstantPoolGen cpg)
Gets the return type of referenced method.- Parameters:
cpg- the constant pool generator.- Returns:
- return type of referenced method.
-
getType
public Type getType(ConstantPoolGen cpg)
Gets the return type of referenced method.- Specified by:
getTypein interfaceLoadClass- Specified by:
getTypein interfaceTypedInstruction- Overrides:
getTypein classCPInstruction- Parameters:
cpg- the constant pool generator.- 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:
produceStackin interfaceStackProducer- Overrides:
produceStackin classInstruction- Parameters:
cpg- the constant pool generator.- Returns:
- Number of words produced onto stack by this instruction.
-
toString
public java.lang.String toString(ConstantPool cp)
Description copied from class:InstructionGets the mnemonic for instruction with symbolic references resolved.- Overrides:
toStringin classCPInstruction- Parameters:
cp- the constant pool.- Returns:
- mnemonic for instruction with symbolic references resolved.
-
-