Pass the classpath to dex2oat.
This makes it possible to run applications that have multiple
dex files on the classpath.
Change-Id: I15264a001a46ddb253e87f2739e6b9644348f1be
diff --git a/src/compiler.cc b/src/compiler.cc
index 0a4117d..fabd8fd 100644
--- a/src/compiler.cc
+++ b/src/compiler.cc
@@ -82,13 +82,24 @@
}
}
-void Compiler::CompileAll(const ClassLoader* class_loader) {
+void Compiler::CompileAll(const ClassLoader* class_loader,
+ const std::vector<const DexFile*>& dex_files) {
DCHECK(!Runtime::Current()->IsStarted());
- Resolve(class_loader);
- Verify(class_loader);
- InitializeClassesWithoutClinit(class_loader);
- Compile(class_loader);
- SetCodeAndDirectMethods(class_loader);
+ for (size_t i = 0; i != dex_files.size(); ++i) {
+ ResolveDexFile(class_loader, *dex_files[i]);
+ }
+ for (size_t i = 0; i != dex_files.size(); ++i) {
+ VerifyDexFile(class_loader, *dex_files[i]);
+ }
+ for (size_t i = 0; i != dex_files.size(); ++i) {
+ InitializeClassesWithoutClinit(class_loader, *dex_files[i]);
+ }
+ for (size_t i = 0; i != dex_files.size(); ++i) {
+ CompileDexFile(class_loader, *dex_files[i]);
+ }
+ for (size_t i = 0; i != dex_files.size(); ++i) {
+ SetCodeAndDirectMethodsDexFile(*dex_files[i]);
+ }
}
void Compiler::CompileOne(const Method* method) {