================
@@ -115,15 +120,38 @@ class Interpreter {
   /// An optional compiler instance for CUDA offloading
   std::unique_ptr<CompilerInstance> DeviceCI;
 
+public:
+  struct JITConfig {
+    /// Indicates whether out-of-process JIT execution is enabled.
+    bool IsOutOfProcess = false;
+    /// Path to the out-of-process JIT executor.
+    std::string OOPExecutor = "";
+    std::string OOPExecutorConnect = "";
+    /// Indicates whether to use shared memory for communication.
+    bool UseSharedMemory = false;
+    /// Representing the slab allocation size for memory management in kb.
+    unsigned SlabAllocateSize = 0;
+    /// Path to the ORC runtime library.
+    std::string OrcRuntimePath = "";
+    /// PID of the out-of-process JIT executor.
+    uint32_t ExecutorPID = 0;
+
+    JITConfig()
+        : IsOutOfProcess(false), OOPExecutor(""), OOPExecutorConnect(""),
+          UseSharedMemory(false), SlabAllocateSize(0), OrcRuntimePath(""),
+          ExecutorPID(0) {}
+  };
+
----------------
lhames wrote:

>From discussion with @vgvassilev it sounds like the motivation here was to 
>defer creation of the `LLJITBuilder` until you can ask the driver for the 
>runtime path?

This solves that problem, but eliminates the ability to configure the builder.

What if you added a new member and callback along the lines of:

```c++
  std::optional<std::string> OrcRuntimePath;
  llvm::unique_function<LLJITBuilder(&JITConfig)> MakeJITBuilder = 
makeDefaultJITBuilder;
```
then in the setup path you'd have something like:
```c++
  if (!Cfg.OrcRuntimePath) {
    if (OrcRTPath = getOrcRuntimePath(TC))
      CfgOrcRuntimePath = std::move(*OrcRTPath);
    else
      return OrcRTPath.takeError();
  }
  auto JITBuilder = MakeJITBuilder(Cfg);
  if (auto JOrErr = JITBuilder.create())
    J = std::move(*JOrErr);
  else
    return JOrErr.takeError();
  ...
```
The extra indirection gives you the opportunity to ask the driver for the path 
(if one isn't provided) while still giving the client the opportunity to 
configure the LLJITBuilder.

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