diff options
| author | 2013-06-27 07:13:43 +0000 | |
|---|---|---|
| committer | 2013-06-27 07:13:43 +0000 | |
| commit | e53ebbcf98d004f0e1f631a630d0344d104e3dc6 (patch) | |
| tree | 6190aab5b5c6061a25df9931e1b0dbd6229d0a95 /src/compiler/driver/compiler_driver.cc | |
| parent | eac1880f791c4a2b18f1b197cc6289a28ec11252 (diff) | |
| parent | 39f992750ac1eb7e51955d3e52bddc32b37c370f (diff) | |
Merge changes I3b33358e,I7467ee05 into dalvik-dev
* changes:
Added wrapper functions for register acccess in Instruction.
Added support for SEA IR.
Diffstat (limited to 'src/compiler/driver/compiler_driver.cc')
| -rw-r--r-- | src/compiler/driver/compiler_driver.cc | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/compiler/driver/compiler_driver.cc b/src/compiler/driver/compiler_driver.cc index 4a6eb962e3..122988aa5b 100644 --- a/src/compiler/driver/compiler_driver.cc +++ b/src/compiler/driver/compiler_driver.cc @@ -374,6 +374,11 @@ CompilerDriver::CompilerDriver(CompilerBackend compiler_backend, InstructionSet dex_to_dex_compiler_ = FindFunction<CompilerFn>(compiler_so_name, compiler_library_, "ArtCompileDEX"); + sea_ir_compiler_ = NULL; + if (Runtime::Current()->IsSeaIRMode()) { + sea_ir_compiler_ = FindFunction<CompilerFn>(compiler_so_name, compiler_library_, "SeaIrCompileMethod"); + } + init_compiler_context(*this); if (compiler_backend_ == kPortable) { @@ -2149,10 +2154,22 @@ void CompilerDriver::CompileMethod(const DexFile::CodeItem* code_item, uint32_t // Do compile small methods. dont_compile = false; } - if (!dont_compile) { - compiled_method = (*compiler_)(*this, code_item, access_flags, invoke_type, class_def_idx, + bool use_sea = false; + + if (Runtime::Current()->IsSeaIRMode()) { + use_sea = true; + } + if (use_sea) { + use_sea = (std::string::npos != PrettyMethod(method_idx, dex_file).find("fibonacci")); + } + if (!use_sea) { + compiled_method = (*compiler_)(*this, code_item, access_flags, invoke_type, class_def_idx, method_idx, class_loader, dex_file); + } else { + compiled_method = (*sea_ir_compiler_)(*this, code_item, access_flags, invoke_type, class_def_idx, + method_idx, class_loader, dex_file); + } CHECK(compiled_method != NULL) << PrettyMethod(method_idx, dex_file); } else if (allow_dex_to_dex_compilation) { // TODO: add a mode to disable DEX-to-DEX compilation ? |