Working ClassLoader

Change-Id: Ia1122165e47f846a1d4506111849f830d9f14c1b
diff --git a/oat_process/app_main.cpp b/oat_process/app_main.cpp
index e769907..53321f1 100644
--- a/oat_process/app_main.cpp
+++ b/oat_process/app_main.cpp
@@ -82,52 +82,6 @@
         free(slashClassName);
 
         mClass = reinterpret_cast<jclass>(env->NewGlobalRef(mClass));
-
-        // TODO: remove this ClassLoader code
-        jclass ApplicationLoaders = env->FindClass("android/app/ApplicationLoaders");
-        jmethodID getDefault = env->GetStaticMethodID(ApplicationLoaders,
-                                                      "getDefault",
-                                                      "()Landroid/app/ApplicationLoaders;");
-        jfieldID mLoaders = env->GetFieldID(ApplicationLoaders, "mLoaders", "Ljava/util/Map;");
-        jclass BootClassLoader = env->FindClass("java/lang/BootClassLoader");
-        jmethodID getInstance = env->GetStaticMethodID(BootClassLoader,
-                                                       "getInstance",
-                                                       "()Ljava/lang/BootClassLoader;");
-        jclass ClassLoader = env->FindClass("java/lang/ClassLoader");
-        jfieldID parent = env->GetFieldID(ClassLoader, "parent", "Ljava/lang/ClassLoader;");
-        jclass Map = env->FindClass("java/util/Map");
-        jmethodID put = env->GetMethodID(Map,
-                                         "put",
-                                         "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
-        jclass BaseDexClassLoader = env->FindClass("dalvik/system/BaseDexClassLoader");
-        jfieldID originalPath = env->GetFieldID(BaseDexClassLoader, "originalPath", "Ljava/lang/String;");
-        jfieldID pathList = env->GetFieldID(BaseDexClassLoader, "pathList", "Ldalvik/system/DexPathList;");
-        jclass DexPathList = env->FindClass("dalvik/system/DexPathList");
-        jmethodID init = env->GetMethodID(DexPathList,
-                                          "<init>",
-                                          "(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V");
-
-        // Set the parent of our pre-existing ClassLoader to the non-null BootClassLoader.getInstance()
-        const art::ClassLoader* class_loader_object = art::Thread::Current()->GetClassLoaderOverride();
-        jobject class_loader = art::AddLocalReference<jobject>(env, class_loader_object);
-        jobject boot_class_loader = env->CallStaticObjectMethod(BootClassLoader, getInstance);
-        env->SetObjectField(class_loader, parent, boot_class_loader);
-
-        // Create a DexPathList
-        jstring dex_path = env->NewStringUTF("/system/app/Calculator.apk");
-        jstring library_path = env->NewStringUTF("/data/data/com.android.calculator2/lib");
-        jobject dex_path_list = env->NewObject(DexPathList, init,
-                                               boot_class_loader, dex_path, library_path, NULL);
-
-        // Set DexPathList into our pre-existing ClassLoader
-        env->SetObjectField(class_loader, pathList, dex_path_list);
-        env->SetObjectField(class_loader, originalPath, dex_path);
-
-        // Stash our pre-existing ClassLoader into ApplicationLoaders.getDefault().mLoaders
-        // under the expected name.
-        jobject application_loaders = env->CallStaticObjectMethod(ApplicationLoaders, getDefault);
-        jobject loaders = env->GetObjectField(application_loaders, mLoaders);
-        env->CallObjectMethod(loaders, put, dex_path, class_loader);
     }
 
     virtual void onStarted()
@@ -209,14 +163,12 @@
         }
     }
 
-    // TODO: remove Calculator special case
-    int oatArgc = argc + 2;
+    // TODO: remove when we default the boot image
+    int oatArgc = argc + 1;
     const char* oatArgv[oatArgc];
     if (strcmp(argv[0], "-Ximage:/system/framework/boot.art") != 0) {
-        LOG(INFO) << "Adding oat arguments";
+        LOG(INFO) << "Adding image arguments";
         oatArgv[0] = "-Ximage:/system/framework/boot.art";
-        oatArgv[1] = "-Ximage:/system/app/Calculator.art";
-        setenv("CLASSPATH", "/system/app/Calculator.apk", 1);
         memcpy(oatArgv + (oatArgc - argc), argv, argc * sizeof(*argv));
         argv = oatArgv;
         argc = oatArgc;