Misc goodies in the JIT in preparation for more aggressive code motion.

- Set up resource masks correctly for Thumb push/pop when LR/PC are involved.
- Preserve LR around simulated heap references under self-verification mode.
- Compact a few simple flags in ArmLIR into bit fields.
- Minor performance tuning in TEMPLATE_MEM_OP_DECODE

Change-Id: Id73edac837c5bb37dfd21f372d6fa21c238cf42a
diff --git a/vm/compiler/codegen/arm/ArchUtility.c b/vm/compiler/codegen/arm/ArchUtility.c
index 5af4f3b..c6bcac2 100644
--- a/vm/compiler/codegen/arm/ArchUtility.c
+++ b/vm/compiler/codegen/arm/ArchUtility.c
@@ -348,7 +348,7 @@
             LOGD("L%p:\n", lir);
             break;
         default:
-            if (lir->isNop && !dumpNop) {
+            if (lir->flags.isNop && !dumpNop) {
                 break;
             }
             buildInsnString(EncodingMap[lir->opcode].name, lir, opName,
@@ -357,15 +357,15 @@
                             256);
             LOGD("%p (%04x): %-8s%s%s\n",
                  baseAddr + offset, offset, opName, buf,
-                 lir->isNop ? "(nop)" : "");
+                 lir->flags.isNop ? "(nop)" : "");
             break;
     }
 
-    if (lir->useMask && (!lir->isNop || dumpNop)) {
+    if (lir->useMask && (!lir->flags.isNop || dumpNop)) {
         DUMP_RESOURCE_MASK(dvmDumpResourceMask((LIR *) lir,
                                                lir->useMask, "use"));
     }
-    if (lir->defMask && (!lir->isNop || dumpNop)) {
+    if (lir->defMask && (!lir->flags.isNop || dumpNop)) {
         DUMP_RESOURCE_MASK(dvmDumpResourceMask((LIR *) lir,
                                                lir->defMask, "def"));
     }