diff --git a/Android.mk b/Android.mk
index 0b8d0eb..c654626 100644
--- a/Android.mk
+++ b/Android.mk
@@ -65,8 +65,8 @@
 
 ART_TARGET_DEPENDENCIES := $(ART_TARGET_EXECUTABLES) $(TARGET_OUT_JAVA_LIBRARIES)/core.jar $(TARGET_OUT_SHARED_LIBRARIES)/libjavacore.so
 
-ART_HOST_TEST_DEPENDENCIES   := $(ART_HOST_DEPENDENCIES)   $(ART_TEST_OAT_FILES)
-ART_TARGET_TEST_DEPENDENCIES := $(ART_TARGET_DEPENDENCIES) $(ART_TEST_OAT_FILES)
+ART_HOST_TEST_DEPENDENCIES   := $(ART_HOST_DEPENDENCIES)   $(ART_HOST_TEST_EXECUTABLES)   $(ART_TEST_OAT_FILES)
+ART_TARGET_TEST_DEPENDENCIES := $(ART_TARGET_DEPENDENCIES) $(ART_TARGET_TEST_EXECUTABLES) $(ART_TEST_OAT_FILES)
 
 ########################################################################
 # host test targets
@@ -97,7 +97,7 @@
 	@echo test-art-target PASSED
 
 .PHONY: test-art-target-sync
-test-art-target-sync: $(ART_TARGET_TEST_DEPENDENCIES)
+test-art-target-sync: $(ART_TARGET_TEST_DEPENDENCIES) $(ART_TEST_OUT)/libarttest.so
 	adb remount
 	adb sync
 	adb shell mkdir -p $(ART_TEST_DIR)
diff --git a/build/Android.common.mk b/build/Android.common.mk
index ba34206..bd0e0be 100644
--- a/build/Android.common.mk
+++ b/build/Android.common.mk
@@ -218,8 +218,6 @@
 	src/runtime_support_x86.S
 
 LIBARTTEST_COMMON_SRC_FILES := \
-	src/base64.cc \
-	src/jni_tests.cc \
 	test/StackWalk/stack_walk_jni.cc \
 	test/ReferenceMap/stack_walk_refmap_jni.cc
 
diff --git a/build/Android.gtest.mk b/build/Android.gtest.mk
index 3ac0170..1f57369 100644
--- a/build/Android.gtest.mk
+++ b/build/Android.gtest.mk
@@ -43,15 +43,18 @@
   LOCAL_MODULE_TAGS := tests
   LOCAL_SRC_FILES := $$(art_gtest_filename)
   LOCAL_C_INCLUDES += $(ART_C_INCLUDES)
-  LOCAL_SHARED_LIBRARIES := libarttest libartd
+  LOCAL_SHARED_LIBRARIES := libartd
+
+  # options to allow jni_compiler_test to find Java_MyClass_bar within itself using dlopen(NULL, )
+  LOCAL_LDFLAGS := -Wl,--export-dynamic -Wl,-u,Java_MyClass_bar
 
   ifeq ($$(art_target_or_host),target)
     LOCAL_CFLAGS := $(ART_TARGET_CFLAGS) $(ART_TARGET_DEBUG_CFLAGS)
     LOCAL_SHARED_LIBRARIES += libdl libicuuc libicui18n libnativehelper libstlport libz
     LOCAL_STATIC_LIBRARIES := libgtest libgtest_main
-    LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_NATIVE_TESTS)/$$(LOCAL_MODULE)
+    LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_NATIVE_TESTS)/art
     include $(BUILD_EXECUTABLE)
-    art_gtest_exe := $$(LOCAL_MODULE_PATH)
+    art_gtest_exe := $$(LOCAL_MODULE_PATH)/$$(LOCAL_MODULE)
     ART_TARGET_TEST_EXECUTABLES += $$(art_gtest_exe)
   else # host
     LOCAL_CFLAGS := $(ART_HOST_CFLAGS) $(ART_HOST_DEBUG_CFLAGS)
@@ -67,14 +70,13 @@
     art_gtest_exe := $(HOST_OUT_EXECUTABLES)/$$(LOCAL_MODULE)
     ART_HOST_TEST_EXECUTABLES += $$(art_gtest_exe)
   endif
-
 art_gtest_target := test-art-$$(art_target_or_host)-gtest-$$(art_gtest_name)
 ifeq ($$(art_target_or_host),target)
 .PHONY: $$(art_gtest_target)
 $$(art_gtest_target): $$(art_gtest_exe) test-art-target-sync
 	adb shell touch $(ART_TEST_DIR)/$$@
 	adb shell rm $(ART_TEST_DIR)/$$@
-	adb shell sh -c "/data/nativetest/$$(notdir $$<)/$$(notdir $$<) && touch $(ART_TEST_DIR)/$$@"
+	adb shell sh -c "/data/nativetest/art/$$(notdir $$<) && touch $(ART_TEST_DIR)/$$@"
 	$(hide) (adb pull $(ART_TEST_DIR)/$$@ /tmp/ && echo $$@ PASSED) || (echo $$@ FAILED && exit 1)
 	$(hide) rm /tmp/$$@
 
diff --git a/build/Android.libarttest.mk b/build/Android.libarttest.mk
index 16bbcad..7726df0 100644
--- a/build/Android.libarttest.mk
+++ b/build/Android.libarttest.mk
@@ -39,6 +39,7 @@
     LOCAL_CFLAGS := $(ART_TARGET_CFLAGS) $(ART_TARGET_DEBUG_CFLAGS)
     LOCAL_SHARED_LIBRARIES += libdl libstlport
     LOCAL_STATIC_LIBRARIES := libgtest
+    LOCAL_MODULE_PATH := $(ART_TEST_OUT)
     include $(BUILD_SHARED_LIBRARY)
   else # host
     LOCAL_CFLAGS := $(ART_HOST_CFLAGS) $(ART_HOST_DEBUG_CFLAGS)
diff --git a/build/Android.oattest.mk b/build/Android.oattest.mk
index 98ec45f..86349a2 100644
--- a/build/Android.oattest.mk
+++ b/build/Android.oattest.mk
@@ -65,7 +65,7 @@
 test-art-target-oat-$(1): $(ART_TEST_OUT)/art-test-dex-$(1).jar test-art-target-sync
 	adb shell touch $(ART_TEST_DIR)/test-art-target-oat-$(1)
 	adb shell rm $(ART_TEST_DIR)/test-art-target-oat-$(1)
-	adb shell sh -c "oatexecd -Ximage:$(ART_TEST_DIR)/core.art -classpath $(ART_TEST_DIR)/art-test-dex-$(1).jar $(1) $(2) && touch $(ART_TEST_DIR)/test-art-target-oat-$(1)"
+	adb shell sh -c "oatexecd -Ximage:$(ART_TEST_DIR)/core.art -classpath $(ART_TEST_DIR)/art-test-dex-$(1).jar -Djava.library.path=$(ART_TEST_DIR) $(1) $(2) && touch $(ART_TEST_DIR)/test-art-target-oat-$(1)"
 	$(hide) (adb pull $(ART_TEST_DIR)/test-art-target-oat-$(1) /tmp/ && echo test-art-target-oat-$(1) PASSED) || (echo test-art-target-oat-$(1) FAILED && exit 1)
 	$(hide) rm /tmp/test-art-target-oat-$(1)
 
diff --git a/src/base64.cc b/src/base64.cc
deleted file mode 100644
index 1709946..0000000
--- a/src/base64.cc
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2011 Google Inc. All Rights Reserved.
-
-#include <vector>
-
-#include "UniquePtr.h"
-#include "globals.h"
-
-namespace art {
-
-static const byte kMap[256] = {
-  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255, 255, 255, 255,  62, 255, 255, 255,  63,
-  52,  53,  54,  55,  56,  57,  58,  59,  60,  61, 255, 255,
-  255, 254, 255, 255, 255,   0,   1,   2,   3,   4,   5,   6,
-    7,   8,   9,  10,  11,  12,  13,  14,  15,  16,  17,  18,
-   19,  20,  21,  22,  23,  24,  25, 255, 255, 255, 255, 255,
-  255,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,
-   37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,
-   49,  50,  51, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-  255, 255, 255, 255
-};
-
-byte* DecodeBase64(const char* src, size_t* dst_size) {
-  std::vector<byte> tmp;
-  unsigned long t = 0, y = 0;
-  int g = 3;
-  for (size_t i = 0; src[i] != '\0'; ++i) {
-    byte c = kMap[src[i] & 0xFF];
-    if (c == 255) continue;
-    // the final = symbols are read and used to trim the remaining bytes
-    if (c == 254) {
-      c = 0;
-      // prevent g < 0 which would potentially allow an overflow later
-      if (--g < 0) {
-        return NULL;
-      }
-    } else if (g != 3) {
-      // we only allow = to be at the end
-      return NULL;
-    }
-    t = (t << 6) | c;
-    if (++y == 4) {
-      tmp.push_back((t >> 16) & 255);
-      if (g > 1) {
-        tmp.push_back((t >> 8) & 255);
-      }
-      if (g > 2) {
-        tmp.push_back(t & 255);
-      }
-      y = t = 0;
-    }
-  }
-  if (y != 0) {
-    return NULL;
-  }
-  UniquePtr<byte[]> dst(new byte[tmp.size()]);
-  if (dst_size != NULL) {
-    *dst_size = tmp.size();
-  }
-  std::copy(tmp.begin(), tmp.end(), dst.get());
-  return dst.release();
-}
-
-}  // namespace art
diff --git a/src/base64.h b/src/base64.h
deleted file mode 100644
index a4344ea..0000000
--- a/src/base64.h
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2011 Google Inc. All Rights Reserved.
-
-#ifndef ART_SRC_BASE64_H_
-#define ART_SRC_BASE64_H_
-
-#include "globals.h"
-
-namespace art {
-
-// Decodes a C string with base64 encoded data.
-byte* DecodeBase64(const char* src, size_t* dst_size);
-
-}  // namespace art
-
-#endif  // ART_SRC_BASE64_H_
diff --git a/src/common_test.h b/src/common_test.h
index 0456c35..3da2f37 100644
--- a/src/common_test.h
+++ b/src/common_test.h
@@ -7,7 +7,6 @@
 #include <sys/types.h>
 
 #include "UniquePtr.h"
-#include "base64.h"
 #include "class_linker.h"
 #include "class_loader.h"
 #include "compiler.h"
@@ -29,6 +28,72 @@
 
 namespace art {
 
+static const byte kBase64Map[256] = {
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255, 255, 255, 255,  62, 255, 255, 255,  63,
+  52,  53,  54,  55,  56,  57,  58,  59,  60,  61, 255, 255,
+  255, 254, 255, 255, 255,   0,   1,   2,   3,   4,   5,   6,
+    7,   8,   9,  10,  11,  12,  13,  14,  15,  16,  17,  18,
+   19,  20,  21,  22,  23,  24,  25, 255, 255, 255, 255, 255,
+  255,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,
+   37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,
+   49,  50,  51, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+  255, 255, 255, 255
+};
+
+byte* DecodeBase64(const char* src, size_t* dst_size) {
+  std::vector<byte> tmp;
+  unsigned long t = 0, y = 0;
+  int g = 3;
+  for (size_t i = 0; src[i] != '\0'; ++i) {
+    byte c = kBase64Map[src[i] & 0xFF];
+    if (c == 255) continue;
+    // the final = symbols are read and used to trim the remaining bytes
+    if (c == 254) {
+      c = 0;
+      // prevent g < 0 which would potentially allow an overflow later
+      if (--g < 0) {
+        return NULL;
+      }
+    } else if (g != 3) {
+      // we only allow = to be at the end
+      return NULL;
+    }
+    t = (t << 6) | c;
+    if (++y == 4) {
+      tmp.push_back((t >> 16) & 255);
+      if (g > 1) {
+        tmp.push_back((t >> 8) & 255);
+      }
+      if (g > 2) {
+        tmp.push_back(t & 255);
+      }
+      y = t = 0;
+    }
+  }
+  if (y != 0) {
+    return NULL;
+  }
+  UniquePtr<byte[]> dst(new byte[tmp.size()]);
+  if (dst_size != NULL) {
+    *dst_size = tmp.size();
+  }
+  std::copy(tmp.begin(), tmp.end(), dst.get());
+  return dst.release();
+}
+
 static inline const DexFile* OpenDexFileBase64(const char* base64,
                                                const std::string& location) {
   // decode base64
diff --git a/src/jni_compiler_test.cc b/src/jni_compiler_test.cc
index 938d733..5e19d4d 100644
--- a/src/jni_compiler_test.cc
+++ b/src/jni_compiler_test.cc
@@ -17,6 +17,11 @@
 #include "scoped_jni_thread_state.h"
 #include "thread.h"
 
+extern "C"
+JNIEXPORT jint JNICALL Java_MyClass_bar(JNIEnv* env, jobject thisObj, jint count) {
+  return count + 1;
+}
+
 namespace art {
 
 class JniCompilerTest : public CommonTest {
@@ -109,12 +114,11 @@
 TEST_F(JniCompilerTest, CompileAndRunIntMethodThroughStub) {
   SirtRef<ClassLoader> class_loader(LoadDex("MyClassNatives"));
   SetupForTest(class_loader.get(), false, "bar", "(I)I",
-               NULL /* dlsym will find &Java_MyClass_bar later */);
+               NULL /* calling through stub will load &Java_MyClass_bar */);
 
-  std::string path("libarttest.so");
   std::string reason;
-  ASSERT_TRUE(Runtime::Current()->GetJavaVM()->LoadNativeLibrary(path, class_loader.get(), reason))
-      << path << ": " << reason;
+  ASSERT_TRUE(Runtime::Current()->GetJavaVM()->LoadNativeLibrary("", class_loader.get(), reason))
+      << reason;
 
   jint result = env_->CallNonvirtualIntMethod(jobj_, jklass_, jmethod_, 24);
   EXPECT_EQ(25, result);
diff --git a/src/jni_internal.cc b/src/jni_internal.cc
index 8e7c0a2..5385ae2 100644
--- a/src/jni_internal.cc
+++ b/src/jni_internal.cc
@@ -2853,7 +2853,7 @@
   void* handle = NULL;
   {
     ScopedThreadStateChange tsc(self, Thread::kVmWait);
-    handle = dlopen(path.c_str(), RTLD_LAZY);
+    handle = dlopen(path.empty() ? NULL : path.c_str(), RTLD_LAZY);
   }
 
   VLOG(jni) << "[Call to dlopen(\"" << path << "\") returned " << handle << "]";
diff --git a/src/jni_tests.cc b/src/jni_tests.cc
deleted file mode 100644
index 934ccac..0000000
--- a/src/jni_tests.cc
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2011 Google Inc. All Rights Reserved.
-
-#include "jni.h"
-#include <stdio.h>
-
-extern "C"
-JNIEXPORT jint JNICALL Java_MyClass_bar(JNIEnv* env, jobject thisObj, jint count) {
-  return count + 1;
-}
