summaryrefslogtreecommitdiff
path: root/src/compiler_llvm/compiler_llvm.cc
diff options
context:
space:
mode:
author Shih-wei Liao <sliao@google.com> 2012-06-12 05:55:00 -0700
committer Shih-wei Liao <sliao@google.com> 2012-09-15 04:15:17 -0700
commit21d28f510eb590f52810c83f1f3f37fe5f4adf46 (patch)
treef937b4d39aab322541b9b83cc5dd59d8e3f2fddd /src/compiler_llvm/compiler_llvm.cc
parent0967a25d1482d8f7b4a26c5926263e7ffa63189f (diff)
GBC Expander. Removed lir.
Change-Id: If8d13e36f1e6d82c2a7f7bfec62b8fb41fd8cdaa
Diffstat (limited to 'src/compiler_llvm/compiler_llvm.cc')
-rw-r--r--src/compiler_llvm/compiler_llvm.cc20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/compiler_llvm/compiler_llvm.cc b/src/compiler_llvm/compiler_llvm.cc
index b30486c6cc..dc796434df 100644
--- a/src/compiler_llvm/compiler_llvm.cc
+++ b/src/compiler_llvm/compiler_llvm.cc
@@ -23,11 +23,14 @@
#include "compiler.h"
#include "ir_builder.h"
#include "jni_compiler.h"
-#include "method_compiler.h"
+#ifndef ART_USE_DEXLANG_FRONTEND
+# include "method_compiler.h"
+#endif
#include "oat_compilation_unit.h"
#include "oat_file.h"
#include "stl_util.h"
#include "stub_compiler.h"
+#include "utils_llvm.h"
#include <llvm/LinkAllPasses.h>
#include <llvm/LinkAllVMCore.h>
@@ -121,10 +124,25 @@ CompiledMethod* CompilerLLVM::
CompileDexMethod(OatCompilationUnit* oat_compilation_unit) {
UniquePtr<CompilationUnit> cunit(AllocateCompilationUnit());
+#ifdef ART_USE_DEXLANG_FRONTEND
+ // Run DexLang for Dex to Greenland Bitcode
+ UniquePtr<greenland::DexLang> dex_lang(
+ new greenland::DexLang(*cunit->GetDexLangContext(), *compiler_,
+ *oat_compilation_unit));
+
+ llvm::Function* func = dex_lang->Build();
+ CHECK(func != NULL);
+
+ cunit->Materialize();
+
+ return new CompiledMethod(cunit->GetInstructionSet(),
+ cunit->GetCompiledCode());
+#else
UniquePtr<MethodCompiler> method_compiler(
new MethodCompiler(cunit.get(), compiler_, oat_compilation_unit));
return method_compiler->Compile();
+#endif
}