public abstract class ShrikeBTMethod extends java.lang.Object implements IMethod, com.ibm.wala.shrikeBT.BytecodeConstants
| Modifier and Type | Class and Description |
|---|---|
protected static class |
ShrikeBTMethod.BytecodeInfo |
IMethod.SourcePositionContextItem.Value<T>| Modifier and Type | Field and Description |
|---|---|
protected IClass |
declaringClass
A wrapper around the declaring class.
|
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 and Description |
|---|
ShrikeBTMethod(IClass klass) |
| Modifier and Type | Method and Description |
|---|---|
void |
clearCaches()
Clear all optional cached data associated with this class.
|
boolean |
equals(java.lang.Object obj) |
java.util.Iterator<TypeReference> |
getArraysRead() |
java.util.Iterator<TypeReference> |
getArraysWritten() |
protected ShrikeBTMethod.BytecodeInfo |
getBCInfo() |
int |
getBytecodeIndex(int instructionIndex)
Return the program counter (bytecode index) for a particular Shrike instruction index.
|
protected abstract byte[] |
getBytecodes() |
BytecodeStream |
getBytecodeStream()
Method getBytecodeStream.
|
java.util.Collection<CallSiteReference> |
getCallSites() |
java.util.Iterator<TypeReference> |
getCastTypes() |
java.util.Set<TypeReference> |
getCaughtExceptionTypes() |
TypeReference[] |
getDeclaredExceptions()
Clients should not modify the returned array.
|
protected abstract java.lang.String[] |
getDeclaredExceptionTypeNames() |
IClass |
getDeclaringClass()
Return the object that represents the declaring class for this member.
|
Descriptor |
getDescriptor()
something like: (IILjava.lang.String;SLjava.sql.Date;)Ljava.lang.Integer;
|
java.util.Iterator<FieldReference> |
getFieldsRead() |
java.util.Iterator<FieldReference> |
getFieldsWritten() |
com.ibm.wala.shrikeBT.ExceptionHandler[][] |
getHandlers() |
java.util.Collection<TypeReference> |
getImplicitExceptionTypes() |
int |
getInstructionIndex(int bcIndex)
Return the Shrike instruction index for a particular valid program counter (bytecode index), or
-1 if the Shrike instriction index could not be determined.
|
com.ibm.wala.shrikeBT.IInstruction[] |
getInstructions() |
int |
getLineNumber(int bcIndex) |
abstract java.lang.String |
getLocalVariableName(int bcIndex,
int localNumber) |
abstract int |
getMaxLocals() |
abstract int |
getMaxStackHeight() |
protected abstract java.lang.String |
getMethodName() |
protected abstract java.lang.String |
getMethodSignature() |
protected abstract int |
getModifiers() |
Atom |
getName() |
int |
getNumberOfParameters()
Method getNumberOfParameters.
|
int |
getNumShrikeInstructions()
Return the number of Shrike instructions for this method.
|
IMethod.SourcePosition |
getParameterSourcePosition(int paramNum) |
TypeReference |
getParameterType(int i)
By convention, for a non-static method, getParameterType(0) is the this pointer
|
MethodReference |
getReference() |
Selector |
getSelector()
something like: foo(Ljava/langString;)Ljava/lang/Class;
|
java.lang.String |
getSignature()
something like:
com.foo.bar.createLargeOrder(IILjava.lang.String;SLjava.sql.Date;)Ljava.lang.Integer;
|
IMethod.SourcePosition |
getSourcePosition(int bcIndex) |
abstract boolean |
hasExceptionHandler() |
int |
hashCode() |
abstract boolean |
hasLocalVariableTable() |
boolean |
hasMonitorOp() |
boolean |
isAbstract()
Is this method abstract?
|
boolean |
isBridge()
Is this method a bridge method? See JLS 3rd Edition 15.12.4.5
|
boolean |
isClinit()
Is this method a class initializer?
|
boolean |
isFinal()
Is this method final?
|
boolean |
isInit()
Is this method an object initializer?
|
boolean |
isNative()
Is this method native?
|
boolean |
isPrivate()
Is this method private?
|
boolean |
isProtected()
Is this method protected?
|
boolean |
isPublic()
Is this method public?
|
boolean |
isStatic()
Is this member static?
|
boolean |
isSynchronized()
Is this method synchronized?
|
boolean |
isSynthetic()
Is this method synthetic, i.e., compiler-generated (this refers to the synthetic flag in
java/dex bytecode)
|
boolean |
isWalaSynthetic()
Is the implementation of this method a model generated by WALA? For compiler-generated
synthetic methods, refer to
IMethod.isSynthetic() |
protected abstract com.ibm.wala.shrikeBT.Decoder |
makeDecoder()
Find the decoder object for this method, or create one if necessary.
|
protected abstract void |
processDebugInfo(ShrikeBTMethod.BytecodeInfo bcInfo)
Walk through the bytecodes and collect trivial information.
|
java.lang.String |
toString() |
clone, finalize, getClass, notify, notifyAll, wait, wait, waitgetNumberOfDefaultParameters, getReturnTypegetAnnotationsgetClassHierarchyprotected final IClass declaringClass
public ShrikeBTMethod(IClass klass)
protected ShrikeBTMethod.BytecodeInfo getBCInfo() throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic int getBytecodeIndex(int instructionIndex)
throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic int getInstructionIndex(int bcIndex)
throws com.ibm.wala.shrikeCT.InvalidClassFileException
This ShrikeBTMethod must not be native.
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic int getNumShrikeInstructions()
throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic java.util.Collection<CallSiteReference> getCallSites() throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic java.util.Collection<TypeReference> getImplicitExceptionTypes() throws com.ibm.wala.shrikeCT.InvalidClassFileException
Set<TypeReference>, the exceptions that statements in this method
may throw,com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic boolean hasMonitorOp()
throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic java.util.Iterator<FieldReference> getFieldsWritten() throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic java.util.Iterator<FieldReference> getFieldsRead() throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic java.util.Iterator<TypeReference> getArraysRead() throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic java.util.Iterator<TypeReference> getArraysWritten() throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic java.util.Iterator<TypeReference> getCastTypes() throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionprotected abstract byte[] getBytecodes()
public BytecodeStream getBytecodeStream()
protected abstract java.lang.String getMethodName()
throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionprotected abstract java.lang.String getMethodSignature()
throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic MethodReference getReference()
getReference in interface IMethodpublic boolean isClinit()
IMethodpublic boolean isInit()
IMethodprotected abstract int getModifiers()
public boolean isNative()
IMethodpublic boolean isAbstract()
IMethodisAbstract in interface IMethodpublic boolean isPrivate()
IMethodpublic boolean isProtected()
IMethodisProtected in interface IMethodpublic boolean isPublic()
IMethodpublic boolean isFinal()
IMethodpublic boolean isBridge()
IMethodpublic boolean isSynchronized()
IMethodisSynchronized in interface IMethodpublic boolean isStatic()
IMemberpublic boolean isSynthetic()
IMethodisSynthetic in interface IMethodpublic boolean isWalaSynthetic()
IMethodIMethod.isSynthetic()isWalaSynthetic in interface IMethodpublic IClass getDeclaringClass()
IMembergetDeclaringClass in interface IMemberprotected abstract com.ibm.wala.shrikeBT.Decoder makeDecoder()
protected abstract void processDebugInfo(ShrikeBTMethod.BytecodeInfo bcInfo) throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic java.lang.String toString()
toString in class java.lang.Objectpublic boolean equals(java.lang.Object obj)
equals in class java.lang.Objectpublic int hashCode()
hashCode in class java.lang.Objectpublic abstract int getMaxLocals()
public abstract int getMaxStackHeight()
public Atom getName()
public Descriptor getDescriptor()
IMethodgetDescriptor in interface IMethodpublic com.ibm.wala.shrikeBT.IInstruction[] getInstructions()
throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic com.ibm.wala.shrikeBT.ExceptionHandler[][] getHandlers()
throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic TypeReference getParameterType(int i)
getParameterType in interface IMethodpublic int getNumberOfParameters()
getNumberOfParameters in interface IMethodpublic abstract boolean hasExceptionHandler()
hasExceptionHandler in interface IMethodpublic TypeReference[] getDeclaredExceptions() throws com.ibm.wala.shrikeCT.InvalidClassFileException
getDeclaredExceptions in interface IMethodcom.ibm.wala.shrikeCT.InvalidClassFileExceptionprotected abstract java.lang.String[] getDeclaredExceptionTypeNames()
throws com.ibm.wala.shrikeCT.InvalidClassFileException
com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic IMethod.SourcePosition getSourcePosition(int bcIndex) throws com.ibm.wala.shrikeCT.InvalidClassFileException
getSourcePosition in interface IMethodcom.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic IMethod.SourcePosition getParameterSourcePosition(int paramNum) throws com.ibm.wala.shrikeCT.InvalidClassFileException
getParameterSourcePosition in interface IMethodcom.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic int getLineNumber(int bcIndex)
getLineNumber in interface IMethodpublic java.util.Set<TypeReference> getCaughtExceptionTypes() throws com.ibm.wala.shrikeCT.InvalidClassFileException
Set<TypeReference>com.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic java.lang.String getSignature()
IMethodgetSignature in interface IMethodpublic Selector getSelector()
IMethodgetSelector in interface IMethodpublic abstract java.lang.String getLocalVariableName(int bcIndex,
int localNumber)
getLocalVariableName in interface IMethodpublic abstract boolean hasLocalVariableTable()
hasLocalVariableTable in interface IMethodpublic void clearCaches()