public abstract class CallSiteReference extends ProgramCounter implements com.ibm.wala.shrikeBT.BytecodeConstants, ContextItem
Note that the identity of a call site reference depends on two things: the program counter,
and the containing IR. Thus, it suffices to define 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.
ContextItem.Value<T>NO_SOURCE_LINE_NUMBERJBC_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| Modifier | Constructor and Description |
|---|---|
protected |
CallSiteReference(int programCounter,
MethodReference declaredTarget) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
equals(java.lang.Object obj)
A Program Counter value is enough to uniquely identify a call site reference within a method.
|
MethodReference |
getDeclaredTarget()
Return the Method that this call site calls.
|
abstract com.ibm.wala.shrikeBT.IInvokeInstruction.IDispatch |
getInvocationCode()
Return one of INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, or INVOKEINTERFACE
|
java.lang.String |
getInvocationString() |
protected java.lang.String |
getInvocationString(com.ibm.wala.shrikeBT.IInvokeInstruction.IDispatch invocationCode) |
int |
hashCode() |
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,
com.ibm.wala.shrikeBT.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() |
getProgramCounterprotected CallSiteReference(int programCounter,
MethodReference declaredTarget)
programCounter - Index into bytecode describing this instructiondeclaredTarget - The method target as declared at the call sitepublic int hashCode()
hashCode in class ProgramCounterpublic boolean equals(java.lang.Object obj)
ProgramCounterNote: must use these objects with extreme care; this only works if you never mix ProgramLocations from different methods in the same collection.
equals in class ProgramCounterpublic static CallSiteReference make(int programCounter, MethodReference declaredTarget, com.ibm.wala.shrikeBT.IInvokeInstruction.IDispatch invocationCode)
TODO: Consider canonicalization?
public MethodReference getDeclaredTarget()
public abstract com.ibm.wala.shrikeBT.IInvokeInstruction.IDispatch getInvocationCode()
public java.lang.String toString()
toString in class ProgramCounterprotected java.lang.String getInvocationString(com.ibm.wala.shrikeBT.IInvokeInstruction.IDispatch invocationCode)
public java.lang.String getInvocationString()
public final boolean isInterface()
public final boolean isVirtual()
public final boolean isSpecial()
public boolean isStatic()
public boolean isFixed()
public boolean isDispatch()