diff --git a/lib/ExecutionEngine/JIT/JIT.cpp b/lib/ExecutionEngine/JIT/JIT.cpp
index dce5ebd..ec170fe 100644
--- a/lib/ExecutionEngine/JIT/JIT.cpp
+++ b/lib/ExecutionEngine/JIT/JIT.cpp
@@ -368,7 +368,7 @@
 GenericValue JIT::runFunction(Function *F,
                               const std::vector<GenericValue> &ArgValues) {
   assert(F && "Function *F was null at entry to run()");
-  LLVMContext *Context = F->getContext();
+  LLVMContext &Context = F->getContext();
 
   void *FPtr = getPointerToFunction(F);
   assert(FPtr && "Pointer to fn's code was null after getPointerToFunction");
@@ -470,7 +470,7 @@
   // arguments.  Make this function and return.
 
   // First, create the function.
-  FunctionType *STy=Context->getFunctionType(RetTy, false);
+  FunctionType *STy=Context.getFunctionType(RetTy, false);
   Function *Stub = Function::Create(STy, Function::InternalLinkage, "",
                                     F->getParent());
 
@@ -487,27 +487,27 @@
     switch (ArgTy->getTypeID()) {
     default: llvm_unreachable("Unknown argument type for function call!");
     case Type::IntegerTyID:
-        C = Context->getConstantInt(AV.IntVal);
+        C = Context.getConstantInt(AV.IntVal);
         break;
     case Type::FloatTyID:
-        C = Context->getConstantFP(APFloat(AV.FloatVal));
+        C = Context.getConstantFP(APFloat(AV.FloatVal));
         break;
     case Type::DoubleTyID:
-        C = Context->getConstantFP(APFloat(AV.DoubleVal));
+        C = Context.getConstantFP(APFloat(AV.DoubleVal));
         break;
     case Type::PPC_FP128TyID:
     case Type::X86_FP80TyID:
     case Type::FP128TyID:
-        C = Context->getConstantFP(APFloat(AV.IntVal));
+        C = Context.getConstantFP(APFloat(AV.IntVal));
         break;
     case Type::PointerTyID:
       void *ArgPtr = GVTOP(AV);
       if (sizeof(void*) == 4)
-        C = Context->getConstantInt(Type::Int32Ty, (int)(intptr_t)ArgPtr);
+        C = Context.getConstantInt(Type::Int32Ty, (int)(intptr_t)ArgPtr);
       else
-        C = Context->getConstantInt(Type::Int64Ty, (intptr_t)ArgPtr);
+        C = Context.getConstantInt(Type::Int64Ty, (intptr_t)ArgPtr);
       // Cast the integer to pointer
-      C = Context->getConstantExprIntToPtr(C, ArgTy);
+      C = Context.getConstantExprIntToPtr(C, ArgTy);
       break;
     }
     Args.push_back(C);
