Refactor runtime support builder.

Also, add inline assembly for load offset from current thread.

Change-Id: I5c32c04a5ab9a8574acbaf8ee3e08761ebe33d4f
diff --git a/src/compiler_llvm/upcall_compiler.cc b/src/compiler_llvm/upcall_compiler.cc
index 37dc981..0f3a92e 100644
--- a/src/compiler_llvm/upcall_compiler.cc
+++ b/src/compiler_llvm/upcall_compiler.cc
@@ -91,7 +91,7 @@
   llvm::Value* retval_addr = arg_iter++;
 
   // Setup thread pointer
-  irb_.CreateCall(irb_.GetRuntime(SetCurrentThread), thread_object_addr);
+  irb_.Runtime().EmitSetCurrentThread(thread_object_addr);
 
   // Accurate function type
   llvm::Type* accurate_ret_type = irb_.getJType(shorty[0], kAccurate);
@@ -158,7 +158,7 @@
   llvm::Value* code_addr = irb_.CreatePointerCast(result, accurate_func_type->getPointerTo());
 
   // Exception unwind.
-  llvm::Value* exception_pending = irb_.CreateCall(irb_.GetRuntime(IsExceptionPending));
+  llvm::Value* exception_pending = irb_.Runtime().EmitIsExceptionPending();
   llvm::BasicBlock* block_unwind = llvm::BasicBlock::Create(*context_, "exception_unwind", func);
   llvm::BasicBlock* block_cont = llvm::BasicBlock::Create(*context_, "cont", func);
   irb_.CreateCondBr(exception_pending, block_unwind, block_cont);