diff options
author | Steve Kondik <steve@cyngn.com> | 2015-12-08 03:20:54 -0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-12-08 03:20:54 -0800 |
commit | 875ffee6f23971466f3655a9e1e73ba6a1dc0393 (patch) | |
tree | 07b88bebf3229933589c6f98fe8ff2ae051c1181 /compiler | |
parent | 29bd42b5eb0382360e3a8cb646ccf4de4b3b1d5a (diff) | |
parent | 1dff62f822392dd3f95ec23ba578bf42430ba112 (diff) | |
download | art-875ffee6f23971466f3655a9e1e73ba6a1dc0393.zip art-875ffee6f23971466f3655a9e1e73ba6a1dc0393.tar.gz art-875ffee6f23971466f3655a9e1e73ba6a1dc0393.tar.bz2 |
Merge tag 'android-6.0.1_r3' of https://android.googlesource.com/platform/art into HEAD
Android 6.0.1 release 3
Change-Id: I23fd56f2c1a3e8e8b993a151a794e18f3569912e
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/jit/jit_compiler.cc | 33 | ||||
-rw-r--r-- | compiler/optimizing/reference_type_propagation.cc | 4 |
2 files changed, 35 insertions, 2 deletions
diff --git a/compiler/jit/jit_compiler.cc b/compiler/jit/jit_compiler.cc index 5ef744c..13825a7 100644 --- a/compiler/jit/jit_compiler.cc +++ b/compiler/jit/jit_compiler.cc @@ -19,6 +19,7 @@ #include "art_method-inl.h" #include "arch/instruction_set.h" #include "arch/instruction_set_features.h" +#include "base/stringpiece.h" #include "base/time_utils.h" #include "base/timing_logger.h" #include "compiler_callbacks.h" @@ -86,7 +87,37 @@ JitCompiler::JitCompiler() : total_time_(0) { nullptr, false)); const InstructionSet instruction_set = kRuntimeISA; - instruction_set_features_.reset(InstructionSetFeatures::FromCppDefines()); + for (const StringPiece option : Runtime::Current()->GetCompilerOptions()) { + VLOG(compiler) << "JIT compiler option " << option; + std::string error_msg; + if (option.starts_with("--instruction-set-variant=")) { + StringPiece str = option.substr(strlen("--instruction-set-variant=")).data(); + VLOG(compiler) << "JIT instruction set variant " << str; + instruction_set_features_.reset(InstructionSetFeatures::FromVariant( + instruction_set, str.as_string(), &error_msg)); + if (instruction_set_features_ == nullptr) { + LOG(WARNING) << "Error parsing " << option << " message=" << error_msg; + } + } else if (option.starts_with("--instruction-set-features=")) { + StringPiece str = option.substr(strlen("--instruction-set-features=")).data(); + VLOG(compiler) << "JIT instruction set features " << str; + if (instruction_set_features_.get() == nullptr) { + instruction_set_features_.reset(InstructionSetFeatures::FromVariant( + instruction_set, "default", &error_msg)); + if (instruction_set_features_ == nullptr) { + LOG(WARNING) << "Error parsing " << option << " message=" << error_msg; + } + } + instruction_set_features_.reset( + instruction_set_features_->AddFeaturesFromString(str.as_string(), &error_msg)); + if (instruction_set_features_ == nullptr) { + LOG(WARNING) << "Error parsing " << option << " message=" << error_msg; + } + } + } + if (instruction_set_features_ == nullptr) { + instruction_set_features_.reset(InstructionSetFeatures::FromCppDefines()); + } cumulative_logger_.reset(new CumulativeLogger("jit times")); verification_results_.reset(new VerificationResults(compiler_options_.get())); method_inliner_map_.reset(new DexFileToMethodInlinerMap); diff --git a/compiler/optimizing/reference_type_propagation.cc b/compiler/optimizing/reference_type_propagation.cc index 40ec46c..f8e4d10 100644 --- a/compiler/optimizing/reference_type_propagation.cc +++ b/compiler/optimizing/reference_type_propagation.cc @@ -316,7 +316,9 @@ bool ReferenceTypePropagation::UpdateNullability(HInstruction* instr) { void ReferenceTypePropagation::ProcessWorklist() { while (!worklist_.IsEmpty()) { HInstruction* instruction = worklist_.Pop(); - if (UpdateNullability(instruction) || UpdateReferenceTypeInfo(instruction)) { + bool updated_nullability = UpdateNullability(instruction); + bool updated_reference_type = UpdateReferenceTypeInfo(instruction); + if (updated_nullability || updated_reference_type) { AddDependentInstructionsToWorklist(instruction); } } |