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
length, opcode
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
InvokeInstruction(short opcode, int index)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
consumeStack(ConstantPoolGen cpg)
Also works for instructions whose stack effect depends on the constant pool entry they reference.Type[]
getArgumentTypes(ConstantPoolGen cpg)
java.lang.String
getClassName(ConstantPoolGen cpg)
This overrides the deprecated version as we know here that the referenced class may legally be an array.java.lang.String
getMethodName(ConstantPoolGen cpg)
Type
getReturnType(ConstantPoolGen cpg)
Type
getType(ConstantPoolGen cpg)
Returns the type associated with this instruction.int
produceStack(ConstantPoolGen cpg)
Also works for instructions whose stack effect depends on the constant pool entry they reference.java.lang.String
toString(ConstantPool cp)
-
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, equals, getComparator, getLength, getName, getOpcode, hashCode, isValidByte, isValidShort, readInstruction, setComparator, 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
-
-
-
-
Method Detail
-
toString
public java.lang.String toString(ConstantPool cp)
- Overrides:
toString
in classCPInstruction
- Returns:
- mnemonic for instruction with symbolic references resolved
-
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 interfaceStackConsumer
- Overrides:
consumeStack
in classInstruction
- 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 interfaceStackProducer
- Overrides:
produceStack
in classInstruction
- Returns:
- Number of words produced onto stack by this instruction
-
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 classFieldOrMethod
- Returns:
- name of the referenced class/interface
- Throws:
java.lang.IllegalArgumentException
- if the referenced class is an array (this should not happen)
-
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 interfaceLoadClass
- Specified by:
getType
in interfaceTypedInstruction
- Overrides:
getType
in classCPInstruction
- Returns:
- return type of referenced method.
- See Also:
LoadClass.getLoadClassType(ConstantPoolGen)
-
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.
-
getArgumentTypes
public Type[] getArgumentTypes(ConstantPoolGen cpg)
- Returns:
- argument types of referenced method.
-
-