Supporting de-virtualization for precise types.

Sharpening invoke-virtual and invoke-interface calls to invoke-direct for cases
where the type of "this" pointer in the invoke- params is precisely known.

Instructions that have an invoke opcode are marked as interesting, for each invoke-virtual/interface
we come across with a precise type for "this" we mark the location as a candidate for sharpening,
resolve the concrete method and save its method reference <DexFile, DexMethodIndex> to be sharpened
in CompilerDriver::ComputeInvokeInfo().

Added a new entry to AOT statistics showing the percentage of sharpened calls that were based on
type analysis.

Fix a minor bug in type creation for GetSuperClass(). Previously super class of a precise reference
had precise types created which is not necessarily the case.

Fixed DCHECK in Class::FindVirtualMethodForVirtual to handle cases for Miranda methods.

Sharpening only takes place for cases where no soft failures happen at verification time.

Change-Id: Ic027d0226d6f95260c1918014cb6313f2e0ca455
diff --git a/src/verifier/instruction_flags.h b/src/verifier/instruction_flags.h
index 7f0d240..9dc3ea7 100644
--- a/src/verifier/instruction_flags.h
+++ b/src/verifier/instruction_flags.h
@@ -59,15 +59,14 @@
   bool IsBranchTarget() const {
     return (flags_ & (1 << kBranchTarget)) != 0;
   }
-
-  void SetGcPoint() {
-    flags_ |= 1 << kGcPoint;
+  void SetCompileTimeInfoPoint() {
+    flags_ |= 1 << kCompileTimeInfoPoint;
   }
-  void ClearGcPoint() {
-    flags_ &= ~(1 << kGcPoint);
+  void ClearCompileTimeInfoPoint() {
+    flags_ &= ~(1 << kCompileTimeInfoPoint);
   }
-  bool IsGcPoint() const {
-    return (flags_ & (1 << kGcPoint)) != 0;
+  bool IsCompileTimeInfoPoint() const {
+    return (flags_ & (1 << kCompileTimeInfoPoint)) != 0;
   }
 
   void SetVisited() {
@@ -100,7 +99,8 @@
   enum {
     kInTry,
     kBranchTarget,
-    kGcPoint,
+    kCompileTimeInfoPoint,  // Location of interest to the compiler for GC maps and
+                            // verifier based method sharpening.
     kVisited,
     kChanged,
   };