From d668a06b5dcc3b0f7f788da4d756cd4ee6f1d0fa Mon Sep 17 00:00:00 2001 From: TDYa127 Date: Fri, 13 Apr 2012 12:36:57 -0700 Subject: Implement runtime support inlining. Change-Id: I8608b246a4dfde9959b5b86872f65dfa61646c84 --- src/compiler_llvm/compilation_unit.cc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/compiler_llvm/compilation_unit.cc') diff --git a/src/compiler_llvm/compilation_unit.cc b/src/compiler_llvm/compilation_unit.cc index b3a9c714cf..fde023c914 100644 --- a/src/compiler_llvm/compilation_unit.cc +++ b/src/compiler_llvm/compilation_unit.cc @@ -20,6 +20,9 @@ #include "ir_builder.h" #include "logging.h" +#include "runtime_support_builder_arm.h" +#include "runtime_support_builder_x86.h" + #include #include #include @@ -70,6 +73,24 @@ CompilationUnit::CompilationUnit(InstructionSet insn_set, size_t elf_idx) // Create IRBuilder irb_.reset(new IRBuilder(*context_, *module_)); + + // We always need a switch case, so just use a normal function. + switch(insn_set_) { + default: + runtime_support_.reset(new RuntimeSupportBuilder(*context_, *module_, *irb_)); + break; + case kArm: + case kThumb2: + runtime_support_.reset(new RuntimeSupportBuilderARM(*context_, *module_, *irb_)); + break; + case kX86: + runtime_support_.reset(new RuntimeSupportBuilderX86(*context_, *module_, *irb_)); + break; + } + + runtime_support_->OptimizeRuntimeSupport(); + + irb_->SetRuntimeSupport(runtime_support_.get()); } -- cgit v1.2.3-59-g8ed1b