From ecb3eb3fdb9536472706c173d00b3379e3332469 Mon Sep 17 00:00:00 2001 From: Ashley Nelson Date: Wed, 18 Oct 2023 13:09:22 -0700 Subject: [Outlining] Filter branches & returns (#6024) Adds a function to filter branch and return instructions from being included in potential outlining candidates. --- src/passes/hash-stringify-walker.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'src/passes/hash-stringify-walker.cpp') diff --git a/src/passes/hash-stringify-walker.cpp b/src/passes/hash-stringify-walker.cpp index beae3bf44..abcd07162 100644 --- a/src/passes/hash-stringify-walker.cpp +++ b/src/passes/hash-stringify-walker.cpp @@ -82,7 +82,7 @@ void HashStringifyWalker::visitExpression(Expression* curr) { // repeats come first and 2) these are more worthwhile to keep than subsequent // substrings of substrings, even if they appear more times. std::vector StringifyProcessor::dedupe( - const std::vector&& substrings) { + const std::vector& substrings) { std::unordered_set seen; std::vector result; for (auto substring : substrings) { @@ -111,7 +111,7 @@ std::vector StringifyProcessor::dedupe( } std::vector StringifyProcessor::filter( - const std::vector&& substrings, + const std::vector& substrings, const std::vector exprs, std::function condition) { @@ -166,4 +166,21 @@ std::vector StringifyProcessor::filter( return result; } +std::vector StringifyProcessor::filterLocalSets( + const std::vector& substrings, + const std::vector exprs) { + return StringifyProcessor::filter( + substrings, exprs, [](const Expression* curr) { + return curr->is(); + }); +} + +std::vector StringifyProcessor::filterBranches( + const std::vector& substrings, + const std::vector exprs) { + return StringifyProcessor::filter( + substrings, exprs, [](const Expression* curr) { + return Properties::isBranch(curr) || curr->is(); + }); +} } // namespace wasm -- cgit v1.2.3