Class DexBackedMethodImplementation

java.lang.Object
org.jf.dexlib2.dexbacked.DexBackedMethodImplementation
All Implemented Interfaces:
MethodImplementation
Direct Known Subclasses:
CDexBackedMethodImplementation

public class DexBackedMethodImplementation extends Object implements MethodImplementation
  • Field Details

    • dexFile

      @Nonnull public final DexBackedDexFile dexFile
    • method

      @Nonnull public final DexBackedMethod method
    • codeOffset

      protected final int codeOffset
  • Constructor Details

    • DexBackedMethodImplementation

      protected DexBackedMethodImplementation(@Nonnull DexBackedDexFile dexFile, @Nonnull DexBackedMethod method, int codeOffset)
  • Method Details

    • getRegisterCount

      public int getRegisterCount()
      Description copied from interface: MethodImplementation
      Gets the number of registers in this method.
      Specified by:
      getRegisterCount in interface MethodImplementation
      Returns:
      The number of register in this method.
    • getInstructionsSize

      protected int getInstructionsSize()
    • getInstructionsStartOffset

      protected int getInstructionsStartOffset()
    • getInstructions

      @Nonnull public Iterable<? extends Instruction> getInstructions()
      Description copied from interface: MethodImplementation
      Gets the instructions in this method.
      Specified by:
      getInstructions in interface MethodImplementation
      Returns:
      An Iterable of the instructions in this method
    • getTriesSize

      protected int getTriesSize()
    • getTryBlocks

      @Nonnull public List<? extends DexBackedTryBlock> getTryBlocks()
      Description copied from interface: MethodImplementation
      Gets a list of the try blocks defined for this method. Try blocks may overlap freely, and do not need to be strictly nested, as in java. This is a more relaxed requirement than specified by the dex format, where try blocks may not overlap, and must be specified in ascending order. When writing to a dex file, the try blocks will be massaged into the appropriate format. In any region where there are overlapping try blocks, set of exception handlers for the overlapping region will consist of the union of all handlers in any try block that covers that region. If multiple overlapping try blocks define a handler for the same exception type, or define a catch-all handler, then those duplicate handlers must use the same handler offset.
      Specified by:
      getTryBlocks in interface MethodImplementation
      Returns:
      A list of the TryBlock items
    • getDebugOffset

      protected int getDebugOffset()
    • getDebugInfo

      @Nonnull private DebugInfo getDebugInfo()
    • getDebugItems

      @Nonnull public Iterable<? extends DebugItem> getDebugItems()
      Description copied from interface: MethodImplementation
      Get a list of debug items for this method. This generally matches the semantics of the debug_info_item in the dex specification, although in an easier to digest form. The addresses of the DebugItems in the returned list will be in non-descending order.
      Specified by:
      getDebugItems in interface MethodImplementation
      Returns:
      A list of DebugInfo items
    • getParameterNames

      @Nonnull public Iterator<String> getParameterNames(@Nullable DexReader dexReader)
    • getSize

      public int getSize()
      Calculate and return the private size of a method implementation. Calculated as: debug info size + instructions size + try-catch size
      Returns:
      size in bytes