# HG changeset patch # User forax # Date 1301096810 -3600 # Node ID 96c63feb973cf4002e49b4d54436cf15954345c0 # Parent 817b7941153f797ffe1609600932ae655bd17f7c This patch: - compute register types from method parameters - implements array_length - refactor the code that creates array to allow array of objects diff -r 817b7941153f -r 96c63feb973c src/main/java/org/icedrobot/daneel/rewriter/DexRewriter.java --- a/src/main/java/org/icedrobot/daneel/rewriter/DexRewriter.java Fri Mar 25 23:59:09 2011 +0100 +++ b/src/main/java/org/icedrobot/daneel/rewriter/DexRewriter.java Sat Mar 26 00:46:50 2011 +0100 @@ -43,6 +43,7 @@ import static org.icedrobot.daneel.rewriter.Registers.*; import java.nio.ByteBuffer; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.IdentityHashMap; @@ -60,6 +61,7 @@ import org.objectweb.asm.ClassWriter; import org.objectweb.asm.FieldVisitor; import org.objectweb.asm.MethodVisitor; +import org.objectweb.asm.Opcodes; import org.objectweb.asm.Type; import org.objectweb.asm.tree.AbstractInsnNode; import org.objectweb.asm.tree.InsnNode; @@ -68,7 +70,7 @@ public class DexRewriter implements DexClassVisitor { private final ClassVisitor cv; - + /** * Rewrites a class from Dalvik bytecode into Java bytecode representation. * The source class is given by specifying its name and the DEX source it is @@ -145,7 +147,7 @@ return null; } - return new MethodRewriter(mv, desc); + return new MethodRewriter(mv, (access & Opcodes.ACC_STATIC) != 0, desc); } @Override @@ -155,7 +157,8 @@ static class MethodRewriter implements DexMethodVisitor { final PatchMethodVisitor mv; - final String desc; + private final boolean isStatic; + private final String desc; private Interpreter interpreter; private int returnRegisterType; // type of the register used to stored @@ -171,8 +174,9 @@ private final Set