changeset 65:3a01108d39d2

Implemented rewriting of MOVE_RESULT, MOVE_RESULT_WIDE and MOVE_RESULT_OBJECT. * rewriter/DexRewriter.java (visitInstrOp): Implemented.
author Xerxes R?nby <xerxes@zafena.se>
date Tue, 22 Mar 2011 17:08:24 +0100
parents 7687468aed66
children 7ce7ce3d84fc
files src/main/java/org/icedrobot/daneel/rewriter/DexRewriter.java
diffstat 1 files changed, 11 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/org/icedrobot/daneel/rewriter/DexRewriter.java	Tue Mar 22 14:42:29 2011 +0100
+++ b/src/main/java/org/icedrobot/daneel/rewriter/DexRewriter.java	Tue Mar 22 17:08:24 2011 +0100
@@ -481,6 +481,17 @@
                 mv.visitInsn(Register.getJavaOpcode(type, IRETURN));
             }
             break;
+            case MOVE_RESULT:
+            case MOVE_RESULT_WIDE:
+            case MOVE_RESULT_OBJECT: {
+                // INVOKE + MOVE_RESULT is equivalent to INVOKE + STORE
+                if(returnRegisterType!=VOID_TYPE)
+                    mv.visitVarInsn(Register.getJavaOpcode(returnRegisterType,
+                        ISTORE), srcOrDst);
+                // TODO: What to do if returnRegisterType==VOID_TYPE?
+                returnRegisterType=NO_TYPE;
+            }
+            break;
             default:
                 throw new UnsupportedOperationException("NYI " + opcode);
             }