OSDN Git Service

Merge korg/donut into korg/master
[android-x86/dalvik.git] / vm / analysis / CodeVerify.c
index 911a479..a9ff585 100644 (file)
@@ -5163,23 +5163,20 @@ sput_1nr_common:
         if (!checkMoveException(meth, insnIdx+insnWidth, "next"))
             goto bail;
 
-        /*
-         * We want to update the registers and set the "changed" flag on the
-         * next instruction (if necessary).  We may not be storing register
-         * changes for all addresses, so for non-branch targets we just
-         * compare "entry" vs. "work" to see if we've changed anything.
-         */
         if (getRegisterLine(regTable, insnIdx+insnWidth) != NULL) {
+            /*
+             * Merge registers into what we have for the next instruction,
+             * and set the "changed" flag if needed.
+             */
             updateRegisters(meth, insnFlags, regTable, insnIdx+insnWidth,
                 workRegs);
         } else {
-            /* if not yet visited, or regs were updated, set "changed" */
-            if (!dvmInsnIsVisited(insnFlags, insnIdx+insnWidth) ||
-                compareRegisters(workRegs, entryRegs,
-                    insnRegCount + kExtraRegs) != 0)
-            {
-                dvmInsnSetChanged(insnFlags, insnIdx+insnWidth, true);
-            }
+            /*
+             * We're not recording register data for the next instruction,
+             * so we don't know what the prior state was.  We have to
+             * assume that something has changed and re-evaluate it.
+             */
+            dvmInsnSetChanged(insnFlags, insnIdx+insnWidth, true);
         }
     }