Make compiler initialization of classes parallel.

Fix hang where super class initialization could fail to notify threads
trying to initialize sub-class.
Unify logging to log file being compiled in all occurances.
Remove empty PostCompile method.
Remove experimental ForAllDexFile & Class code.

Change-Id: I471e9414f94d468d53b401e086f0fb65e36cc27c
diff --git a/src/compiler.h b/src/compiler.h
index a238b88..a2cc317 100644
--- a/src/compiler.h
+++ b/src/compiler.h
@@ -227,19 +227,20 @@
     return methods_to_patch_;
   }
 
+  // Checks if class specified by type_idx is one of the image_classes_
+  bool IsImageClass(const std::string& descriptor) const;
+
+  void RecordClassStatus(ClassReference ref, CompiledClass* compiled_class);
+
  private:
   // Compute constant code and method pointers when possible
   void GetCodeAndMethodForDirectCall(InvokeType type, InvokeType sharp_type, AbstractMethod* method,
                                      uintptr_t& direct_code, uintptr_t& direct_method)
       SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
 
-  // Checks if class specified by type_idx is one of the image_classes_
-  bool IsImageClass(const std::string& descriptor) const;
-
   void PreCompile(jobject class_loader, const std::vector<const DexFile*>& dex_files,
                   TimingLogger& timings)
       LOCKS_EXCLUDED(Locks::mutator_lock_);
-  void PostCompile(jobject class_loader, const std::vector<const DexFile*>& dex_files);
 
   // Attempt to resolve all type, methods, fields, and strings
   // referenced from code in the dex file following PathClassLoader
@@ -250,18 +251,22 @@
   void ResolveDexFile(jobject class_loader, const DexFile& dex_file, TimingLogger& timings)
       LOCKS_EXCLUDED(Locks::mutator_lock_);
 
-  void Verify(jobject class_loader, const std::vector<const DexFile*>& dex_files);
-  void VerifyDexFile(jobject class_loader, const DexFile& dex_file)
+  void Verify(jobject class_loader, const std::vector<const DexFile*>& dex_files,
+              TimingLogger& timings);
+  void VerifyDexFile(jobject class_loader, const DexFile& dex_file, TimingLogger& timings)
       LOCKS_EXCLUDED(Locks::mutator_lock_);
 
   void InitializeClassesWithoutClinit(jobject class_loader,
-                                      const std::vector<const DexFile*>& dex_files)
+                                      const std::vector<const DexFile*>& dex_files,
+                                      TimingLogger& timings)
       LOCKS_EXCLUDED(Locks::mutator_lock_);
-  void InitializeClassesWithoutClinit(jobject class_loader, const DexFile& dex_file)
+  void InitializeClassesWithoutClinit(jobject class_loader, const DexFile& dex_file,
+                                      TimingLogger& timings)
       LOCKS_EXCLUDED(Locks::mutator_lock_, compiled_classes_lock_);
 
-  void Compile(jobject class_loader, const std::vector<const DexFile*>& dex_files);
-  void CompileDexFile(jobject class_loader, const DexFile& dex_file)
+  void Compile(jobject class_loader, const std::vector<const DexFile*>& dex_files,
+               TimingLogger& timings);
+  void CompileDexFile(jobject class_loader, const DexFile& dex_file, TimingLogger& timings)
       LOCKS_EXCLUDED(Locks::mutator_lock_);
   void CompileMethod(const DexFile::CodeItem* code_item, uint32_t access_flags,
                      InvokeType invoke_type, uint32_t method_idx,