class DexFile; class DexInstructionIterator; template <typename Iter> class IterationRange;
// Abstracts accesses to the instruction fields of code items for CompactDexFile and // StandardDexFile. class CodeItemInstructionAccessor { public:
ALWAYS_INLINE CodeItemInstructionAccessor(const DexFile& dex_file, const dex::CodeItem* code_item);
private: // size of the insns array, in 2 byte code units. 0 if there is no code item.
uint32_t insns_size_in_code_units_ = 0;
// Pointer to the instructions, null if there is no code item. const uint16_t* insns_ = nullptr;
};
// Abstracts accesses to code item fields other than debug info for CompactDexFile and // StandardDexFile. class CodeItemDataAccessor : public CodeItemInstructionAccessor { public:
ALWAYS_INLINE CodeItemDataAccessor(const DexFile& dex_file, const dex::CodeItem* code_item);
private: // Fields mirrored from the dex/cdex code item.
uint16_t registers_size_;
uint16_t ins_size_;
uint16_t outs_size_;
uint16_t tries_size_;
};
// Abstract accesses to code item data including debug info offset. More heavy weight than the other // helpers. class CodeItemDebugInfoAccessor : public CodeItemDataAccessor { public:
CodeItemDebugInfoAccessor() = default;
// Initialize with an existing offset.
ALWAYS_INLINE CodeItemDebugInfoAccessor(const DexFile& dex_file, const dex::CodeItem* code_item,
uint32_t dex_method_index) {
Init(dex_file, code_item, dex_method_index);
}
// Visit each parameter in the debug information. Returns the line number. // The argument of the Visitor is dex::StringIndex. template <typename Visitor>
uint32_t VisitParameterNames(Visitor&& visitor) const;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.