Add missing JUMBO ops to JIT

We were missing a dozen or so of the new jumbo ops in the JIT's
code generator.  Interestingly, our compiler error recovery mechanism was
good enough that we didn't notice (we die on an assert build,
but silently recover and continue on a production build).

Change-Id: I0c0b6d1704c47e81b39c7dcf7d1172dbdcd29856
diff --git a/vm/compiler/codegen/arm/CodegenDriver.c b/vm/compiler/codegen/arm/CodegenDriver.c
index 1272f9b..7d76e89 100644
--- a/vm/compiler/codegen/arm/CodegenDriver.c
+++ b/vm/compiler/codegen/arm/CodegenDriver.c
@@ -1607,9 +1607,11 @@
         }
         case OP_SGET:
         case OP_SGET_VOLATILE:
+        case OP_SGET_VOLATILE_JUMBO:
         case OP_SGET_JUMBO:
         case OP_SGET_OBJECT:
         case OP_SGET_OBJECT_VOLATILE:
+        case OP_SGET_OBJECT_VOLATILE_JUMBO:
         case OP_SGET_OBJECT_JUMBO:
         case OP_SGET_BOOLEAN:
         case OP_SGET_BOOLEAN_JUMBO:
@@ -1626,14 +1628,17 @@
                 mir->meta.calleeMethod : cUnit->method;
             void *fieldPtr = (void*)
               (method->clazz->pDvmDex->pResFields[mir->dalvikInsn.vB]);
+            Opcode opcode = mir->dalvikInsn.opcode;
 
             if (fieldPtr == NULL) {
                 LOGE("Unexpected null static field");
                 dvmAbort();
             }
 
-            isVolatile = (mir->dalvikInsn.opcode == OP_SGET_VOLATILE) ||
-                         (mir->dalvikInsn.opcode == OP_SGET_OBJECT_VOLATILE) ||
+            isVolatile = (opcode == OP_SGET_VOLATILE) ||
+                         (opcode == OP_SGET_VOLATILE_VOLATILE) ||
+                         (opcode == OP_SGET_OBJECT_VOLATILE) ||
+                         (opcode == OP_SGET_OBJECT_VOLATILE_JUMBO) ||
                          dvmIsVolatileField((Field *) fieldPtr);
 
             rlDest = dvmCompilerGetDest(cUnit, mir, 0);
@@ -1677,9 +1682,11 @@
         }
         case OP_SPUT:
         case OP_SPUT_VOLATILE:
+        case OP_SPUT_VOLATILE_JUMBO:
         case OP_SPUT_JUMBO:
         case OP_SPUT_OBJECT:
         case OP_SPUT_OBJECT_VOLATILE:
+        case OP_SPUT_OBJECT_VOLATILE_JUMBO:
         case OP_SPUT_OBJECT_JUMBO:
         case OP_SPUT_BOOLEAN:
         case OP_SPUT_BOOLEAN_JUMBO:
@@ -1698,14 +1705,18 @@
                 mir->meta.calleeMethod : cUnit->method;
             void *fieldPtr = (void*)
               (method->clazz->pDvmDex->pResFields[mir->dalvikInsn.vB]);
+            Opcode opcode = mir->dalvikInsn.opcode;
 
-            isVolatile = (mir->dalvikInsn.opcode == OP_SPUT_VOLATILE) ||
-                         (mir->dalvikInsn.opcode == OP_SPUT_OBJECT_VOLATILE) ||
+            isVolatile = (opcode == OP_SPUT_VOLATILE) ||
+                         (opcode == OP_SPUT_VOLATILE_JUMBO) ||
+                         (opcode == OP_SPUT_OBJECT_VOLATILE) ||
+                         (opcode == OP_SPUT_OBJECT_VOLATILE_JUMBO) ||
                          dvmIsVolatileField((Field *) fieldPtr);
 
-            isSputObject = (mir->dalvikInsn.opcode == OP_SPUT_OBJECT) ||
-                           (mir->dalvikInsn.opcode == OP_SPUT_OBJECT_JUMBO) ||
-                           (mir->dalvikInsn.opcode == OP_SPUT_OBJECT_VOLATILE);
+            isSputObject = (opcode == OP_SPUT_OBJECT) ||
+                           (opcode == OP_SPUT_OBJECT_JUMBO) ||
+                           (opcode == OP_SPUT_OBJECT_VOLATILE) ||
+                           (opcode == OP_SPUT_OBJECT_VOLATILE_JUMBO);
 
             if (fieldPtr == NULL) {
                 LOGE("Unexpected null static field");
@@ -1856,7 +1867,9 @@
             break;
         }
         case OP_SGET_WIDE_VOLATILE:
+        case OP_SGET_WIDE_VOLATILE_JUMBO:
         case OP_SPUT_WIDE_VOLATILE:
+        case OP_SPUT_WIDE_VOLATILE_JUMBO:
             genInterpSingleStep(cUnit, mir);
             break;
         default:
@@ -2367,15 +2380,19 @@
          * Wide volatiles currently handled via single step.
          * Add them here if generating in-line code.
          *     case OP_IGET_WIDE_VOLATILE:
+         *     case OP_IGET_WIDE_VOLATILE_JUMBO:
          *     case OP_IPUT_WIDE_VOLATILE:
+         *     case OP_IPUT_WIDE_VOLATILE_JUMBO:
          */
         case OP_IGET:
         case OP_IGET_VOLATILE:
+        case OP_IGET_VOLATILE_JUMBO:
         case OP_IGET_JUMBO:
         case OP_IGET_WIDE:
         case OP_IGET_WIDE_JUMBO:
         case OP_IGET_OBJECT:
         case OP_IGET_OBJECT_VOLATILE:
+        case OP_IGET_OBJECT_VOLATILE_JUMBO:
         case OP_IGET_OBJECT_JUMBO:
         case OP_IGET_BOOLEAN:
         case OP_IGET_BOOLEAN_JUMBO:
@@ -2387,11 +2404,13 @@
         case OP_IGET_SHORT_JUMBO:
         case OP_IPUT:
         case OP_IPUT_VOLATILE:
+        case OP_IPUT_VOLATILE_JUMBO:
         case OP_IPUT_JUMBO:
         case OP_IPUT_WIDE:
         case OP_IPUT_WIDE_JUMBO:
         case OP_IPUT_OBJECT:
         case OP_IPUT_OBJECT_VOLATILE:
+        case OP_IPUT_OBJECT_VOLATILE_JUMBO:
         case OP_IPUT_OBJECT_JUMBO:
         case OP_IPUT_BOOLEAN:
         case OP_IPUT_BOOLEAN_JUMBO:
@@ -2514,7 +2533,9 @@
             genIGetWide(cUnit, mir, fieldOffset);
             break;
         case OP_IGET_VOLATILE:
+        case OP_IGET_VOLATILE_JUMBO:
         case OP_IGET_OBJECT_VOLATILE:
+        case OP_IGET_OBJECT_VOLATILE_JUMBO:
             isVolatile = true;
             // NOTE: intentional fallthrough
         case OP_IGET:
@@ -2548,7 +2569,9 @@
             genIPut(cUnit, mir, kWord, fieldOffset, false, isVolatile);
             break;
         case OP_IPUT_VOLATILE:
+        case OP_IPUT_VOLATILE_JUMBO:
         case OP_IPUT_OBJECT_VOLATILE:
+        case OP_IPUT_OBJECT_VOLATILE_JUMBO:
             isVolatile = true;
             // NOTE: intentional fallthrough
         case OP_IPUT_OBJECT:
@@ -2556,7 +2579,9 @@
             genIPut(cUnit, mir, kWord, fieldOffset, true, isVolatile);
             break;
         case OP_IGET_WIDE_VOLATILE:
+        case OP_IGET_WIDE_VOLATILE_JUMBO:
         case OP_IPUT_WIDE_VOLATILE:
+        case OP_IPUT_WIDE_VOLATILE_JUMBO:
             genInterpSingleStep(cUnit, mir);
             break;
         default:
@@ -3335,10 +3360,8 @@
             genTrap(cUnit, mir->offset, pcrLabel);
             break;
         }
-        case OP_INVOKE_OBJECT_INIT_RANGE: {
-            genInterpSingleStep(cUnit, mir);
-            break;
-        }
+        case OP_INVOKE_OBJECT_INIT_JUMBO:
+        case OP_INVOKE_OBJECT_INIT_RANGE:
         case OP_FILLED_NEW_ARRAY:
         case OP_FILLED_NEW_ARRAY_RANGE:
         case OP_FILLED_NEW_ARRAY_JUMBO: {