Add internal compiler option to control defaulting of boot.art
Change-Id: I92a46cbd25cfc51c5c5d16fd8ae24c50195bf1d4
diff --git a/src/dex2oat.cc b/src/dex2oat.cc
index a4d7449..16b303e 100644
--- a/src/dex2oat.cc
+++ b/src/dex2oat.cc
@@ -145,6 +145,7 @@
}
Runtime::Options options;
+ options.push_back(std::make_pair("compiler", reinterpret_cast<void*>(NULL)));
std::string boot_class_path_string;
if (boot_image_option.empty()) {
boot_class_path_string += "-Xbootclasspath:";
diff --git a/src/object.cc b/src/object.cc
index e8aeecd..81c646e 100644
--- a/src/object.cc
+++ b/src/object.cc
@@ -376,7 +376,8 @@
}
Class* Method::GetReturnType() const {
- DCHECK(GetDeclaringClass()->IsResolved() || GetDeclaringClass()->IsErroneous());
+ DCHECK(GetDeclaringClass()->IsResolved() || GetDeclaringClass()->IsErroneous())
+ << PrettyMethod(this);
// Short-cut
Class* result = GetDexCacheResolvedTypes()->Get(GetReturnTypeIdx());
if (result == NULL) {
@@ -587,7 +588,7 @@
uint32_t Method::ToDexPC(const uintptr_t pc) const {
const uint32_t* mapping_table = GetMappingTable();
if (mapping_table == NULL) {
- DCHECK(IsNative());
+ DCHECK(IsNative()) << PrettyMethod(this);
return DexFile::kDexNoIndex; // Special no mapping case
}
size_t mapping_table_length = GetMappingTableLength();
@@ -698,14 +699,14 @@
}
void Method::RegisterNative(const void* native_method) {
- CHECK(IsNative());
- CHECK(native_method != NULL);
+ CHECK(IsNative()) << PrettyMethod(this);
+ CHECK(native_method != NULL) << PrettyMethod(this);
SetFieldPtr<const void*>(OFFSET_OF_OBJECT_MEMBER(Method, native_method_),
native_method, false);
}
void Method::UnregisterNative() {
- CHECK(IsNative());
+ CHECK(IsNative()) << PrettyMethod(this);
// restore stub to lookup native pointer via dlsym
RegisterNative(Runtime::Current()->GetJniStubArray()->GetData());
}
diff --git a/src/runtime.cc b/src/runtime.cc
index dc9d6e7..fd9cc8c 100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -189,6 +189,7 @@
Runtime::ParsedOptions* Runtime::ParsedOptions::Create(const Options& options, bool ignore_unrecognized) {
UniquePtr<ParsedOptions> parsed(new ParsedOptions());
+ bool compiler = false;
const char* boot_class_path = getenv("BOOTCLASSPATH");
if (boot_class_path != NULL) {
parsed->boot_class_path_ = getenv("BOOTCLASSPATH");
@@ -273,9 +274,10 @@
parsed->properties_.push_back(option.substr(strlen("-D")).data());
} else if (option.starts_with("-Xjnitrace:")) {
parsed->jni_trace_ = option.substr(strlen("-Xjnitrace:")).data();
+ } else if (option == "compiler") {
+ compiler = true;
} else if (option == "-Xzygote") {
parsed->is_zygote_ = true;
- parsed->images_.push_back("/data/art-cache/boot.art");
} else if (option.starts_with("-verbose:")) {
std::vector<std::string> verbose_options;
Split(option.substr(strlen("-verbose:")).data(), ',', verbose_options);
@@ -300,6 +302,10 @@
}
}
+ if (!compiler && parsed->images_.empty()) {
+ parsed->images_.push_back("/data/art-cache/boot.art");
+ }
+
LOG(INFO) << "CheckJNI is " << (parsed->check_jni_ ? "on" : "off");
return parsed.release();