com.ibm.wala.j2ee
Class J2EEMethodTargetSelector

java.lang.Object
  extended by com.ibm.wala.j2ee.J2EEMethodTargetSelector
All Implemented Interfaces:
MethodTargetSelector, EJBConstants, BytecodeConstants

public class J2EEMethodTargetSelector
extends java.lang.Object
implements MethodTargetSelector, BytecodeConstants, EJBConstants

Special bypass rules divined from an EJB deployment descriptor. TODO: refactor this class using the delegation model


Field Summary
 
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
 
Fields inherited from interface com.ibm.wala.j2ee.EJBConstants
BytesMessageClass, CREATE, CreateExceptionClass, EJB_CREATE, EJB_POST_CREATE, EJB_REMOVE, ejbActivateAtom, ejbActivateSig, EJBExceptionClass, ejbLoadAtom, ejbLoadSig, ejbPassivateAtom, ejbPassivateSig, ejbRemoveAtom, ejbRemoveSig, ejbStoreAtom, ejbStoreSig, FinderExceptionClass, GET_EJB_HOME, GET_EJB_META_DATA, GET_HANDLE, GET_PRIMARY_KEY, IS_IDENTICAL, KnownMessages, MessageClass, ObjectMessageClass, ObjectNotFoundExceptionClass, onMessageAtom, onMessageBytes, onMessageDesc, RemoteExceptionClass, REMOVE, RemoveExceptionClass, setEntityContextAtom, setEntityContextSig, setSessionContextAtom, setSessionContextDescriptor, setSessionContextSig, StreamMessageClass, TextMessageClass, unsetEntityContextAtom, unsetEntityContextSig
 
Constructor Summary
J2EEMethodTargetSelector(AnalysisScope scope, MethodTargetSelector parent, DeploymentMetaData deployment, ClassHierarchy cha, ReceiverTypeInferenceCache typeInference, WarningSet warnings)
           
 
Method Summary
 IMethod getCalleeTarget(CGNode N, CallSiteReference site, IClass receiver)
          Given a calling node, a call site and (optionally) a dispatch type, return the target method to be called.
 boolean mightReturnSyntheticMethod(CGNode caller, CallSiteReference site)
           
 boolean mightReturnSyntheticMethod(MethodReference declaredTarget)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

J2EEMethodTargetSelector

public J2EEMethodTargetSelector(AnalysisScope scope,
                                MethodTargetSelector parent,
                                DeploymentMetaData deployment,
                                ClassHierarchy cha,
                                ReceiverTypeInferenceCache typeInference,
                                WarningSet warnings)
Method Detail

getCalleeTarget

public IMethod getCalleeTarget(CGNode N,
                               CallSiteReference site,
                               IClass receiver)
Description copied from interface: MethodTargetSelector
Given a calling node, a call site and (optionally) a dispatch type, return the target method to be called.

Specified by:
getCalleeTarget in interface MethodTargetSelector
Parameters:
N - the GCNode in the call graph containg the call
site - the call site reference of the call site
receiver - the type of the target object or null
Returns:
the method to be called.

mightReturnSyntheticMethod

public boolean mightReturnSyntheticMethod(CGNode caller,
                                          CallSiteReference site)
Specified by:
mightReturnSyntheticMethod in interface MethodTargetSelector
Returns:
true if there's a possibility that getCalleeTarget here might return a synthetic method.

mightReturnSyntheticMethod

public boolean mightReturnSyntheticMethod(MethodReference declaredTarget)
Specified by:
mightReturnSyntheticMethod in interface MethodTargetSelector
Returns:
true if there's a possibility that getCalleeTarget on this declared tag3et