Class CodeItem

All Implemented Interfaces:
Comparable<OffsettedItem>

public final class CodeItem extends OffsettedItem
Representation of all the parts needed for concrete methods in a dex file.
  • Constructor Details

    • CodeItem

      public CodeItem(CstMethodRef ref, DalvCode code, boolean isStatic, TypeList throwsList)
      Constructs an instance.
      Parameters:
      ref - non-null; method that this code implements
      code - non-null; the underlying code
      isStatic - whether this instance is for a static method
      throwsList - non-null; list of possibly-thrown exceptions, just used in generating debugging output (listings)
  • Method Details

    • itemType

      public ItemType itemType()
      Returns the item type for this instance.
      Specified by:
      itemType in class Item
      Returns:
      non-null; the item type
    • addContents

      public void addContents(DexFile file)
      Populates a DexFile with items from within this instance. This will not add an item to the file for this instance itself (which should have been done by whatever refers to this instance).

      Note: Subclasses must override this to do something appropriate.

      Specified by:
      addContents in class Item
      Parameters:
      file - non-null; the file to populate
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toHuman

      public String toHuman()
      Gets a short human-readable string representing this instance.
      Specified by:
      toHuman in class OffsettedItem
      Returns:
      non-null; the human form
    • getRef

      public CstMethodRef getRef()
      Gets the reference to the method this instance implements.
      Returns:
      non-null; the method reference
    • debugPrint

      public void debugPrint(PrintWriter out, String prefix, boolean verbose)
      Does a human-friendly dump of this instance.
      Parameters:
      out - non-null; where to dump
      prefix - non-null; per-line prefix to use
      verbose - whether to be verbose with the output
    • place0

      protected void place0(Section addedTo, int offset)
      Does additional work required when placing an instance. The default implementation of this method is a no-op. If a particular class needs to do something special, then it should override this method. In particular, if this instance did not know its write size up-front, then this method is responsible for setting it.
      Overrides:
      place0 in class OffsettedItem
      Parameters:
      addedTo - non-null; the section this instance has been added to
      offset - >= 0; the offset from the start of the section where this instance was placed
    • writeTo0

      protected void writeTo0(DexFile file, AnnotatedOutput out)
      Performs the actual write of the contents of this instance to the given data section. This is called by OffsettedItem.writeTo(com.android.dx.dex.file.DexFile, com.android.dx.util.AnnotatedOutput), which will have taken care of ensuring alignment.
      Specified by:
      writeTo0 in class OffsettedItem
      Parameters:
      file - non-null; the file to use for reference
      out - non-null; where to write to