private void writeMethods(@Nonnull DexDataWriter writer) throws IOException { methodSectionOffset = writer.getPosition(); int index = 0; List<Map.Entry<? extends MethodRefKey, Integer>> methodEntries = Lists.newArrayList(methodSection.getItems()); Collections.sort(methodEntries, DexWriter.<MethodRefKey>comparableKeyComparator()); for (Map.Entry<? extends MethodRefKey, Integer> entry: methodEntries) { entry.setValue(index++); MethodRefKey key = entry.getKey(); writer.writeUshort(typeSection.getItemIndex(methodSection.getDefiningClass(key))); writer.writeUshort(protoSection.getItemIndex(methodSection.getPrototype(key))); writer.writeInt(stringSection.getItemIndex(methodSection.getName(key))); } }
public void writeMethodType(@Nonnull ProtoRefKey value) throws IOException { writer.writeEncodedUint(ValueType.METHOD_TYPE, protoSection.getItemIndex(value)); }
public void writeMethodType(@Nonnull ProtoRefKey value) throws IOException { writer.writeEncodedUint(ValueType.METHOD_TYPE, protoSection.getItemIndex(value)); }
private void writeMethods(@Nonnull DexDataWriter writer) throws IOException { methodSectionOffset = writer.getPosition(); int index = 0; List<Map.Entry<? extends MethodRefKey, Integer>> methodEntries = Lists.newArrayList(methodSection.getItems()); Collections.sort(methodEntries, DexWriter.<MethodRefKey>comparableKeyComparator()); for (Map.Entry<? extends MethodRefKey, Integer> entry: methodEntries) { entry.setValue(index++); MethodRefKey key = entry.getKey(); writer.writeUshort(typeSection.getItemIndex(methodSection.getDefiningClass(key))); writer.writeUshort(protoSection.getItemIndex(methodSection.getPrototype(key))); writer.writeInt(stringSection.getItemIndex(methodSection.getName(key))); } }
private void writeMethods(@Nonnull DexDataWriter writer) throws IOException { methodSectionOffset = writer.getPosition(); int index = 0; List<Map.Entry<? extends MethodRefKey, Integer>> methodEntries = Lists.newArrayList(methodSection.getItems()); Collections.sort(methodEntries, DexWriter.<MethodRefKey>comparableKeyComparator()); for (Map.Entry<? extends MethodRefKey, Integer> entry: methodEntries) { entry.setValue(index++); MethodRefKey key = entry.getKey(); writer.writeUshort(typeSection.getItemIndex(methodSection.getDefiningClass(key))); writer.writeUshort(protoSection.getItemIndex(methodSection.getPrototype(key))); writer.writeInt(stringSection.getItemIndex(methodSection.getName(key))); } }
private int getReferenceIndex(int referenceType, Reference reference) { switch (referenceType) { case ReferenceType.FIELD: return fieldSection.getItemIndex((FieldRefKey) reference); case ReferenceType.METHOD: return methodSection.getItemIndex((MethodRefKey) reference); case ReferenceType.STRING: return stringSection.getItemIndex((StringRef) reference); case ReferenceType.TYPE: return typeSection.getItemIndex((TypeRef) reference); case ReferenceType.METHOD_PROTO: return protoSection.getItemIndex((ProtoRefKey) reference); case ReferenceType.METHOD_HANDLE: return methodHandleSection.getItemIndex((MethodHandleKey) reference); case ReferenceType.CALL_SITE: return callSiteSection.getItemIndex((CallSiteKey) reference); default: throw new ExceptionWithContext("Unknown reference type: %d", referenceType); } } }
private int getReferenceIndex(int referenceType, Reference reference) { switch (referenceType) { case ReferenceType.FIELD: return fieldSection.getItemIndex((FieldRefKey) reference); case ReferenceType.METHOD: return methodSection.getItemIndex((MethodRefKey) reference); case ReferenceType.STRING: return stringSection.getItemIndex((StringRef) reference); case ReferenceType.TYPE: return typeSection.getItemIndex((TypeRef) reference); case ReferenceType.METHOD_PROTO: return protoSection.getItemIndex((ProtoRefKey) reference); case ReferenceType.METHOD_HANDLE: return methodHandleSection.getItemIndex((MethodHandleKey) reference); case ReferenceType.CALL_SITE: return callSiteSection.getItemIndex((CallSiteKey) reference); default: throw new ExceptionWithContext("Unknown reference type: %d", referenceType); } } }