Improved method invocation performance: 1.5x for virtual and 2.8x for interface.

- Implemented predicted chaining for invoke virtual and interface.
- Eliminated a little bit of fat for invoke native.
- Added 078-polymorphic-virtual for stress tests.
diff --git a/vm/interp/Jit.c b/vm/interp/Jit.c
index 7d922bb..acd4704 100644
--- a/vm/interp/Jit.c
+++ b/vm/interp/Jit.c
@@ -191,8 +191,10 @@
 #endif
         LOGD("JIT: %d Translation chains", gDvmJit.translationChains);
 #if defined(INVOKE_STATS)
-        LOGD("JIT: Invoke: %d noOpt, %d chainable, %d return",
-          gDvmJit.invokeNoOpt, gDvmJit.invokeChain, gDvmJit.returnOp);
+        LOGD("JIT: Invoke: %d chainable, %d pred. chain, %d native, "
+             "%d return",
+             gDvmJit.invokeChain, gDvmJit.invokePredictedChain,
+             gDvmJit.invokeNative, gDvmJit.returnOp);
 #endif
        if (gDvmJit.profile) {
            int numTraces = 0;
@@ -367,6 +369,7 @@
             switchInterp = !debugOrProfile;
             break;
         case kJitNormal:
+            switchInterp = !debugOrProfile;
             break;
         default:
             dvmAbort();