serp.bytecode
Class MethodInstruction

java.lang.Object
  extended by serp.bytecode.Instruction
      extended by serp.bytecode.MethodInstruction
All Implemented Interfaces:
BCEntity, VisitAcceptor

public class MethodInstruction
extends Instruction

An instruction that invokes a method.

Author:
Abe White

Method Summary
 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(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 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, BCClass returnType, BCClass[] params)
          Set the method this instruction operates on, for methods that are declared by the current class.
 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 setMethodDeclarer(BCClass type)
          Set the declaring type of 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 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(BCClass[] types)
          Set the param types 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.
 MethodInstruction setMethodReturn(BCClass type)
          Set the return type 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.
 
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 Detail

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


Copyright © 2002-2007. All Rights Reserved.