fix: support 'swap' and 'wide' opcodes, other fixes for java-input

This commit is contained in:
Skylot
2021-08-20 20:59:30 +03:00
parent 868fa90097
commit 9ea3f0f240
21 changed files with 425 additions and 111 deletions
@@ -13,6 +13,7 @@ import org.slf4j.LoggerFactory;
import jadx.api.plugins.input.data.IClassData;
import jadx.api.plugins.input.data.IFieldData;
import jadx.api.plugins.input.data.IMethodData;
import jadx.api.plugins.input.data.ISeqConsumer;
import jadx.api.plugins.input.data.annotations.EncodedValue;
import jadx.api.plugins.input.data.annotations.IAnnotation;
import jadx.api.plugins.input.data.attributes.IJadxAttribute;
@@ -92,7 +93,7 @@ public class DexClassData implements IClassData {
}
@Override
public void visitFieldsAndMethods(Consumer<IFieldData> fieldConsumer, Consumer<IMethodData> mthConsumer) {
public void visitFieldsAndMethods(ISeqConsumer<IFieldData> fieldConsumer, ISeqConsumer<IMethodData> mthConsumer) {
int classDataOff = getClassDataOff();
if (classDataOff == 0) {
return;
@@ -103,6 +104,9 @@ public class DexClassData implements IClassData {
int directMthCount = data.readUleb128();
int virtualMthCount = data.readUleb128();
fieldConsumer.init(staticFieldsCount + instanceFieldsCount);
mthConsumer.init(directMthCount + virtualMthCount);
annotationsParser.setOffset(getAnnotationsOff());
visitFields(fieldConsumer, data, staticFieldsCount, instanceFieldsCount);
visitMethods(mthConsumer, data, directMthCount, virtualMthCount);