com.ibm.wala.ipa.callgraph
Class Entrypoint

java.lang.Object
  extended by com.ibm.wala.ipa.callgraph.Entrypoint
All Implemented Interfaces:
BytecodeConstants
Direct Known Subclasses:
ArgumentTypeEntrypoint, DefaultEntrypoint

public abstract class Entrypoint
extends java.lang.Object
implements BytecodeConstants

A representation of an entrypoint in the call graph.


Field Summary
protected  IMethod method
          The method to be called
 
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 Entrypoint(IMethod method)
           
protected Entrypoint(MethodReference method, IClassHierarchy cha)
           
 
Method Summary
 SSAAbstractInvokeInstruction addCall(AbstractRootMethod m)
          Add a call to this entrypoint from the fake root method
 boolean equals(java.lang.Object obj)
           
 IMethod getMethod()
           
abstract  int getNumberOfParameters()
           
abstract  TypeReference[] getParameterTypes(int i)
           
 int hashCode()
           
protected  int makeArgument(AbstractRootMethod m, int i)
          Add allocation statements to the fake root method for each possible value of parameter i.
 CallSiteReference makeSite(int programCounter)
          Create a call site reference representing a call to this entrypoint
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

method

protected final IMethod method
The method to be called

Constructor Detail

Entrypoint

protected Entrypoint(IMethod method)
Parameters:
method - the method to be called for this entrypoint

Entrypoint

protected Entrypoint(MethodReference method,
                     IClassHierarchy cha)
Method Detail

makeSite

public CallSiteReference makeSite(int programCounter)
Create a call site reference representing a call to this entrypoint

Parameters:
programCounter - the bytecode index of the synthesize call
Returns:
the call site reference, or null if failed to find entrypoint

makeArgument

protected int makeArgument(AbstractRootMethod m,
                           int i)
Add allocation statements to the fake root method for each possible value of parameter i. If necessary, add a phi to combine the values.

Returns:
value number holding the parameter to the call; -1 if there was some error

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object

addCall

public SSAAbstractInvokeInstruction addCall(AbstractRootMethod m)
Add a call to this entrypoint from the fake root method

Parameters:
m - the Fake Root Method
Returns:
the call instruction added, or null if the operation fails

getMethod

public IMethod getMethod()
Returns:
the method this call invokes

getParameterTypes

public abstract TypeReference[] getParameterTypes(int i)
Returns:
types to allocate for parameter i; for non-static methods, parameter 0 is "this"

getNumberOfParameters

public abstract int getNumberOfParameters()
Returns:
number of parameters to this call, including "this" for non-statics

toString

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

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object