summaryrefslogtreecommitdiff
path: root/src/compiler_llvm/compiler_llvm.cc
diff options
context:
space:
mode:
author Ian Rogers <irogers@google.com> 2012-08-24 14:35:25 -0700
committer Ian Rogers <irogers@google.com> 2012-08-28 11:34:56 -0700
commit08f753d5859936f8d3524e9e4faa6cee353873ea (patch)
tree5679a9ad8be6827e2a10de282cd28e3d000917de /src/compiler_llvm/compiler_llvm.cc
parentb0b2be7688109cff548d2ddc8f02eecbad49ecd2 (diff)
Avoid compile time rewriting of dex code by verifier.
Compile time rewriting of dex code leads to dead code that is causing issues with the LLVM compiler. Make instantiation and incompatible class change errors be detected in slow path field and invoke logic so its safe for the compile time verification just to softly fail the effected classes. This change places incompatible class change logic into the class linkers ResolveMethod and consequently changes a number of APIs. Change-Id: Ifb25f09accea348d15180f6ff041e38dfe0d536e
Diffstat (limited to 'src/compiler_llvm/compiler_llvm.cc')
-rw-r--r--src/compiler_llvm/compiler_llvm.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/compiler_llvm/compiler_llvm.cc b/src/compiler_llvm/compiler_llvm.cc
index e52478bc1a..b30486c6cc 100644
--- a/src/compiler_llvm/compiler_llvm.cc
+++ b/src/compiler_llvm/compiler_llvm.cc
@@ -188,13 +188,13 @@ extern "C" void ArtUnInitCompilerContext(art::Compiler& compiler) {
delete ContextOf(compiler);
compiler.SetCompilerContext(NULL);
}
-
extern "C" art::CompiledMethod* ArtCompileMethod(art::Compiler& compiler,
const art::DexFile::CodeItem* code_item,
- uint32_t access_flags, uint32_t method_idx,
+ uint32_t access_flags,
+ art::InvokeType invoke_type,
+ uint32_t method_idx,
jobject class_loader,
- const art::DexFile& dex_file)
-{
+ const art::DexFile& dex_file) {
art::ClassLinker *class_linker = art::Runtime::Current()->GetClassLinker();
art::OatCompilationUnit oat_compilation_unit(