public abstract class ShrikeBTMethod extends Object implements IMethod, 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(Object obj) |
Iterator |
getArraysRead() |
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.
|
Collection<CallSiteReference> |
getCallSites() |
Iterator |
getCastTypes() |
Set<TypeReference> |
getCaughtExceptionTypes() |
TypeReference[] |
getDeclaredExceptions()
Clients should not modify the returned array.
|
protected abstract 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;
|
Iterator<FieldReference> |
getFieldsRead() |
Iterator<FieldReference> |
getFieldsWritten() |
ExceptionHandler[][] |
getHandlers() |
Collection<TypeReference> |
getImplicitExceptionTypes() |
IInstruction[] |
getInstructions() |
int |
getLineNumber(int bcIndex)
END Custom change: precise bytecode positions
|
abstract String |
getLocalVariableName(int bcIndex,
int localNumber) |
abstract int |
getMaxLocals() |
abstract int |
getMaxStackHeight() |
protected abstract String |
getMethodName() |
protected abstract 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;
|
String |
getSignature()
something like: com.foo.bar.createLargeOrder(IILjava.lang.String;SLjava.sql.Date;)Ljava.lang.Integer;
|
IMethod.SourcePosition |
getSourcePosition(int bcIndex)
BEGIN Custom change: precise bytecode positions
|
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()
Did someone synthesize this method? (As opposed to reading it from a class file)
|
protected abstract 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.
|
String |
toString() |
clone, finalize, getClass, notify, notifyAll, wait, wait, waitgetReturnTypegetAnnotationsgetClassHierarchyprotected final IClass declaringClass
public ShrikeBTMethod(IClass klass)
protected ShrikeBTMethod.BytecodeInfo getBCInfo() throws InvalidClassFileException
InvalidClassFileExceptionpublic int getBytecodeIndex(int instructionIndex)
throws InvalidClassFileException
InvalidClassFileExceptionpublic int getNumShrikeInstructions()
throws InvalidClassFileException
InvalidClassFileExceptionpublic Collection<CallSiteReference> getCallSites() throws InvalidClassFileException
InvalidClassFileExceptionpublic Collection<TypeReference> getImplicitExceptionTypes() throws InvalidClassFileException
InvalidClassFileExceptionpublic boolean hasMonitorOp()
throws InvalidClassFileException
InvalidClassFileExceptionpublic Iterator<FieldReference> getFieldsWritten() throws InvalidClassFileException
InvalidClassFileExceptionpublic Iterator<FieldReference> getFieldsRead() throws InvalidClassFileException
InvalidClassFileExceptionpublic Iterator getArraysRead() throws InvalidClassFileException
InvalidClassFileExceptionpublic Iterator<TypeReference> getArraysWritten() throws InvalidClassFileException
InvalidClassFileExceptionpublic Iterator getCastTypes() throws InvalidClassFileException
InvalidClassFileExceptionprotected abstract byte[] getBytecodes()
public BytecodeStream getBytecodeStream()
protected abstract String getMethodName() throws InvalidClassFileException
InvalidClassFileExceptionprotected abstract String getMethodSignature() throws InvalidClassFileException
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 IClass getDeclaringClass()
IMembergetDeclaringClass in interface IMemberprotected abstract Decoder makeDecoder()
protected abstract void processDebugInfo(ShrikeBTMethod.BytecodeInfo bcInfo) throws InvalidClassFileException
InvalidClassFileExceptionpublic String toString()
toString in class ObjectObject.toString()public boolean equals(Object obj)
equals in class ObjectObject.equals(Object)public int hashCode()
hashCode in class ObjectObject.hashCode()public abstract int getMaxLocals()
public abstract int getMaxStackHeight()
public Atom getName()
public Descriptor getDescriptor()
IMethodgetDescriptor in interface IMethodpublic IInstruction[] getInstructions() throws InvalidClassFileException
InvalidClassFileExceptionpublic ExceptionHandler[][] getHandlers() throws InvalidClassFileException
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 InvalidClassFileException
getDeclaredExceptions in interface IMethodInvalidClassFileExceptionIMethod.getDeclaredExceptions()protected abstract String[] getDeclaredExceptionTypeNames() throws InvalidClassFileException
InvalidClassFileExceptionpublic IMethod.SourcePosition getSourcePosition(int bcIndex) throws InvalidClassFileException
getSourcePosition in interface IMethodInvalidClassFileExceptionpublic IMethod.SourcePosition getParameterSourcePosition(int paramNum) throws InvalidClassFileException
getParameterSourcePosition in interface IMethodInvalidClassFileExceptionpublic int getLineNumber(int bcIndex)
getLineNumber in interface IMethodpublic Set<TypeReference> getCaughtExceptionTypes() throws InvalidClassFileException
InvalidClassFileExceptionpublic String getSignature()
IMethodgetSignature in interface IMethodpublic Selector getSelector()
IMethodgetSelector in interface IMethodpublic abstract String getLocalVariableName(int bcIndex, int localNumber)
getLocalVariableName in interface IMethodpublic abstract boolean hasLocalVariableTable()
hasLocalVariableTable in interface IMethodpublic void clearCaches()