@Override @Nonnull public DexReader readerAt(int offset) { return new DexReader(this, offset); }
private int getInstanceFieldsOffset() { if (instanceFieldsOffset > 0) { return instanceFieldsOffset; } DexReader reader = new DexReader(dexFile, staticFieldsOffset); DexBackedField.skipFields(reader, staticFieldCount); instanceFieldsOffset = reader.getOffset(); return instanceFieldsOffset; }
@Override @Nonnull public DexReader readerAt(int offset) { return new DexReader(this, offset); }
@Override @Nonnull public DexReader readerAt(int offset) { return new DexReader(this, offset); }
@Override protected void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) { int callSiteOffset = dexFile.readSmallUint(out.getCursor()); StringWriter writer = new StringWriter(); try { EncodedValueUtils.writeEncodedValue(writer, new DexBackedArrayEncodedValue(new DexReader(dexFile, callSiteOffset))); } catch (IOException ex) { // Shouldn't get an IOException from a StringWriter.. throw new RuntimeException(ex); } out.annotate(4, "call_site_id_item[0x%x] = %s", callSiteOffset, writer.toString()); } };
private int getInstanceFieldsOffset() { if (instanceFieldsOffset > 0) { return instanceFieldsOffset; } DexReader reader = new DexReader(dexFile, staticFieldsOffset); DexBackedField.skipFields(reader, staticFieldCount); instanceFieldsOffset = reader.getOffset(); return instanceFieldsOffset; }
@Override protected void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) { int callSiteOffset = dexFile.readSmallUint(out.getCursor()); StringWriter writer = new StringWriter(); try { EncodedValueUtils.writeEncodedValue(writer, new DexBackedArrayEncodedValue(new DexReader(dexFile, callSiteOffset))); } catch (IOException ex) { // Shouldn't get an IOException from a StringWriter.. throw new RuntimeException(ex); } out.annotate(4, "call_site_id_item[0x%x] = %s", callSiteOffset, writer.toString()); } };
private int getInstanceFieldsOffset() { if (instanceFieldsOffset > 0) { return instanceFieldsOffset; } DexReader reader = new DexReader(dexFile, staticFieldsOffset); DexBackedField.skipFields(reader, staticFieldCount); instanceFieldsOffset = reader.getOffset(); return instanceFieldsOffset; }