aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne H Juul <arnej27959@users.noreply.github.com>2021-11-16 18:02:20 +0100
committerGitHub <noreply@github.com>2021-11-16 18:02:20 +0100
commite500830d664dcc683753188016916216291163e3 (patch)
tree89c57c476f2aa1c202595aa332c151de5fc8c9fb
parentd084da4f352cdfb6d42f2be1e4693065b2e532b2 (diff)
parent5080de0225be265b1dc4bdcfa818c68b6096de6d (diff)
Merge pull request #20045 from vespa-engine/arnej/use-less-stackv7.502.22
use slightly less stack
-rw-r--r--searchlib/src/vespa/searchlib/fef/blueprintresolver.cpp26
1 files changed, 13 insertions, 13 deletions
diff --git a/searchlib/src/vespa/searchlib/fef/blueprintresolver.cpp b/searchlib/src/vespa/searchlib/fef/blueprintresolver.cpp
index da6cfdba158..2a12867dd33 100644
--- a/searchlib/src/vespa/searchlib/fef/blueprintresolver.cpp
+++ b/searchlib/src/vespa/searchlib/fef/blueprintresolver.cpp
@@ -182,31 +182,31 @@ struct Compiler : public Blueprint::DependencyHandler {
}
FeatureRef resolve_feature(const vespalib::string &feature_name, Accept accept_type) {
- FeatureNameParser parser(feature_name);
- if (!parser.valid()) {
+ auto parser = std::make_unique<FeatureNameParser>(feature_name);
+ if (!parser->valid()) {
return fail(feature_name, "malformed name");
}
- if (failed_set.count(parser.featureName()) > 0) {
- return fail(parser.featureName(), "already failed");
+ if (failed_set.count(parser->featureName()) > 0) {
+ return fail(parser->featureName(), "already failed");
}
- auto old_feature = feature_map.find(parser.featureName());
+ auto old_feature = feature_map.find(parser->featureName());
if (old_feature != feature_map.end()) {
- return verify_type(parser, old_feature->second, accept_type);
+ return verify_type(*parser, old_feature->second, accept_type);
}
if ((resolve_stack.size() + 1) > BlueprintResolver::MAX_DEP_DEPTH) {
- return fail(parser.featureName(), "dependency graph too deep");
+ return fail(parser->featureName(), "dependency graph too deep");
}
for (const Frame &frame: resolve_stack) {
- if (frame.parser.executorName() == parser.executorName()) {
- return fail(parser.featureName(), "dependency cycle detected");
+ if (frame.parser.executorName() == parser->executorName()) {
+ return fail(parser->featureName(), "dependency cycle detected");
}
}
- setup_executor(parser);
- auto new_feature = feature_map.find(parser.featureName());
+ setup_executor(*parser);
+ auto new_feature = feature_map.find(parser->featureName());
if (new_feature != feature_map.end()) {
- return verify_type(parser, new_feature->second, accept_type);
+ return verify_type(*parser, new_feature->second, accept_type);
}
- return fail(parser.featureName(), fmt("unknown output: '%s'", parser.output().c_str()));
+ return fail(parser->featureName(), fmt("unknown output: '%s'", parser->output().c_str()));
}
std::optional<FeatureType> resolve_input(const vespalib::string &feature_name, Accept accept_type) override {