Package serp.bytecode

# Class MethodInstruction

java.lang.Object
serp.bytecode.Instruction
serp.bytecode.MethodInstruction

All Implemented Interfaces:
  `BCEntity`, `VisitAcceptor`

public class MethodInstruction extends Instruction
An instruction that invokes a method.

Author:
  Abe White

## Method Summary

Modifier and Type
Method
Description
`void`
`acceptVisit(BCVisitor visit)`
Accept a visit from a `BCVisitor`, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this one.
`boolean`
`equalsInstruction(Instruction other)`
MethodInstructions are equal if the method they reference is the same, or if the method of either is unset.
`int`
`getLogicalStackChange()`
Return the logical number of stack positions changed by this instruction.
`BCMethod`
`getMethod()`
Return the method this instruction operates on, or null if not set.
`BCClass`
`getMethodDeclarerBC()`
Return the declaring type of the method this instruction operates on, or null if not set.
`String`
`getMethodDeclarerName()`
Return the declaring type of the method this instruction operates on, or null if not set.
`Class`
`getMethodDeclarerType()`
Return the declaring type of the method this instruction operates on, or null if not set.
`int`
`getMethodIndex()`
Return the index in the class `ConstantPool` of the `ComplexEntry` describing the method to operate on.
`String`
`getMethodName()`
Return the name of the method this instruction operates on, or null if not set.
`BCClass[]`
`getMethodParamBCs()`
Return the param types of the method this instruction operates on, or empty array if none.
`String[]`
`getMethodParamNames()`
Return the param types of the method this instruction operates on, or empty array if none.
`Class[]`
`getMethodParamTypes()`
Return the param types of the method this instruction operates on, or empty array if none.
`BCClass`
`getMethodReturnBC()`
Return the return type of the method this instruction operates on, or null if not set.
`String`
`getMethodReturnName()`
Return the return type of the method this instruction operates on, or null if not set.
`Class`
`getMethodReturnType()`
Return the return type of the method this instruction operates on, or null if not set.
`int`
`getStackChange()`
Return the number of stack positions this instruction pushes or pops during its execution.
`MethodInstruction`
`setMethod(Class dec, String name, Class returnType, Class[] params)`
Set the method this instruction operates on.
`MethodInstruction`
`setMethod(Constructor method)`
Set the method this instruction operates on.
`MethodInstruction`
`setMethod(Method method)`
Set the method this instruction operates on.
`MethodInstruction`
`setMethod(String name, Class returnType, Class[] params)`
Set the method this instruction operates on, for methods that are declared by the current class.
`MethodInstruction`
`setMethod(String name, String returnType, String[] params)`
Set the method this instruction operates on, for methods that are declared by the current class.
`MethodInstruction`
`setMethod(String dec, String name, String returnType, String[] params)`
Set the method this instruction operates on.
`MethodInstruction`
`setMethod(String name, BCClass returnType, BCClass[] params)`
Set the method this instruction operates on, for methods that are declared by the current class.
`MethodInstruction`
`setMethod(BCClass dec, String name, BCClass returnType, BCClass[] params)`
Set the method this instruction operates on.
`MethodInstruction`
`setMethod(BCMethod method)`
Set the method this instruction operates on.
`MethodInstruction`
`setMethodDeclarer(Class type)`
Set the declaring type of the method this instruction operates on.
`MethodInstruction`
`setMethodDeclarer(String type)`
Set the declaring type of the method this instruction operates on.
`MethodInstruction`
`setMethodDeclarer(BCClass type)`
Set the declaring type of the method this instruction operates on.
`MethodInstruction`
`setMethodIndex(int index)`
Set the index in the class `ConstantPool` of the `ComplexEntry` describing the method to operate on.
`MethodInstruction`
`setMethodName(String name)`
Set the name of the method this instruction operates on.
`void`
`setMethodParams(Class[] types)`
Set the param types of the method this instruction operates on.
`MethodInstruction`
`setMethodParams(String[] types)`
Set the param types of the method this instruction operates on.
`void`
`setMethodParams(BCClass[] types)`
Set the param types of the method this instruction operates on.
`MethodInstruction`
`setMethodReturn(Class type)`
Set the return type of the method this instruction operates on.
`MethodInstruction`
`setMethodReturn(String type)`
Set the return type of the method this instruction operates on.
`MethodInstruction`
`setMethodReturn(BCClass type)`
Set the return type of the method this instruction operates on.

### Methods inherited from class serp.bytecode.Instruction

`getByteIndex, getClassLoader, getCode, getLineNumber, getName, getOpcode, getPool, getProject, isValid`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### getLogicalStackChange

public int getLogicalStackChange()
Description copied from class: `Instruction`
Return the logical number of stack positions changed by this instruction. In other words, ignore weirdness with longs and doubles taking two stack positions.

Overrides:
  `getLogicalStackChange` in class `Instruction`

### getStackChange

public int getStackChange()
Description copied from class: `Instruction`
Return the number of stack positions this instruction pushes or pops during its execution.

Overrides:
  `getStackChange` in class `Instruction`
Returns:
  0 if the stack is not affected by this instruction, a positive number if it pushes onto the stack, and a negative number if it pops from the stack

### getMethodIndex

public int getMethodIndex()
Return the index in the class `ConstantPool` of the `ComplexEntry` describing the method to operate on.

### setMethodIndex

public MethodInstruction setMethodIndex(int index)
Set the index in the class `ConstantPool` of the `ComplexEntry` describing the method to operate on.

Returns:
  this instruction, for method chaining

### getMethod

public BCMethod getMethod()
Return the method this instruction operates on, or null if not set.

### setMethod

public MethodInstruction setMethod(BCMethod method)
Set the method this instruction operates on.

Returns:
  this instruction, for method chaining

### setMethod

public MethodInstruction setMethod(Method method)
Set the method this instruction operates on.

Returns:
  this instruction, for method chaining

### setMethod

public MethodInstruction setMethod(Constructor method)
Set the method this instruction operates on.

Returns:
  this instruction, for method chaining

### setMethod

public MethodInstruction setMethod(String dec, String name, String returnType, String[] params)
Set the method this instruction operates on.

Parameters:
  `dec` - the full class name of the method's declaring class
  `name` - the method name
  `returnType` - the full class name of the method return type
  `param` - the full class names of the method param types
Returns:
  this instruction, for method chaining

### setMethod

public MethodInstruction setMethod(String name, String returnType, String[] params)
Set the method this instruction operates on, for methods that are declared by the current class.

Parameters:
  `name` - the method name
  `returnType` - the full class name of the method return type
  `param` - the full class names of the method param types
Returns:
  this instruction, for method chaining

### setMethod

public MethodInstruction setMethod(Class dec, String name, Class returnType, Class[] params)
Set the method this instruction operates on.

Parameters:
  `dec` - the method's declaring class
  `name` - the method name
  `returnType` - the class of the method return type
  `param` - the class of the method param types
Returns:
  this instruction, for method chaining

### setMethod

public MethodInstruction setMethod(String name, Class returnType, Class[] params)
Set the method this instruction operates on, for methods that are declared by the current class.

Parameters:
  `name` - the method name
  `returnType` - the class of the method return type
  `param` - the class of the method param types
Returns:
  this instruction, for method chaining

### setMethod

public MethodInstruction setMethod(BCClass dec, String name, BCClass returnType, BCClass[] params)
Set the method this instruction operates on.

Parameters:
  `dec` - the method's declaring class
  `name` - the method name
  `returnType` - the class of the method return type
  `param` - the class of the method param types
Returns:
  this instruction, for method chaining

### setMethod

public MethodInstruction setMethod(String name, BCClass returnType, BCClass[] params)
Set the method this instruction operates on, for methods that are declared by the current class.

Parameters:
  `name` - the method name
  `returnType` - the class of the method return type
  `param` - the class of the method param types
Returns:
  this instruction, for method chaining

### getMethodName

public String getMethodName()
Return the name of the method this instruction operates on, or null if not set.

### setMethodName

public MethodInstruction setMethodName(String name)
Set the name of the method this instruction operates on.

Returns:
  this instruction, for method chaining

### getMethodReturnName

public String getMethodReturnName()
Return the return type of the method this instruction operates on, or null if not set.

### getMethodReturnType

public Class getMethodReturnType()
Return the return type of the method this instruction operates on, or null if not set.

### getMethodReturnBC

public BCClass getMethodReturnBC()
Return the return type of the method this instruction operates on, or null if not set.

### setMethodReturn

public MethodInstruction setMethodReturn(String type)
Set the return type of the method this instruction operates on.

Returns:
  this instruction, for method chaining

### setMethodReturn

public MethodInstruction setMethodReturn(Class type)
Set the return type of the method this instruction operates on.

Returns:
  this instruction, for method chaining

### setMethodReturn

public MethodInstruction setMethodReturn(BCClass type)
Set the return type of the method this instruction operates on.

Returns:
  this instruction, for method chaining

### getMethodParamNames

public String[] getMethodParamNames()
Return the param types of the method this instruction operates on, or empty array if none.

### getMethodParamTypes

public Class[] getMethodParamTypes()
Return the param types of the method this instruction operates on, or empty array if none.

### getMethodParamBCs

public BCClass[] getMethodParamBCs()
Return the param types of the method this instruction operates on, or empty array if none.

### setMethodParams

public MethodInstruction setMethodParams(String[] types)
Set the param types of the method this instruction operates on.

Returns:
  this instruction, for method chaining

### setMethodParams

public void setMethodParams(Class[] types)
Set the param types of the method this instruction operates on.

### setMethodParams

public void setMethodParams(BCClass[] types)
Set the param types of the method this instruction operates on.

### getMethodDeclarerName

public String getMethodDeclarerName()
Return the declaring type of the method this instruction operates on, or null if not set.

### getMethodDeclarerType

public Class getMethodDeclarerType()
Return the declaring type of the method this instruction operates on, or null if not set.

### getMethodDeclarerBC

public BCClass getMethodDeclarerBC()
Return the declaring type of the method this instruction operates on, or null if not set.

### setMethodDeclarer

public MethodInstruction setMethodDeclarer(String type)
Set the declaring type of the method this instruction operates on.

Returns:
  this instruction, for method chaining

### setMethodDeclarer

public MethodInstruction setMethodDeclarer(Class type)
Set the declaring type of the method this instruction operates on.

Returns:
  this instruction, for method chaining

### setMethodDeclarer

public MethodInstruction setMethodDeclarer(BCClass type)
Set the declaring type of the method this instruction operates on.

Returns:
  this instruction, for method chaining

### equalsInstruction

public boolean equalsInstruction(Instruction other)
MethodInstructions are equal if the method they reference is the same, or if the method of either is unset.

Overrides:
  `equalsInstruction` in class `Instruction`

### acceptVisit

public void acceptVisit(BCVisitor visit)
Description copied from interface: `VisitAcceptor`
Accept a visit from a `BCVisitor`, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this one.

Specified by:
  `acceptVisit` in interface `VisitAcceptor`
Overrides:
  `acceptVisit` in class `Instruction`