diff options
author | Arne H Juul <arnej27959@users.noreply.github.com> | 2021-11-16 18:02:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-16 18:02:20 +0100 |
commit | e500830d664dcc683753188016916216291163e3 (patch) | |
tree | 89c57c476f2aa1c202595aa332c151de5fc8c9fb | |
parent | d084da4f352cdfb6d42f2be1e4693065b2e532b2 (diff) | |
parent | 5080de0225be265b1dc4bdcfa818c68b6096de6d (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.cpp | 26 |
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 { |