================
@@ -460,10 +464,99 @@ const char *const Runtimes = R"(
   EXTERN_C void __clang_Interpreter_SetValueNoAlloc(void *This, void *OutVal, 
void *OpaqueType, ...);
 )";
 
+llvm::ExitOnError ExitOnErr;
+
+std::unique_ptr<llvm::orc::LLJITBuilder>
+Interpreter::outOfProcessJITBuilder(OutOfProcessJITConfig OutOfProcessConfig) {
+  std::unique_ptr<llvm::orc::ExecutorProcessControl> EPC;
+  if (OutOfProcessConfig.OOPExecutor != "") {
+    // Launch an out-of-process executor locally in a child process.
+    EPC = ExitOnErr(launchExecutor(OutOfProcessConfig.OOPExecutor,
+                                   OutOfProcessConfig.UseSharedMemory,
+                                   OutOfProcessConfig.SlabAllocateSizeString));
+  } else if (OutOfProcessConfig.OOPExecutorConnect != "") {
+    EPC =
+        ExitOnErr(connectTCPSocket(OutOfProcessConfig.OOPExecutorConnect,
+                                   OutOfProcessConfig.UseSharedMemory,
+                                   OutOfProcessConfig.SlabAllocateSizeString));
+  }
+
+  std::unique_ptr<llvm::orc::LLJITBuilder> JB;
+  if (EPC) {
+    JB = ExitOnErr(clang::Interpreter::createLLJITBuilder(
+        std::move(EPC), OutOfProcessConfig.OrcRuntimePath));
+  }
+
+  return JB;
+}
+
+llvm::Expected<std::string>
+Interpreter::getOrcRuntimePath(const driver::ToolChain &TC) {
+  std::optional<std::string> CompilerRTPath = TC.getCompilerRTPath();
+  if (!CompilerRTPath) {
+    return llvm::make_error<llvm::StringError>("CompilerRT path not found",
+                                               std::error_code());
+  }
+  llvm::SmallString<256> BasePath(llvm::sys::fs::getMainExecutable(
+      "clang-repl", reinterpret_cast<void *>(&getOrcRuntimePath)));
----------------
vgvassilev wrote:

That does not work when we are in a library. Why do we need the BasePath at 
all? I'd think we can ask the `TC` and that is mostly it. Do you try to get 
somehow to the source directory?

https://github.com/llvm/llvm-project/pull/155140
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to