diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp
index f09787c..0d0e55b 100644
--- a/src/Reactor/LLVMReactor.cpp
+++ b/src/Reactor/LLVMReactor.cpp
@@ -641,29 +641,28 @@
 
 std::shared_ptr<Routine> Nucleus::acquireRoutine(const char *name, const Config::Edit &cfgEdit /* = Config::Edit::None */)
 {
+	if(jit->builder->GetInsertBlock()->empty() || !jit->builder->GetInsertBlock()->back().isTerminator())
+	{
+		llvm::Type *type = jit->function->getReturnType();
+
+		if(type->isVoidTy())
+		{
+			createRetVoid();
+		}
+		else
+		{
+			createRet(V(llvm::UndefValue::get(type)));
+		}
+	}
+
 	std::shared_ptr<Routine> routine;
 
-	auto acquire = [&](rr::JITBuilder *jitBuilder) {
+	auto acquire = [&](rr::JITBuilder *jit) {
 		// ::jit is thread-local, so when this is executed on a separate thread (see JIT_IN_SEPARATE_THREAD)
-		// it needs to be assigned the value from the parent thread.
-		jit = jitBuilder;
+		// it needs to only use the jit variable passed in as an argument.
 
 		auto cfg = cfgEdit.apply(jit->config);
 
-		if(jit->builder->GetInsertBlock()->empty() || !jit->builder->GetInsertBlock()->back().isTerminator())
-		{
-			llvm::Type *type = jit->function->getReturnType();
-
-			if(type->isVoidTy())
-			{
-				createRetVoid();
-			}
-			else
-			{
-				createRet(V(llvm::UndefValue::get(type)));
-			}
-		}
-
 #ifdef ENABLE_RR_DEBUG_INFO
 		if(jit->debugInfo != nullptr)
 		{
@@ -696,8 +695,6 @@
 		}
 
 		routine = jit->acquireRoutine(&jit->function, 1, cfg);
-		delete jit;
-		jit = nullptr;
 	};
 
 #ifdef JIT_IN_SEPARATE_THREAD
@@ -705,10 +702,10 @@
 	// FIXME(b/149829034): This is not a long-term solution. Reactor has no control
 	// over the threading and stack sizes of its users, so this should be addressed
 	// at a higher level instead.
-	std::thread thread(acquire, std::move(jit));
+	std::thread thread(acquire, jit);
 	thread.join();
 #else
-	acquire(std::move(jit));
+	acquire(jit);
 #endif
 
 	return routine;
@@ -4297,7 +4294,9 @@
 	funcs[Nucleus::CoroutineEntryBegin] = jit->function;
 	funcs[Nucleus::CoroutineEntryAwait] = jit->coroutine.await;
 	funcs[Nucleus::CoroutineEntryDestroy] = jit->coroutine.destroy;
+
 	auto routine = jit->acquireRoutine(funcs, Nucleus::CoroutineEntryCount, cfg);
+
 	delete jit;
 	jit = nullptr;
 
