Check whether method is zygote-compiled less frequently.

Move the check to MaybeCompileMethod which means
it will do the look-up only once per 32 invokes.

More importantly, it means the interpreter can
use the invoke fast-path for pre-compiled methods.

Bug: 119800099
Change-Id: Id10cdb7d3717807f60e3d3c71ca943ede8104f36
diff --git a/runtime/jit/jit.cc b/runtime/jit/jit.cc
index 737acda..0b1cd77 100644
--- a/runtime/jit/jit.cc
+++ b/runtime/jit/jit.cc
@@ -870,6 +870,13 @@
   if (thread_pool_ == nullptr) {
     return false;
   }
+  if (UNLIKELY(method->IsPreCompiled()) && !with_backedges /* don't check for OSR */) {
+    const void* code_ptr = code_cache_->GetZygoteMap()->GetCodeFor(method);
+    if (code_ptr != nullptr) {
+      Runtime::Current()->GetInstrumentation()->UpdateMethodsCode(method, code_ptr);
+      return true;
+    }
+  }
   if (IgnoreSamplesForMethod(method)) {
     return false;
   }
@@ -971,14 +978,6 @@
     return;
   }
 
-  if (UNLIKELY(method->IsPreCompiled())) {
-    const void* code_ptr = code_cache_->GetZygoteMap()->GetCodeFor(method);
-    if (code_ptr != nullptr) {
-      Runtime::Current()->GetInstrumentation()->UpdateMethodsCode(method, code_ptr);
-      return;
-    }
-  }
-
   ProfilingInfo* profiling_info = method->GetProfilingInfo(kRuntimePointerSize);
   // Update the entrypoint if the ProfilingInfo has one. The interpreter will call it
   // instead of interpreting the method. We don't update it for instrumentation as the entrypoint