From: Andreas Gampe Date: Sat, 28 Feb 2015 03:35:46 +0000 (-0800) Subject: ART: Allow dex2oat for apps only with image X-Git-Tag: android-x86-7.1-r1~889^2~1931^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=1d00addb6e6a6d0386cba393774031dbd88121ba;p=android-x86%2Fart.git ART: Allow dex2oat for apps only with image Do not allow a runtime without image when compiling an app. This avoids the current abort when we then try to run out of the (missing) boot classpath. Bug: 19100590 Change-Id: Ic269dc2fa807d003215ea134cb42fe4c4d78124e --- diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc index 0b1f14dd9..22665ea6e 100644 --- a/dex2oat/dex2oat.cc +++ b/dex2oat/dex2oat.cc @@ -1052,6 +1052,13 @@ class Dex2Oat FINAL { runtime_options.push_back( std::make_pair("imageinstructionset", GetInstructionSetString(instruction_set_))); + // Only allow no boot image for the runtime if we're compiling one. When we compile an app, + // we don't want fallback mode, it will abort as we do not push a boot classpath (it might + // have been stripped in preopting, anyways). + if (!image_) { + runtime_options.push_back(std::make_pair("-Xno-dex-file-fallback", nullptr)); + } + if (!CreateRuntime(runtime_options)) { return false; } @@ -1637,9 +1644,13 @@ class Dex2Oat FINAL { } void LogCompletionTime() { + // Note: when creation of a runtime fails, e.g., when trying to compile an app but when there + // is no image, there won't be a Runtime::Current(). LOG(INFO) << "dex2oat took " << PrettyDuration(NanoTime() - start_ns_) << " (threads: " << thread_count_ << ") " - << driver_->GetMemoryUsageString(kIsDebugBuild || VLOG_IS_ON(compiler)); + << ((Runtime::Current() != nullptr) ? + driver_->GetMemoryUsageString(kIsDebugBuild || VLOG_IS_ON(compiler)) : + ""); } std::unique_ptr compiler_options_;