Add additional symbol mapping to be able to provide custom symbols to jitted code at runtime.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
mlir/lib/ExecutionEngine/ExecutionEngine.cpp | ||
---|---|---|
199–203 | Copying an entire DenseMap just to read it isn't ideal. Can we pass is as const ref? | |
299 | Nit: no trivial brace please. |
mlir/lib/ExecutionEngine/ExecutionEngine.cpp | ||
---|---|---|
199–203 | Also: isn't something can can be done after creation? With a specific API to add symbols? |
Fix typo.
mlir/lib/ExecutionEngine/ExecutionEngine.cpp | ||
---|---|---|
199–203 | Done. I changed DenseMap to std::function callback. In theory it can be done later, after the creation of ExecutionEngine, though I think it makes sense to pass these details at the time of "create". |
mlir/lib/ExecutionEngine/ExecutionEngine.cpp | ||
---|---|---|
199–203 | Nit: please use function_ref for callbacks when you don't keep a ref to it.
Why? Seems like the kind of thing that makes more sense to me to add "as needed" instead of forcing it on the creation if there is no reason for it. |
mlir/lib/ExecutionEngine/ExecutionEngine.cpp | ||
---|---|---|
199–203 | Changed function parameters to llvm::function_ref. It has kind of the same purpose as sharedLibPaths (register symbols), and that's why it feels right to keep them next to each other, but I agree that create signature grows too big, and something has to be done. It doesn't make sense to me to make this change just for the symbol map, it has to be a new creation API with options struct, or builder, or something else. |
mlir/lib/ExecutionEngine/ExecutionEngine.cpp | ||
---|---|---|
199–203 | Right but if we agree that a refactoring of this API would be better, I rather see this *before* adding more to it (incidentally it'll reduce the churn on the users of the API) |
mlir/lib/ExecutionEngine/ExecutionEngine.cpp | ||
---|---|---|
199–203 | Alternatively, we can have an instance method ExecutionEngine::registerSymbols that can be called when necessary without touching the ExecutionEngine::create interface (it should be updated regardless, but this patch will be unblocked). |
mlir/lib/ExecutionEngine/ExecutionEngine.cpp | ||
---|---|---|
199–203 | I've added registerSymbols, not to do a full builder-style rewrite in this patch, because it's the one thing that does not have to be a part of create. |
LG, thanks!
mlir/include/mlir/ExecutionEngine/ExecutionEngine.h | ||
---|---|---|
122 | Nit comment should read "with this ExecutionEngine", "an" is a bit undefined / seems to refer to another object. |
Nit comment should read "with this ExecutionEngine", "an" is a bit undefined / seems to refer to another object.