diff options
| -rw-r--r-- | dex2oat/dex2oat.cc | 18 | ||||
| -rw-r--r-- | runtime/class_loader_context.cc | 4 | ||||
| -rw-r--r-- | runtime/class_loader_context.h | 10 |
3 files changed, 16 insertions, 16 deletions
diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc index fd22dcdcc4..0826fa1488 100644 --- a/dex2oat/dex2oat.cc +++ b/dex2oat/dex2oat.cc @@ -1304,7 +1304,7 @@ class Dex2Oat FINAL { } else if (option.starts_with("--class-loader-context=")) { class_loader_context_ = ClassLoaderContext::Create( option.substr(strlen("--class-loader-context=")).data()); - if (class_loader_context_ == nullptr) { + if (class_loader_context_== nullptr) { Usage("Option --class-loader-context has an incorrect format: %s", option.data()); } } else if (!compiler_options_->ParseCompilerOption(option, Usage)) { @@ -1569,12 +1569,20 @@ class Dex2Oat FINAL { } // Open dex files for class path. - if (class_loader_context_ == nullptr) { - // If no context was specified use the default one (which is an empty PathClassLoader). - class_loader_context_ = std::unique_ptr<ClassLoaderContext>(ClassLoaderContext::Default()); + // TODO(calin): Temporary workaround while we transition to use + // --class-loader-context instead of --runtime-arg -cp + if (runtime_->GetClassPathString().empty()) { + class_loader_context_ = std::unique_ptr<ClassLoaderContext>( + new ClassLoaderContext()); + } else { + std::string spec = runtime_->GetClassPathString() == OatFile::kSpecialSharedLibrary + ? OatFile::kSpecialSharedLibrary + : "PCL[" + runtime_->GetClassPathString() + "]"; + class_loader_context_ = ClassLoaderContext::Create(spec); + } } - + CHECK(class_loader_context_ != nullptr); DCHECK_EQ(oat_writers_.size(), 1u); // Note: Ideally we would reject context where the source dex files are also diff --git a/runtime/class_loader_context.cc b/runtime/class_loader_context.cc index e7051b35d8..b50aec0b63 100644 --- a/runtime/class_loader_context.cc +++ b/runtime/class_loader_context.cc @@ -68,10 +68,6 @@ ClassLoaderContext::~ClassLoaderContext() { } } -std::unique_ptr<ClassLoaderContext> ClassLoaderContext::Default() { - return Create(""); -} - std::unique_ptr<ClassLoaderContext> ClassLoaderContext::Create(const std::string& spec) { std::unique_ptr<ClassLoaderContext> result(new ClassLoaderContext()); if (result->Parse(spec)) { diff --git a/runtime/class_loader_context.h b/runtime/class_loader_context.h index 9afa880da4..85299d41c0 100644 --- a/runtime/class_loader_context.h +++ b/runtime/class_loader_context.h @@ -34,6 +34,9 @@ class OatFile; // Utility class which holds the class loader context used during compilation/verification. class ClassLoaderContext { public: + // Creates an empty context (with no class loaders). + ClassLoaderContext(); + ~ClassLoaderContext(); // Opens requested class path files and appends them to ClassLoaderInfo::opened_dex_files. @@ -123,10 +126,6 @@ class ClassLoaderContext { static std::unique_ptr<ClassLoaderContext> CreateContextForClassLoader(jobject class_loader, jobjectArray dex_elements); - // Returns the default class loader context to be used when none is specified. - // This will return a context with a single and empty PathClassLoader. - static std::unique_ptr<ClassLoaderContext> Default(); - private: enum ClassLoaderType { kInvalidClassLoader = 0, @@ -152,9 +151,6 @@ class ClassLoaderContext { explicit ClassLoaderInfo(ClassLoaderType cl_type) : type(cl_type) {} }; - // Creates an empty context (with no class loaders). - ClassLoaderContext(); - // Constructs an empty context. // `owns_the_dex_files` specifies whether or not the context will own the opened dex files // present in the class loader chain. If `owns_the_dex_files` is true then OpenDexFiles cannot |