Merge "Rename OatMethods to OatClass" into dalvik-dev
diff --git a/src/class_linker.cc b/src/class_linker.cc
index 1a9618c..1c9f064 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -608,6 +608,10 @@
   pid_t pid = fork();
   if (pid == 0) {
     // no allocation allowed between fork and exec
+
+    // change process groups, so we don't get reaped by ProcessManager
+    setpgid(0, 0);
+
     execl(dex2oat, dex2oat,
           "--runtime-arg", "-Xms64m",
           "--runtime-arg", "-Xmx64m",
diff --git a/src/compiler/codegen/arm/MethodCodegenDriver.cc b/src/compiler/codegen/arm/MethodCodegenDriver.cc
index 2c3ee0d..33823ca 100644
--- a/src/compiler/codegen/arm/MethodCodegenDriver.cc
+++ b/src/compiler/codegen/arm/MethodCodegenDriver.cc
@@ -2180,7 +2180,7 @@
                     OFFSETOF_MEMBER(Thread, pThrowNegArraySizeFromCode);
                 break;
             case kArmThrowNoSuchMethod:
-                genRegCopy(cUnit, r0, v1);
+                genRegCopy(cUnit, r0, v2);
                 funcOffset =
                     OFFSETOF_MEMBER(Thread, pThrowNoSuchMethodFromCode);
                 break;
diff --git a/src/dalvik_system_DexFile.cc b/src/dalvik_system_DexFile.cc
index 41110d3..de3e6d6 100644
--- a/src/dalvik_system_DexFile.cc
+++ b/src/dalvik_system_DexFile.cc
@@ -104,31 +104,37 @@
     ClassLinker* class_linker = Runtime::Current()->GetClassLinker();
     UniquePtr<File> file(OS::OpenFile(outputName.c_str(), true));
     if (file.get() == NULL) {
+      LOG(WARNING) << "unable to create oat file: " << outputName.c_str();
       jniThrowExceptionFmt(env, "java/io/IOException", "unable to create oat file: %s",
                            outputName.c_str());
       return 0;
     }
     if (!class_linker->GenerateOatFile(sourceName.c_str(), file->Fd(), outputName.c_str())) {
+      LOG(WARNING) << "unable to generate oat file: " << outputName.c_str();
       jniThrowExceptionFmt(env, "java/io/IOException", "unable to generate oat file: %s",
                            outputName.c_str());
       return 0;
     }
     UniquePtr<OatFile> oat_file(OatFile::Open(outputName.c_str(), "", NULL));
     if (oat_file.get() == NULL) {
+      LOG(WARNING) << "unable to open oat file: " << outputName.c_str();
       jniThrowExceptionFmt(env, "java/io/IOException", "unable to open oat file: %s",
                            outputName.c_str());
       return 0;
     }
     const OatFile::OatDexFile* oat_dex_file = oat_file->GetOatDexFile(sourceName.c_str());
     if (oat_dex_file == NULL) {
+      LOG(WARNING) << "unable to find dex file in oat file: " << outputName.c_str();
       jniThrowExceptionFmt(env, "java/io/IOException", "unable to find dex file in oat file: %s",
                            outputName.c_str());
       return 0;
     }
+    Runtime::Current()->GetClassLinker()->RegisterOatFile(*oat_file.release());
     dex_file = oat_dex_file->OpenDexFile();
   }
 
   if (dex_file == NULL) {
+    LOG(WARNING) << "unable to open dex file: " << sourceName.c_str();
     jniThrowExceptionFmt(env, "java/io/IOException", "unable to open dex file: %s",
                          sourceName.c_str());
     return 0;
diff --git a/test/068-classloader/src/FancyLoader.java b/test/068-classloader/src/FancyLoader.java
index 173b08f..28c17a8 100644
--- a/test/068-classloader/src/FancyLoader.java
+++ b/test/068-classloader/src/FancyLoader.java
@@ -35,10 +35,10 @@
  */
 public class FancyLoader extends ClassLoader {
     /* this is where the "alternate" .class files live */
-    static final String CLASS_PATH = "classes-ex/";
+    static final String CLASS_PATH = "/data/art-test";
 
     /* this is the "alternate" DEX/Jar file */
-    static final String DEX_FILE = "test-ex.jar";
+    static final String DEX_FILE = "068-classloader-ex.jar";
 
     /* on Dalvik, this is a DexFile; otherwise, it's null */
     private Class mDexClass;
@@ -94,7 +94,7 @@
                 }
 
                 try {
-                    mDexFile = ctor.newInstance(DEX_FILE);
+                    mDexFile = ctor.newInstance(CLASS_PATH + File.separator + DEX_FILE);
                 } catch (InstantiationException ie) {
                     throw new ClassNotFoundException("newInstance failed", ie);
                 } catch (IllegalAccessException iae) {