Add art runtime support declaration.

Change-Id: I909ac29ef4ffbcbe93c7809e2d396ed4672f5892
diff --git a/src/compiler_llvm/ir_builder.cc b/src/compiler_llvm/ir_builder.cc
index 24fac1a..b2c795b 100644
--- a/src/compiler_llvm/ir_builder.cc
+++ b/src/compiler_llvm/ir_builder.cc
@@ -15,6 +15,7 @@
  */
 
 #include "ir_builder.h"
+#include "runtime_support_func.h"
 
 #include <llvm/Module.h>
 
@@ -30,9 +31,45 @@
 : LLVMIRBuilder(context) {
 
   // Get java object type from module
-  llvm::Type* jobject_struct_type =
-    llvm::StructType::create(context, "JavaObject");
+  llvm::Type* jobject_struct_type = module.getTypeByName("JavaObject");
+  CHECK_NE(jobject_struct_type, static_cast<llvm::Type*>(NULL));
   jobject_type_ = jobject_struct_type->getPointerTo();
+
+  // Load the runtime support function declaration from module
+  InitRuntimeSupportFuncDecl(module);
+}
+
+
+//----------------------------------------------------------------------------
+// Runtime Helper Function
+//----------------------------------------------------------------------------
+
+void IRBuilder::InitRuntimeSupportFuncDecl(llvm::Module& module) {
+  using namespace runtime_support;
+
+#define GET_RUNTIME_SUPPORT_FUNC_DECL(ID, NAME) \
+  do { \
+    llvm::Function* fn = module.getFunction(NAME); \
+    DCHECK_NE(fn, (void*)NULL) << "Function not found: " << NAME; \
+    runtime_support_func_decls_[ID] = fn; \
+  } while (0);
+
+#include "runtime_support_func_list.h"
+  RUNTIME_SUPPORT_FUNC_LIST(GET_RUNTIME_SUPPORT_FUNC_DECL)
+#undef RUNTIME_SUPPORT_FUNC_LIST
+#undef GET_RUNTIME_SUPPORT_FUNC_DECL
+}
+
+
+llvm::Function* IRBuilder::GetRuntime(runtime_support::RuntimeId rt) const {
+  using namespace runtime_support;
+
+  if (rt >= 0 && rt < MAX_ID){
+    return runtime_support_func_decls_[rt];
+  } else {
+    LOG(ERROR) << "Unknown runtime function id: " << rt;
+    return NULL;
+  }
 }