kou commented on code in PR #38116:
URL: https://github.com/apache/arrow/pull/38116#discussion_r1357397257
##########
cpp/src/gandiva/engine.cc:
##########
@@ -152,6 +153,7 @@ Status Engine::LoadFunctionIRs() {
if (!functions_loaded_) {
ARROW_RETURN_NOT_OK(LoadPreCompiledIR());
ARROW_RETURN_NOT_OK(DecimalIR::AddFunctions(this));
+ ARROW_RETURN_NOT_OK(LoadExternalPreCompiledIR());
Review Comment:
Ah, I see. Thanks for organizing these issues.
1. I like the `std::vector<NativeFunction>` approach. I think that managing
both of signatures and bitcodes by `FunctionRegistry` is better than
introducing IR store for bitcodes. The signature and bitcode mapping will be
useful for loading bitcode to `gandiva::Engine` selectively for performance.
2. Could you explain "some shared library mechanism" a bit more? I think
that we need to load functions as bitcode to `gandiva::Engine` to use them.
Does "some shared library mechanism" mean that we may be able to add support
for loading native functions (sorry, I don't know how to call it. I imagine
that `gcc -shared -o multiply_by_two.so multiply_by_two.cc` and `handle =
dlopen("multiply_by_two.so"); dlsym(handle, "multiply_by_two_int32")`) to
`gandiva::Engine`?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]