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]

Reply via email to