com.ibm.wala.classLoader
Class CallSiteReference

java.lang.Object
  extended by com.ibm.wala.classLoader.ProgramCounter
      extended by com.ibm.wala.classLoader.CallSiteReference
All Implemented Interfaces:
ContextItem, BytecodeConstants
Direct Known Subclasses:
JSCallSiteReference

public abstract class CallSiteReference
extends ProgramCounter
implements BytecodeConstants, ContextItem

Simple object that represents a static call site (ie., an invoke instruction in the bytecode) Note that the identity of a call site reference depends on two things: the program counter, and the containing IR. Thus, it suffices to defines equals() and hashCode() from ProgramCounter, since this class does not maintain a pointer to the containing IR (or CGNode) anyway. If using a hashtable of CallSiteReference from different IRs, you probably want to use a wrapper which also holds a pointer to the governing CGNode.


Field Summary
 
Fields inherited from class com.ibm.wala.classLoader.ProgramCounter
NO_SOURCE_LINE_NUMBER
 
Fields inherited from interface com.ibm.wala.shrikeBT.BytecodeConstants
JBC_aaload, JBC_aastore, JBC_aconst_null, JBC_aload, JBC_aload_0, JBC_aload_1, JBC_aload_2, JBC_aload_3, JBC_anewarray, JBC_areturn, JBC_arraylength, JBC_astore, JBC_astore_0, JBC_astore_1, JBC_astore_2, JBC_astore_3, JBC_athrow, JBC_baload, JBC_bastore, JBC_bipush, JBC_caload, JBC_castore, JBC_checkcast, JBC_d2f, JBC_d2i, JBC_d2l, JBC_dadd, JBC_daload, JBC_dastore, JBC_dcmpg, JBC_dcmpl, JBC_dconst_0, JBC_dconst_1, JBC_ddiv, JBC_dload, JBC_dload_0, JBC_dload_1, JBC_dload_2, JBC_dload_3, JBC_dmul, JBC_dneg, JBC_drem, JBC_dreturn, JBC_dstore, JBC_dstore_0, JBC_dstore_1, JBC_dstore_2, JBC_dstore_3, JBC_dsub, JBC_dup, JBC_dup_x1, JBC_dup_x2, JBC_dup2, JBC_dup2_x1, JBC_dup2_x2, JBC_f2d, JBC_f2i, JBC_f2l, JBC_fadd, JBC_faload, JBC_fastore, JBC_fcmpg, JBC_fcmpl, JBC_fconst_0, JBC_fconst_1, JBC_fconst_2, JBC_fdiv, JBC_fload, JBC_fload_0, JBC_fload_1, JBC_fload_2, JBC_fload_3, JBC_fmul, JBC_fneg, JBC_frem, JBC_freturn, JBC_fstore, JBC_fstore_0, JBC_fstore_1, JBC_fstore_2, JBC_fstore_3, JBC_fsub, JBC_getfield, JBC_getstatic, JBC_goto, JBC_goto_w, JBC_i2d, JBC_i2f, JBC_i2l, JBC_iadd, JBC_iaload, JBC_iand, JBC_iastore, JBC_iconst_0, JBC_iconst_1, JBC_iconst_2, JBC_iconst_3, JBC_iconst_4, JBC_iconst_5, JBC_iconst_m1, JBC_idiv, JBC_if_acmpeq, JBC_if_acmpne, JBC_if_icmpeq, JBC_if_icmpge, JBC_if_icmpgt, JBC_if_icmple, JBC_if_icmplt, JBC_if_icmpne, JBC_ifeq, JBC_ifge, JBC_ifgt, JBC_ifle, JBC_iflt, JBC_ifne, JBC_ifnonnull, JBC_ifnull, JBC_iinc, JBC_iload, JBC_iload_0, JBC_iload_1, JBC_iload_2, JBC_iload_3, JBC_impdep1, JBC_impdep2, JBC_imul, JBC_ineg, JBC_instanceof, JBC_int2byte, JBC_int2char, JBC_int2short, JBC_invokeinterface, JBC_invokespecial, JBC_invokestatic, JBC_invokevirtual, JBC_ior, JBC_irem, JBC_ireturn, JBC_ishl, JBC_ishr, JBC_istore, JBC_istore_0, JBC_istore_1, JBC_istore_2, JBC_istore_3, JBC_isub, JBC_iushr, JBC_ixor, JBC_jsr, JBC_jsr_w, JBC_l2d, JBC_l2f, JBC_l2i, JBC_ladd, JBC_laload, JBC_land, JBC_lastore, JBC_lcmp, JBC_lconst_0, JBC_lconst_1, JBC_ldc, JBC_ldc_w, JBC_ldc2_w, JBC_ldiv, JBC_length, JBC_lload, JBC_lload_0, JBC_lload_1, JBC_lload_2, JBC_lload_3, JBC_lmul, JBC_lneg, JBC_lookupswitch, JBC_lor, JBC_lrem, JBC_lreturn, JBC_lshl, JBC_lshr, JBC_lstore, JBC_lstore_0, JBC_lstore_1, JBC_lstore_2, JBC_lstore_3, JBC_lsub, JBC_lushr, JBC_lxor, JBC_monitorenter, JBC_monitorexit, JBC_multianewarray, JBC_name, JBC_new, JBC_newarray, JBC_nop, JBC_pop, JBC_pop2, JBC_putfield, JBC_putstatic, JBC_ret, JBC_return, JBC_saload, JBC_sastore, JBC_sipush, JBC_swap, JBC_tableswitch, JBC_wide, JBC_xxxunusedxxx
 
Constructor Summary
protected CallSiteReference(int programCounter, MethodReference declaredTarget)
           
 
Method Summary
 MethodReference getDeclaredTarget()
          Return the Method that this call site calls.
abstract  IInvokeInstruction.IDispatch getInvocationCode()
          Return one of INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, or INVOKEINTERFACE
 java.lang.String getInvocationString()
           
protected  java.lang.String getInvocationString(IInvokeInstruction.IDispatch invocationCode)
          Method getInvocationString.
 boolean isDispatch()
           
 boolean isFixed()
           
 boolean isInterface()
          Is this an invokeinterface call site?
 boolean isSpecial()
          Is this an invokespecial call site?
 boolean isStatic()
          Is this an invokestatic call site?
 boolean isVirtual()
          Is this an invokevirtual call site?
static CallSiteReference make(int programCounter, MethodReference declaredTarget, IInvokeInstruction.IDispatch invocationCode)
          This factory method plays a little game to avoid storing the invocation code in the object; this saves a byte (probably actually a whole word) in each created object.
 java.lang.String toString()
           
 
Methods inherited from class com.ibm.wala.classLoader.ProgramCounter
equals, getProgramCounter, hashCode
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CallSiteReference

protected CallSiteReference(int programCounter,
                            MethodReference declaredTarget)
Parameters:
programCounter -
declaredTarget -
Method Detail

make

public static CallSiteReference make(int programCounter,
                                     MethodReference declaredTarget,
                                     IInvokeInstruction.IDispatch invocationCode)
This factory method plays a little game to avoid storing the invocation code in the object; this saves a byte (probably actually a whole word) in each created object. TODO: Consider canonicalization?


getDeclaredTarget

public MethodReference getDeclaredTarget()
Return the Method that this call site calls. This represents the method declared in the invoke instruction only.


getInvocationCode

public abstract IInvokeInstruction.IDispatch getInvocationCode()
Return one of INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, or INVOKEINTERFACE


toString

public java.lang.String toString()
Overrides:
toString in class ProgramCounter
See Also:
Object.toString()

getInvocationString

protected java.lang.String getInvocationString(IInvokeInstruction.IDispatch invocationCode)
Method getInvocationString.

Parameters:
invocationCode -
Returns:
String

getInvocationString

public java.lang.String getInvocationString()

isInterface

public final boolean isInterface()
Is this an invokeinterface call site?


isVirtual

public final boolean isVirtual()
Is this an invokevirtual call site?


isSpecial

public final boolean isSpecial()
Is this an invokespecial call site?


isStatic

public boolean isStatic()
Is this an invokestatic call site?


isFixed

public boolean isFixed()

isDispatch

public boolean isDispatch()