summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2018-03-05 07:52:57 +0000
committerArne Juul <arnej@yahoo-inc.com>2018-03-05 09:23:58 +0000
commit74463fea2a4a75f885f16ebe9a556fa80a0248a7 (patch)
tree048c452245046932b1be188db255de4efd0943a5 /eval
parentc91ecb2f8971f11bc7a5051c09ae87361b66089d (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')
-rw-r--r--eval/src/vespa/eval/eval/tensor_function.h2
-rw-r--r--eval/src/vespa/eval/tensor/dense/dense_inplace_join_function.cpp5
-rw-r--r--eval/src/vespa/eval/tensor/dense/dense_inplace_join_function.h4
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;