Class ShrikeCTMethod
java.lang.Object
com.ibm.wala.classLoader.ShrikeBTMethod
com.ibm.wala.classLoader.ShrikeCTMethod
- All Implemented Interfaces:
IBytecodeMethod<IInstruction>, IMember, IMethod, ContextItem, IClassHierarchyDweller, BytecodeConstants
A wrapper around a Shrike object that represents a method
-
Nested Class Summary
Nested classes/interfaces inherited from class ShrikeBTMethod
ShrikeBTMethod.BytecodeInfoNested classes/interfaces inherited from interface ContextItem
ContextItem.Value<T>Nested classes/interfaces inherited from interface IMethod
IMethod.SourcePosition -
Field Summary
Fields inherited from class ShrikeBTMethod
declaringClassFields inherited from interface 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_xxxunusedxxxModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final byte[]static final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final String[]Bytecode names (for debugging/printing)static final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final int -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionGet the annotations on this member, if anygetAnnotations(boolean runtimeInvisible) byte[]protected String[]getLocalVariableName(int bcIndex, int localNumber) intintprotected Stringprotected StringUNDER CONSTRUCTIONprotected intget annotations on parameters as an array of Collections, where each array element gives the annotations on the corresponding parameter.read the runtime-invisible annotations from the class fileread the runtime-visible annotations from the class filegetTypeAnnotationsAtCode(boolean runtimeInvisible) getTypeAnnotationsAtMethodInfo(boolean runtimeInvisible) booleanbooleanprotected DecoderFind the decoder object for this method, or create one if necessary.protected voidWalk through the bytecodes and collect trivial information.Methods inherited from class ShrikeBTMethod
clearCaches, equals, getArraysRead, getArraysWritten, getBCInfo, getBytecodeIndex, getBytecodeStream, getCallSites, getCastTypes, getCaughtExceptionTypes, getDeclaredExceptions, getDeclaringClass, getDescriptor, getFieldsRead, getFieldsWritten, getHandlers, getImplicitExceptionTypes, getInstructionIndex, getInstructions, getLineNumber, getName, getNewSites, getNumberOfParameters, getNumShrikeInstructions, getParameterSourcePosition, getParameterType, getReference, getSelector, getSignature, getSourcePosition, hashCode, hasMonitorOp, isAbstract, isAnnotation, isBridge, isClinit, isEnum, isFinal, isInit, isModule, isNative, isPrivate, isProtected, isPublic, isStatic, isSynchronized, isSynthetic, isWalaSynthetic, toStringModifier and TypeMethodDescriptionvoidClear all optional cached data associated with this class.booleanprotected ShrikeBTMethod.BytecodeInfointgetBytecodeIndex(int instructionIndex) Return the program counter (bytecode index) for a particular Shrike instruction index.Method getBytecodeStream.Clients should not modify the returned array.Return the object that represents the declaring class for this member.something like: (IILjava.lang.String;SLjava.sql.Date;)Ljava.lang.Integer;ExceptionHandler[][]intgetInstructionIndex(int bcIndex) Return the Shrike instruction index for a particular valid program counter (bytecode index), or -1 if the Shrike instruction index could not be determined.intgetLineNumber(int bcIndex) getName()intMethod getNumberOfParameters.intReturn the number of Shrike instructions for this method.getParameterSourcePosition(int paramNum) getParameterType(int i) By convention, for a non-static method, getParameterType(0) is the this pointersomething like: foo(Ljava/langString;)Ljava/lang/Class;something like: com.foo.bar.createLargeOrder(IILjava.lang.String;SLjava.sql.Date;)Ljava.lang.Integer;getSourcePosition(int bcIndex) inthashCode()booleanbooleanIs this method abstract?booleanbooleanisBridge()Is this method a bridge method? See JLS 3rd Edition 15.12.4.5booleanisClinit()Is this method a class initializer?booleanisEnum()booleanisFinal()Is this method final?booleanisInit()Is this method an object initializer?booleanisModule()booleanisNative()Is this method native?booleanIs this method private?booleanIs this method protected?booleanisPublic()Is this method public?booleanisStatic()Is this member static?booleanIs this method synchronized?booleanIs this method synthetic, i.e., compiler-generated (this refers to the synthetic flag in java/dex bytecode)booleanIs the implementation of this method a model generated by WALA? For compiler-generated synthetic methods, refer toIMethod.isSynthetic()toString()Methods inherited from interface IBytecodeMethod
getArraysWritten, getBytecodeIndex, getCallSites, getFieldsRead, getFieldsWritten, getHandlers, getInstructionIndex, getInstructions, getNewSitesModifier and TypeMethodDescriptionintgetBytecodeIndex(int i) thereExceptionHandler[][]intgetInstructionIndex(int bcIndex) Methods inherited from interface IMethod
getNumberOfDefaultParameters
-
Constructor Details
-
ShrikeCTMethod
-
-
Method Details
-
getBytecodes
public byte[] getBytecodes()- Specified by:
getBytecodesin classShrikeBTMethod
-
getMethodName
- Specified by:
getMethodNamein classShrikeBTMethod- Throws:
InvalidClassFileException
-
getMethodSignature
- Specified by:
getMethodSignaturein classShrikeBTMethod- Throws:
InvalidClassFileException
-
getModifiers
protected int getModifiers()- Specified by:
getModifiersin classShrikeBTMethod
-
makeDecoder
Description copied from class:ShrikeBTMethodFind the decoder object for this method, or create one if necessary.- Specified by:
makeDecoderin classShrikeBTMethod- Returns:
- null if the method has no code.
-
getMaxLocals
public int getMaxLocals()- Specified by:
getMaxLocalsin classShrikeBTMethod- See Also:
-
getMaxStackHeight
public int getMaxStackHeight()- Specified by:
getMaxStackHeightin classShrikeBTMethod
-
hasExceptionHandler
public boolean hasExceptionHandler()- Specified by:
hasExceptionHandlerin interfaceIMethod- Specified by:
hasExceptionHandlerin classShrikeBTMethod- Returns:
- true iff this method has at least one exception handler
-
getDeclaredExceptionTypeNames
- Specified by:
getDeclaredExceptionTypeNamesin classShrikeBTMethod- Throws:
InvalidClassFileException
-
processDebugInfo
protected void processDebugInfo(ShrikeBTMethod.BytecodeInfo bcInfo) throws InvalidClassFileException Description copied from class:ShrikeBTMethodWalk through the bytecodes and collect trivial information.- Specified by:
processDebugInfoin classShrikeBTMethod- Throws:
InvalidClassFileException
-
getLocalVariableName
- Specified by:
getLocalVariableNamein interfaceIMethod- Specified by:
getLocalVariableNamein classShrikeBTMethod- Returns:
- the (source code) name of the local variable of a given number at the specified program counter, or null if the information is not available.
-
hasLocalVariableTable
public boolean hasLocalVariableTable()- Specified by:
hasLocalVariableTablein interfaceIMethod- Specified by:
hasLocalVariableTablein classShrikeBTMethod- Returns:
- true iff the local variable table information for this method is available
-
getReturnType
- Specified by:
getReturnTypein interfaceIMethod- Returns:
- the name of the return type for this method
-
getClassHierarchy
- Specified by:
getClassHierarchyin interfaceIClassHierarchyDweller
-
getMethodTypeSignature
UNDER CONSTRUCTION- Throws:
InvalidClassFileException
-
getRuntimeInvisibleAnnotations
read the runtime-invisible annotations from the class file- Throws:
InvalidClassFileException
-
getRuntimeVisibleAnnotations
read the runtime-visible annotations from the class file- Throws:
InvalidClassFileException
-
getAnnotations
public Collection<Annotation> getAnnotations(boolean runtimeInvisible) throws InvalidClassFileException - Specified by:
getAnnotationsin interfaceIBytecodeMethod<IInstruction>- Throws:
InvalidClassFileException
-
getTypeAnnotationsAtMethodInfo
public Collection<TypeAnnotation> getTypeAnnotationsAtMethodInfo(boolean runtimeInvisible) throws InvalidClassFileException - Throws:
InvalidClassFileException
-
getTypeAnnotationsAtCode
public Collection<TypeAnnotation> getTypeAnnotationsAtCode(boolean runtimeInvisible) throws InvalidClassFileException - Throws:
InvalidClassFileException
-
getAnnotations
Description copied from interface:IMemberGet the annotations on this member, if any- Specified by:
getAnnotationsin interfaceIMember
-
getParameterAnnotations
get annotations on parameters as an array of Collections, where each array element gives the annotations on the corresponding parameter. Note that the 'this' parameter for an instance method cannot have annotations.- Specified by:
getParameterAnnotationsin interfaceIBytecodeMethod<IInstruction>
-
getIndirectionData
- Specified by:
getIndirectionDatain interfaceIBytecodeMethod<IInstruction>- Returns:
- information about any indirect uses of local variables
-