Introduce a nterp with clinit check entrypoint.

It will be used post-zygote fork, so that methods whose class is not
initialized yet keep the same entrypoint even after initialization. This
avoids dirtying shared pages.

Test: imgdiag
Bug: 162110941
Change-Id: Idb861f23b368604e79f6d3efa7ad0dff287e0209
diff --git a/runtime/interpreter/mterp/nterp.cc b/runtime/interpreter/mterp/nterp.cc
index d70a846..17f17af 100644
--- a/runtime/interpreter/mterp/nterp.cc
+++ b/runtime/interpreter/mterp/nterp.cc
@@ -58,10 +58,17 @@
 // The entrypoint for nterp, which ArtMethods can directly point to.
 extern "C" void ExecuteNterpImpl() REQUIRES_SHARED(Locks::mutator_lock_);
 
+// Another entrypoint, which does a clinit check at entry.
+extern "C" void ExecuteNterpWithClinitImpl() REQUIRES_SHARED(Locks::mutator_lock_);
+
 const void* GetNterpEntryPoint() {
   return reinterpret_cast<const void*>(interpreter::ExecuteNterpImpl);
 }
 
+const void* GetNterpWithClinitEntryPoint() {
+  return reinterpret_cast<const void*>(interpreter::ExecuteNterpWithClinitImpl);
+}
+
 /*
  * Verify some constants used by the nterp interpreter.
  */