Refactor the compilers out of libart.

This builds three separate compilers and dynamically links with the right one
at runtime.

Change-Id: I59d22b9884f41de733c09f97e29ee290236d5f4b
diff --git a/src/dalvik_system_VMRuntime.cc b/src/dalvik_system_VMRuntime.cc
index c8a3a4c..cca5d2b 100644
--- a/src/dalvik_system_VMRuntime.cc
+++ b/src/dalvik_system_VMRuntime.cc
@@ -19,6 +19,7 @@
 #include "jni_internal.h"
 #include "object.h"
 #include "object_utils.h"
+#include "scoped_heap_lock.h"
 #include "space.h"
 #include "thread.h"
 
@@ -32,11 +33,11 @@
 namespace {
 
 jfloat VMRuntime_getTargetHeapUtilization(JNIEnv*, jobject) {
-  return Heap::GetTargetHeapUtilization();
+  return Runtime::Current()->GetHeap()->GetTargetHeapUtilization();
 }
 
 void VMRuntime_nativeSetTargetHeapUtilization(JNIEnv*, jobject, jfloat target) {
-  Heap::SetTargetHeapUtilization(target);
+  Runtime::Current()->GetHeap()->SetTargetHeapUtilization(target);
 }
 
 void VMRuntime_startJitCompilation(JNIEnv*, jobject) {
@@ -91,7 +92,7 @@
 }
 
 void VMRuntime_clearGrowthLimit(JNIEnv*, jobject) {
-  Heap::ClearGrowthLimit();
+  Runtime::Current()->GetHeap()->ClearGrowthLimit();
 }
 
 jboolean VMRuntime_isDebuggerActive(JNIEnv*, jobject) {
@@ -132,7 +133,7 @@
     // running with CheckJNI forces you to obey the strictest rules.
     if (!env_ext->check_jni) {
       LOG(INFO) << "Turning on JNI app bug workarounds for target SDK version "
-          << targetSdkVersion << "...";
+                << targetSdkVersion << "...";
       env_ext->vm->work_around_app_jni_bugs = true;
     }
   }
@@ -140,10 +141,11 @@
 
 void VMRuntime_trimHeap(JNIEnv* env, jobject) {
   ScopedHeapLock heap_lock;
-  size_t alloc_space_size = Heap::GetAllocSpace()->Size();
-  float utilization = static_cast<float>(Heap::GetBytesAllocated()) / alloc_space_size;
+  Heap* heap = Runtime::Current()->GetHeap();
+  size_t alloc_space_size = heap->GetAllocSpace()->Size();
+  float utilization = static_cast<float>(heap->GetBytesAllocated()) / alloc_space_size;
   uint64_t start_ns = NanoTime();
-  Heap::GetAllocSpace()->Trim();
+  heap->GetAllocSpace()->Trim();
   LOG(INFO) << "Parallel heap trimming took " << PrettyDuration(NanoTime() - start_ns)
             << " on a " << PrettySize(alloc_space_size)
             << " heap with " << static_cast<int>(100 * utilization) << "% utilization";