Enable sharpening, fix off by one in GetOatCodeFor(Method*)

(cherry picked from commit 0dd87f7f60470057eddf635e209496830911ef3b)

Change-Id: I53ad0b83ac74112cfd46f10fb6b74a627286ded3
diff --git a/src/class_linker.cc b/src/class_linker.cc
index 6ab849a..e26677d 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -1357,11 +1357,11 @@
     size_t end = declaring_class->NumVirtualMethods();
     bool found = false;
     for (size_t i = 0; i < end; i++) {
-      oat_method_index++;
       if (declaring_class->GetVirtualMethod(i) == method) {
         found = true;
         break;
       }
+      oat_method_index++;
     }
     CHECK(found) << "Didn't find oat method index for virtual method: " << PrettyMethod(method);
   }
diff --git a/src/compiler.cc b/src/compiler.cc
index fe4f4fc..f64b1cb 100644
--- a/src/compiler.cc
+++ b/src/compiler.cc
@@ -677,7 +677,7 @@
           referrer_class->CanAccessMember(methods_class,
                                           resolved_method->GetAccessFlags())) {
         vtable_idx = resolved_method->GetMethodIndex();
-        const bool kEnableSharpening = false;
+        const bool kEnableSharpening = true;
         if (kEnableSharpening && type == kVirtual &&
             (resolved_method->IsFinal() || methods_class->IsFinal())) {
           stats_->ResolvedMethod(kVirtual);