aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHaavard <havardpe@yahoo-inc.com>2017-02-24 09:01:52 +0000
committerHaavard <havardpe@yahoo-inc.com>2017-02-24 09:01:52 +0000
commitbfdaa16177e98d3396203e203dbdaad0a7681c7b (patch)
tree0b143ba08870717d57a0b2aced51d293a38c9ab0 /searchlib
parent4648d58976d5cb8ae84c11beb10f564839751a0f (diff)
never run execute directly
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/fef/featureoverride/featureoverride.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/featureexecutor.h12
-rw-r--r--searchlib/src/vespa/searchlib/fef/featureoverrider.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/rank_program.cpp2
4 files changed, 12 insertions, 6 deletions
diff --git a/searchlib/src/tests/fef/featureoverride/featureoverride.cpp b/searchlib/src/tests/fef/featureoverride/featureoverride.cpp
index e77e50a99c8..ec82adc1b3a 100644
--- a/searchlib/src/tests/fef/featureoverride/featureoverride.cpp
+++ b/searchlib/src/tests/fef/featureoverride/featureoverride.cpp
@@ -34,7 +34,7 @@ struct Fixture
md = mdl.createMatchData();
for (const auto &executor : executors) {
executor->bind_match_data(*md);
- executor->execute(1);
+ executor->lazy_execute(1);
}
return *this;
}
diff --git a/searchlib/src/vespa/searchlib/fef/featureexecutor.h b/searchlib/src/vespa/searchlib/fef/featureexecutor.h
index 117e0b95194..b2583b561d5 100644
--- a/searchlib/src/vespa/searchlib/fef/featureexecutor.h
+++ b/searchlib/src/vespa/searchlib/fef/featureexecutor.h
@@ -103,6 +103,13 @@ protected:
virtual void handle_bind_outputs(vespalib::ArrayRef<NumberOrObject> outputs);
virtual void handle_bind_match_data(MatchData &md);
+ /**
+ * Execute this feature executor for the given document.
+ *
+ * @param docid the local document id being evaluated
+ **/
+ virtual void execute(uint32_t docId) = 0;
+
public:
/**
* Create a feature executor that has not yet been bound to neither
@@ -137,12 +144,11 @@ public:
virtual bool isPure();
/**
- * Execute this feature executor on the given data.
+ * Make sure this executor has been executed for the given
+ * document.
*
* @param docid the local document id being evaluated
**/
- virtual void execute(uint32_t docId) = 0;
-
void lazy_execute(uint32_t docid) {
if (_inputs.get_docid() != docid) {
_inputs.set_docid(docid);
diff --git a/searchlib/src/vespa/searchlib/fef/featureoverrider.cpp b/searchlib/src/vespa/searchlib/fef/featureoverrider.cpp
index c4557d48d2e..364abea4942 100644
--- a/searchlib/src/vespa/searchlib/fef/featureoverrider.cpp
+++ b/searchlib/src/vespa/searchlib/fef/featureoverrider.cpp
@@ -34,7 +34,7 @@ FeatureOverrider::isPure()
void
FeatureOverrider::execute(uint32_t docId)
{
- _executor.execute(docId);
+ _executor.lazy_execute(docId);
if (_outputIdx < outputs().size()) {
outputs().set_number(_outputIdx, _value);
}
diff --git a/searchlib/src/vespa/searchlib/fef/rank_program.cpp b/searchlib/src/vespa/searchlib/fef/rank_program.cpp
index abc6deb8618..df16396aa8a 100644
--- a/searchlib/src/vespa/searchlib/fef/rank_program.cpp
+++ b/searchlib/src/vespa/searchlib/fef/rank_program.cpp
@@ -105,7 +105,7 @@ RankProgram::check_const(FeatureExecutor *executor, const std::vector<BlueprintR
void
RankProgram::run_const(FeatureExecutor *executor)
{
- executor->execute(1);
+ executor->lazy_execute(1);
const auto &outputs = executor->outputs();
for (size_t out_idx = 0; out_idx < outputs.size(); ++out_idx) {
_is_const.insert(outputs.get_raw(out_idx));