diff options
author | Arne Juul <arnej@yahoo-inc.com> | 2018-03-05 07:52:57 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahoo-inc.com> | 2018-03-05 09:23:58 +0000 |
commit | 74463fea2a4a75f885f16ebe9a556fa80a0248a7 (patch) | |
tree | 048c452245046932b1be188db255de4efd0943a5 /eval/src | |
parent | c91ecb2f8971f11bc7a5051c09ae87361b66089d (diff) |
DenseInplaceJoinFunction is also a Join
* this ensures that other optimizations higher up in the expression tree
may recognize the join and combine it to optimize further.
Diffstat (limited to 'eval/src')
3 files changed, 4 insertions, 7 deletions
diff --git a/eval/src/vespa/eval/eval/tensor_function.h b/eval/src/vespa/eval/eval/tensor_function.h index 2c3e9d21e0b..1f8c0588436 100644 --- a/eval/src/vespa/eval/eval/tensor_function.h +++ b/eval/src/vespa/eval/eval/tensor_function.h @@ -224,7 +224,7 @@ public: join_fun_t function_in) : Op2(result_type_in, lhs_in, rhs_in), _function(function_in) {} join_fun_t function() const { return _function; } - InterpretedFunction::Instruction compile_self(Stash &stash) const final override; + InterpretedFunction::Instruction compile_self(Stash &stash) const override; }; //----------------------------------------------------------------------------- diff --git a/eval/src/vespa/eval/tensor/dense/dense_inplace_join_function.cpp b/eval/src/vespa/eval/tensor/dense/dense_inplace_join_function.cpp index 53a5fe9bb27..78a407062c6 100644 --- a/eval/src/vespa/eval/tensor/dense/dense_inplace_join_function.cpp +++ b/eval/src/vespa/eval/tensor/dense/dense_inplace_join_function.cpp @@ -51,8 +51,7 @@ DenseInplaceJoinFunction::DenseInplaceJoinFunction(const ValueType &result_type, const TensorFunction &rhs, join_fun_t function_in, bool write_left_in) - : eval::tensor_function::Op2(result_type, lhs, rhs), - _function(function_in), + : eval::tensor_function::Join(result_type, lhs, rhs, function_in), _write_left(write_left_in) { } @@ -65,7 +64,7 @@ eval::InterpretedFunction::Instruction DenseInplaceJoinFunction::compile_self(Stash &) const { auto op = _write_left ? my_inplace_join_op<true> : my_inplace_join_op<false>; - return eval::InterpretedFunction::Instruction(op, (uint64_t)_function); + return eval::InterpretedFunction::Instruction(op, (uint64_t)function()); } const TensorFunction & diff --git a/eval/src/vespa/eval/tensor/dense/dense_inplace_join_function.h b/eval/src/vespa/eval/tensor/dense/dense_inplace_join_function.h index de2cdae3778..d31ce99dda4 100644 --- a/eval/src/vespa/eval/tensor/dense/dense_inplace_join_function.h +++ b/eval/src/vespa/eval/tensor/dense/dense_inplace_join_function.h @@ -9,12 +9,11 @@ namespace vespalib::tensor { /** * Tensor function for inplace join operation on mutable dense tensors. **/ -class DenseInplaceJoinFunction : public eval::tensor_function::Op2 +class DenseInplaceJoinFunction : public eval::tensor_function::Join { public: using join_fun_t = ::vespalib::eval::tensor_function::join_fun_t; private: - join_fun_t _function; bool _write_left; public: DenseInplaceJoinFunction(const eval::ValueType &result_type, @@ -23,7 +22,6 @@ public: join_fun_t function_in, bool write_left_in); ~DenseInplaceJoinFunction(); - join_fun_t function() const { return _function; } bool write_left() const { return _write_left; } bool result_is_mutable() const override { return true; } eval::InterpretedFunction::Instruction compile_self(Stash &stash) const override; |