OSDN Git Service

Fixed dx verifier issue when an error is detected.
authorjeffhao <jeffhao@google.com>
Tue, 4 Oct 2011 21:33:57 +0000 (14:33 -0700)
committerjeffhao <jeffhao@google.com>
Tue, 4 Oct 2011 21:42:20 +0000 (14:42 -0700)
The code needed to break out properly when an error was detected to
prevent it from causing even more problems.

Change-Id: If497655a406689aeb1b4aa6523421cc22f2b7593

vm/analysis/CodeVerify.cpp

index c21906b..b81dbaf 100644 (file)
@@ -1603,6 +1603,7 @@ static void verifyRegisterType(RegisterLine* registerLine, u4 vsrc,
             LOG_VFY("VFY: register1 v%u type %d, wanted %d",
                 vsrc, srcType, checkType);
             *pFailure = VERIFY_ERROR_GENERIC;
+            break;
         }
         /* Update type if result is float */
         if (checkType == kRegTypeFloat) {
@@ -1618,10 +1619,12 @@ static void verifyRegisterType(RegisterLine* registerLine, u4 vsrc,
             LOG_VFY("VFY: register2 v%u-%u values %d,%d",
                 vsrc, vsrc+1, insnRegs[vsrc], insnRegs[vsrc+1]);
             *pFailure = VERIFY_ERROR_GENERIC;
+            break;
         } else if (!canConvertTo2(srcType, checkType)) {
             LOG_VFY("VFY: register2 v%u type %d, wanted %d",
                 vsrc, srcType, checkType);
             *pFailure = VERIFY_ERROR_GENERIC;
+            break;
         }
         /* Update type if source is from const */
         if (srcType == kRegTypeConstLo) {