Commit 96db1c24 authored by Skylot's avatar Skylot

core: reformat code

parent 7abdb41a
...@@ -18,11 +18,11 @@ import com.android.dex.ClassData.Method; ...@@ -18,11 +18,11 @@ import com.android.dex.ClassData.Method;
import com.android.dex.ClassDef; import com.android.dex.ClassDef;
import com.android.dex.Code; import com.android.dex.Code;
import com.android.dex.Dex; import com.android.dex.Dex;
import com.android.dex.Dex.Section;
import com.android.dex.FieldId; import com.android.dex.FieldId;
import com.android.dex.MethodId; import com.android.dex.MethodId;
import com.android.dex.ProtoId; import com.android.dex.ProtoId;
import com.android.dex.TypeList; import com.android.dex.TypeList;
import com.android.dex.TableOfContents;
public class DexNode { public class DexNode {
...@@ -116,7 +116,7 @@ public class DexNode { ...@@ -116,7 +116,7 @@ public class DexNode {
return dexBuf.readCode(mth); return dexBuf.readCode(mth);
} }
public Dex.Section openSection(int offset) { public Section openSection(int offset) {
return dexBuf.open(offset); return dexBuf.open(offset);
} }
......
...@@ -238,24 +238,10 @@ public class MethodNode extends LineAttrNode implements ILoadable { ...@@ -238,24 +238,10 @@ public class MethodNode extends LineAttrNode implements ILoadable {
return genericMap; return genericMap;
} }
// TODO: move to external class
private void initTryCatches(Code mthCode, InsnNode[] insnByOffset) { private void initTryCatches(Code mthCode, InsnNode[] insnByOffset) {
CatchHandler[] catchBlocks = mthCode.getCatchHandlers(); CatchHandler[] catchBlocks = mthCode.getCatchHandlers();
Try[] tries = mthCode.getTries(); Try[] tries = mthCode.getTries();
// Bug in dx library already fixed (Try.getHandlerOffset() replaced by Try.getCatchHandlerIndex())
// and we don't need this mapping anymore,
// but in maven repository still old version
Set<Integer> handlerSet = new HashSet<Integer>(tries.length);
for (Try aTry : tries) {
handlerSet.add(aTry.getCatchHandlerIndex());
}
List<Integer> handlerList = new ArrayList<Integer>(catchBlocks.length);
handlerList.addAll(handlerSet);
Collections.sort(handlerList);
handlerSet = null;
// -------------------
int hc = 0; int hc = 0;
Set<Integer> addrs = new HashSet<Integer>(); Set<Integer> addrs = new HashSet<Integer>();
List<TryCatchBlock> catches = new ArrayList<TryCatchBlock>(catchBlocks.length); List<TryCatchBlock> catches = new ArrayList<TryCatchBlock>(catchBlocks.length);
...@@ -306,7 +292,7 @@ public class MethodNode extends LineAttrNode implements ILoadable { ...@@ -306,7 +292,7 @@ public class MethodNode extends LineAttrNode implements ILoadable {
// attach TRY_ENTER, TRY_LEAVE attributes to instructions // attach TRY_ENTER, TRY_LEAVE attributes to instructions
for (Try aTry : tries) { for (Try aTry : tries) {
int catchNum = handlerList.indexOf(aTry.getCatchHandlerIndex()); int catchNum = aTry.getCatchHandlerIndex();
TryCatchBlock block = catches.get(catchNum); TryCatchBlock block = catches.get(catchNum);
int offset = aTry.getStartAddress(); int offset = aTry.getStartAddress();
int end = offset + aTry.getInstructionCount() - 1; int end = offset + aTry.getInstructionCount() - 1;
......
...@@ -16,7 +16,7 @@ import java.util.LinkedHashMap; ...@@ -16,7 +16,7 @@ import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.android.dex.Dex; import com.android.dex.Dex.Section;
public class AnnotationsParser { public class AnnotationsParser {
...@@ -35,7 +35,7 @@ public class AnnotationsParser { ...@@ -35,7 +35,7 @@ public class AnnotationsParser {
} }
public void parse(int offset) throws DecodeException { public void parse(int offset) throws DecodeException {
Dex.Section section = dex.openSection(offset); Section section = dex.openSection(offset);
// TODO read as unsigned int // TODO read as unsigned int
int classAnnotationsOffset = section.readInt(); int classAnnotationsOffset = section.readInt();
...@@ -60,7 +60,7 @@ public class AnnotationsParser { ...@@ -60,7 +60,7 @@ public class AnnotationsParser {
for (int i = 0; i < annotatedParametersCount; i++) { for (int i = 0; i < annotatedParametersCount; i++) {
MethodNode mth = cls.searchMethodById(section.readInt()); MethodNode mth = cls.searchMethodById(section.readInt());
// read annotation ref list // read annotation ref list
Dex.Section ss = dex.openSection(section.readInt()); Section ss = dex.openSection(section.readInt());
int size = ss.readInt(); int size = ss.readInt();
MethodParameters params = new MethodParameters(size); MethodParameters params = new MethodParameters(size);
for (int j = 0; j < size; j++) { for (int j = 0; j < size; j++) {
...@@ -71,18 +71,18 @@ public class AnnotationsParser { ...@@ -71,18 +71,18 @@ public class AnnotationsParser {
} }
private AnnotationsList readAnnotationSet(int offset) throws DecodeException { private AnnotationsList readAnnotationSet(int offset) throws DecodeException {
Dex.Section section = dex.openSection(offset); Section section = dex.openSection(offset);
int size = section.readInt(); int size = section.readInt();
List<Annotation> list = new ArrayList<Annotation>(size); List<Annotation> list = new ArrayList<Annotation>(size);
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
Dex.Section anSection = dex.openSection(section.readInt()); Section anSection = dex.openSection(section.readInt());
Annotation a = readAnnotation(dex, anSection, true); Annotation a = readAnnotation(dex, anSection, true);
list.add(a); list.add(a);
} }
return new AnnotationsList(list); return new AnnotationsList(list);
} }
public static Annotation readAnnotation(DexNode dex, Dex.Section s, boolean readVisibility) throws DecodeException { public static Annotation readAnnotation(DexNode dex, Section s, boolean readVisibility) throws DecodeException {
EncValueParser parser = new EncValueParser(dex, s); EncValueParser parser = new EncValueParser(dex, s);
Visibility visibility = null; Visibility visibility = null;
if (readVisibility) { if (readVisibility) {
......
...@@ -10,7 +10,7 @@ import jadx.core.utils.exceptions.DecodeException; ...@@ -10,7 +10,7 @@ import jadx.core.utils.exceptions.DecodeException;
import java.util.List; import java.util.List;
import com.android.dex.Dex; import com.android.dex.Dex.Section;
public class DebugInfoParser { public class DebugInfoParser {
...@@ -33,7 +33,7 @@ public class DebugInfoParser { ...@@ -33,7 +33,7 @@ public class DebugInfoParser {
private static final int DBG_LINE_RANGE = 15; private static final int DBG_LINE_RANGE = 15;
private final MethodNode mth; private final MethodNode mth;
private final Dex.Section section; private final Section section;
private final DexNode dex; private final DexNode dex;
private final LocalVar[] locals; private final LocalVar[] locals;
......
...@@ -8,37 +8,33 @@ import jadx.core.utils.exceptions.DecodeException; ...@@ -8,37 +8,33 @@ import jadx.core.utils.exceptions.DecodeException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.android.dex.Dex; import com.android.dex.Dex.Section;
import com.android.dex.EncodedValue;
import com.android.dex.EncodedValueReader;
import com.android.dex.Leb128; import com.android.dex.Leb128;
import com.android.dex.util.ByteInput;
public class EncValueParser { public class EncValueParser {
public static final int ENCODED_BYTE = 0x00; public static final int ENCODED_BYTE = 0x00;
public static final int ENCODED_SHORT = 0x02; public static final int ENCODED_SHORT = 0x02;
public static final int ENCODED_CHAR = 0x03; public static final int ENCODED_CHAR = 0x03;
public static final int ENCODED_INT = 0x04; public static final int ENCODED_INT = 0x04;
public static final int ENCODED_LONG = 0x06; public static final int ENCODED_LONG = 0x06;
public static final int ENCODED_FLOAT = 0x10; public static final int ENCODED_FLOAT = 0x10;
public static final int ENCODED_DOUBLE = 0x11; public static final int ENCODED_DOUBLE = 0x11;
public static final int ENCODED_STRING = 0x17; public static final int ENCODED_STRING = 0x17;
public static final int ENCODED_TYPE = 0x18; public static final int ENCODED_TYPE = 0x18;
public static final int ENCODED_FIELD = 0x19; public static final int ENCODED_FIELD = 0x19;
public static final int ENCODED_ENUM = 0x1b; public static final int ENCODED_ENUM = 0x1b;
public static final int ENCODED_METHOD = 0x1a; public static final int ENCODED_METHOD = 0x1a;
public static final int ENCODED_ARRAY = 0x1c; public static final int ENCODED_ARRAY = 0x1c;
public static final int ENCODED_ANNOTATION = 0x1d; public static final int ENCODED_ANNOTATION = 0x1d;
public static final int ENCODED_NULL = 0x1e; public static final int ENCODED_NULL = 0x1e;
public static final int ENCODED_BOOLEAN = 0x1f; public static final int ENCODED_BOOLEAN = 0x1f;
protected final Dex.Section in; protected final Section in;
private final DexNode dex; private final DexNode dex;
public EncValueParser(DexNode dex, Dex.Section in) { public EncValueParser(DexNode dex, Section in) {
//super(in);
this.in = in; this.in = in;
this.dex = dex; this.dex = dex;
} }
...@@ -94,7 +90,7 @@ public class EncValueParser { ...@@ -94,7 +90,7 @@ public class EncValueParser {
return values; return values;
case ENCODED_ANNOTATION: case ENCODED_ANNOTATION:
return AnnotationsParser.readAnnotation(dex, (Dex.Section) in, false); return AnnotationsParser.readAnnotation(dex, in, false);
} }
throw new DecodeException("Unknown encoded value type: 0x" + Integer.toHexString(type)); throw new DecodeException("Unknown encoded value type: 0x" + Integer.toHexString(type));
} }
......
...@@ -6,12 +6,12 @@ import jadx.core.utils.exceptions.DecodeException; ...@@ -6,12 +6,12 @@ import jadx.core.utils.exceptions.DecodeException;
import java.util.List; import java.util.List;
import com.android.dex.Dex; import com.android.dex.Dex.Section;
import com.android.dex.Leb128; import com.android.dex.Leb128;
public class StaticValuesParser extends EncValueParser { public class StaticValuesParser extends EncValueParser {
public StaticValuesParser(DexNode dex, Dex.Section in) { public StaticValuesParser(DexNode dex, Section in) {
super(dex, in); super(dex, in);
} }
......
...@@ -66,7 +66,7 @@ public class PrepareForCodeGen extends AbstractVisitor { ...@@ -66,7 +66,7 @@ public class PrepareForCodeGen extends AbstractVisitor {
if (insn.getType() == InsnType.MOVE if (insn.getType() == InsnType.MOVE
&& insn.getArg(0).isInsnWrap() && insn.getArg(0).isInsnWrap()
&& !insn.getAttributes().contains(AttributeFlag.DECLARE_VAR)) { && !insn.getAttributes().contains(AttributeFlag.DECLARE_VAR)) {
InsnNode wrapInsn = ((InsnWrapArg)insn.getArg(0)).getWrapInsn(); InsnNode wrapInsn = ((InsnWrapArg) insn.getArg(0)).getWrapInsn();
wrapInsn.setResult(insn.getResult()); wrapInsn.setResult(insn.getResult());
list.set(i, wrapInsn); list.set(i, wrapInsn);
} }
......
...@@ -18,12 +18,12 @@ import java.util.List; ...@@ -18,12 +18,12 @@ import java.util.List;
import java.util.jar.JarEntry; import java.util.jar.JarEntry;
import java.util.jar.JarOutputStream; import java.util.jar.JarOutputStream;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.fail;
import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
public abstract class InternalJadxTest extends TestUtils { public abstract class InternalJadxTest extends TestUtils {
......
...@@ -37,7 +37,8 @@ public class TestSignatureParser { ...@@ -37,7 +37,8 @@ public class TestSignatureParser {
assertEquals(p("La<Lb<Lc;>;>;").consumeType(), assertEquals(p("La<Lb<Lc;>;>;").consumeType(),
ArgType.generic("La;", new ArgType[]{ ArgType.generic("La;", new ArgType[]{
ArgType.generic("Lb;", new ArgType[]{ ArgType.generic("Lb;", new ArgType[]{
ArgType.object("Lc;")})})); ArgType.object("Lc;")})})
);
} }
@Test @Test
...@@ -47,7 +48,8 @@ public class TestSignatureParser { ...@@ -47,7 +48,8 @@ public class TestSignatureParser {
assertEquals(p("La<Lb;>.c<TV;>;").consumeType(), assertEquals(p("La<Lb;>.c<TV;>;").consumeType(),
ArgType.genericInner(ArgType.generic("La;", new ArgType[]{ArgType.object("Lb;")}), ArgType.genericInner(ArgType.generic("La;", new ArgType[]{ArgType.object("Lb;")}),
"c", new ArgType[]{ArgType.genericType("V")})); "c", new ArgType[]{ArgType.genericType("V")})
);
assertEquals(p("La<TV;>.LinkedHashIterator<Lb$c<Ls;TV;>;>;").consumeType().getObject(), assertEquals(p("La<TV;>.LinkedHashIterator<Lb$c<Ls;TV;>;>;").consumeType().getObject(),
"a$LinkedHashIterator"); "a$LinkedHashIterator");
......
...@@ -14,8 +14,9 @@ public class TestConditions5 extends InternalJadxTest { ...@@ -14,8 +14,9 @@ public class TestConditions5 extends InternalJadxTest {
public static class TestCls { public static class TestCls {
public static void assertEquals(Object a1, Object a2) { public static void assertEquals(Object a1, Object a2) {
if (a1 == null) { if (a1 == null) {
if (a2 != null) if (a2 != null) {
throw new AssertionError(a1 + " != " + a2); throw new AssertionError(a1 + " != " + a2);
}
} else if (!a1.equals(a2)) { } else if (!a1.equals(a2)) {
throw new AssertionError(a1 + " != " + a2); throw new AssertionError(a1 + " != " + a2);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment