If JNIEnvExt is-a JNIEnv, we can lose a bunch of reinterpret_casts.

Likewise with JavaVM.

Change-Id: I505e42e9197951b6c82e6dbf8dcc1fc4dd5aad31
diff --git a/src/jni_internal.cc b/src/jni_internal.cc
index 0458ceb..0845c0f 100644
--- a/src/jni_internal.cc
+++ b/src/jni_internal.cc
@@ -2084,7 +2084,7 @@
     ScopedJniThreadState ts(env);
     Runtime* runtime = Runtime::Current();
     if (runtime != NULL) {
-      *vm = reinterpret_cast<JavaVM*>(runtime->GetJavaVM());
+      *vm = runtime->GetJavaVM();
     } else {
       *vm = NULL;
     }
@@ -2383,12 +2383,12 @@
 static const size_t kLocalsMax = 512; // Arbitrary sanity check.
 
 JNIEnvExt::JNIEnvExt(Thread* self, bool check_jni)
-    : fns(&gNativeInterface),
-      self(self),
+    : self(self),
       check_jni(check_jni),
       critical(false),
       monitors("monitors", kMonitorsInitial, kMonitorsMax),
       locals(kLocalsInitial, kLocalsMax, kLocal) {
+  functions = &gNativeInterface;
 }
 
 // JNI Invocation interface.
@@ -2409,8 +2409,8 @@
   if (runtime == NULL) {
     return JNI_ERR;
   } else {
-    *p_env = reinterpret_cast<JNIEnv*>(Thread::Current()->GetJniEnv());
-    *p_vm = reinterpret_cast<JavaVM*>(runtime->GetJavaVM());
+    *p_env = Thread::Current()->GetJniEnv();
+    *p_vm = runtime->GetJavaVM();
     return JNI_OK;
   }
 }
@@ -2421,7 +2421,7 @@
     *vm_count = 0;
   } else {
     *vm_count = 1;
-    vms[0] = reinterpret_cast<JavaVM*>(runtime->GetJavaVM());
+    vms[0] = runtime->GetJavaVM();
   }
   return JNI_OK;
 }
@@ -2532,8 +2532,7 @@
 static const size_t kWeakGlobalsMax = 51200; // Arbitrary sanity check.
 
 JavaVMExt::JavaVMExt(Runtime* runtime, bool check_jni, bool verbose_jni)
-    : fns(&gInvokeInterface),
-      runtime(runtime),
+    : runtime(runtime),
       check_jni(check_jni),
       verbose_jni(verbose_jni),
       pin_table("pin table", kPinTableInitialSize, kPinTableMaxSize),
@@ -2541,6 +2540,7 @@
       globals(kGlobalsInitial, kGlobalsMax, kGlobal),
       weak_globals_lock(Mutex::Create("JNI weak global reference table lock")),
       weak_globals(kWeakGlobalsInitial, kWeakGlobalsMax, kWeakGlobal) {
+  functions = &gInvokeInterface;
 }
 
 JavaVMExt::~JavaVMExt() {
@@ -2668,7 +2668,7 @@
       if (verbose_jni) {
         LOG(INFO) << "[Calling JNI_OnLoad in \"" << path << "\"]";
       }
-      int version = (*jni_on_load)(reinterpret_cast<JavaVM*>(this), NULL);
+      int version = (*jni_on_load)(this, NULL);
       self->SetState(old_state);
 
       self->SetClassLoaderOverride(old_class_loader);;