diff options
author | Arne H Juul <arnej@yahooinc.com> | 2021-11-16 14:06:03 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2021-11-16 14:06:03 +0000 |
commit | 5080de0225be265b1dc4bdcfa818c68b6096de6d (patch) | |
tree | 58ce3a5a5a2984c27574e71c7303360f0e62d2f6 /searchlib | |
parent | 625434397bb349ba02469afaa6e9af017f6c2d00 (diff) |
use slightly less stack
Diffstat (limited to 'searchlib')
-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 { |