int fieldSize = getFieldSize(field); if (!AlignmentUtils.isAligned(fieldOffset, fieldSize)) { int oldOffset = fieldOffset; fieldOffset = AlignmentUtils.alignOffset(fieldOffset, fieldSize); addFieldGap(oldOffset, fieldOffset, gaps);
@Nonnull @Override public List<? extends DexBackedTryBlock> getTryBlocks() { final int triesSize = dexFile.readUshort(codeOffset + CodeItem.TRIES_SIZE_OFFSET); if (triesSize > 0) { int instructionsSize = dexFile.readSmallUint(codeOffset + CodeItem.INSTRUCTION_COUNT_OFFSET); final int triesStartOffset = AlignmentUtils.alignOffset( codeOffset + CodeItem.INSTRUCTION_START_OFFSET + (instructionsSize*2), 4); final int handlersStartOffset = triesStartOffset + triesSize*CodeItem.TryItem.ITEM_SIZE; return new FixedSizeList<DexBackedTryBlock>() { @Nonnull @Override public DexBackedTryBlock readItem(int index) { return new DexBackedTryBlock(dexFile, triesStartOffset + index*CodeItem.TryItem.ITEM_SIZE, handlersStartOffset); } @Override public int size() { return triesSize; } }; } return ImmutableList.of(); }
@Nonnull @Override public List<? extends DexBackedTryBlock> getTryBlocks() { final int triesSize = dexFile.readUshort(codeOffset + CodeItem.TRIES_SIZE_OFFSET); if (triesSize > 0) { int instructionsSize = dexFile.readSmallUint(codeOffset + CodeItem.INSTRUCTION_COUNT_OFFSET); final int triesStartOffset = AlignmentUtils.alignOffset( codeOffset + CodeItem.INSTRUCTION_START_OFFSET + (instructionsSize*2), 4); final int handlersStartOffset = triesStartOffset + triesSize*CodeItem.TryItem.ITEM_SIZE; return new FixedSizeList<DexBackedTryBlock>() { @Nonnull @Override public DexBackedTryBlock readItem(int index) { return new DexBackedTryBlock(dexFile, triesStartOffset + index*CodeItem.TryItem.ITEM_SIZE, handlersStartOffset); } @Override public int size() { return triesSize; } }; } return ImmutableList.of(); }
int fieldSize = getFieldSize(field); if (!AlignmentUtils.isAligned(fieldOffset, fieldSize)) { int oldOffset = fieldOffset; fieldOffset = AlignmentUtils.alignOffset(fieldOffset, fieldSize); addFieldGap(oldOffset, fieldOffset, gaps);
protected void annotateSectionInner(@Nonnull AnnotatedBytes out, int itemCount) { String itemName = getItemName(); int itemAlignment = getItemAlignment(); if (itemCount > 0) { out.annotate(0, ""); out.annotate(0, "-----------------------------"); out.annotate(0, "%s section", itemName); out.annotate(0, "-----------------------------"); out.annotate(0, ""); for (int i=0; i<itemCount; i++) { out.moveTo(AlignmentUtils.alignOffset(out.getCursor(), itemAlignment)); String itemIdentity = getItemIdentity(out.getCursor()); if (itemIdentity != null) { out.annotate(0, "[%d] %s: %s", i, itemName, itemIdentity); } else { out.annotate(0, "[%d] %s", i, itemName); } out.indent(); annotateItem(out, i, itemIdentity); out.deindent(); } } }
protected void annotateSectionInner(@Nonnull AnnotatedBytes out, int itemCount) { String itemName = getItemName(); int itemAlignment = getItemAlignment(); if (itemCount > 0) { out.annotate(0, ""); out.annotate(0, "-----------------------------"); out.annotate(0, "%s section", itemName); out.annotate(0, "-----------------------------"); out.annotate(0, ""); for (int i=0; i<itemCount; i++) { out.moveTo(AlignmentUtils.alignOffset(out.getCursor(), itemAlignment)); String itemIdentity = getItemIdentity(out.getCursor()); if (itemIdentity != null) { out.annotate(0, "[%d] %s: %s", i, itemName, itemIdentity); } else { out.annotate(0, "[%d] %s", i, itemName); } out.indent(); annotateItem(out, i, itemIdentity); out.deindent(); } } }