aboutsummaryrefslogtreecommitdiffstats
path: root/libyul/optimiser/ExpressionJoiner.h
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-10-28 20:26:39 +0800
committerGitHub <noreply@github.com>2018-10-28 20:26:39 +0800
commitc338b422d48694b9fa4491c572e3a5e742a8ed36 (patch)
treeac53bfae7d9287824c63f4a6a15262e9e094b4ad /libyul/optimiser/ExpressionJoiner.h
parent9a58e71b9e4b573b08834aa4ae81ffc4252ef68f (diff)
parent1264290d574858c0438dd72dfc91b17d0b2049e8 (diff)
downloaddexon-solidity-c338b422d48694b9fa4491c572e3a5e742a8ed36.tar
dexon-solidity-c338b422d48694b9fa4491c572e3a5e742a8ed36.tar.gz
dexon-solidity-c338b422d48694b9fa4491c572e3a5e742a8ed36.tar.bz2
dexon-solidity-c338b422d48694b9fa4491c572e3a5e742a8ed36.tar.lz
dexon-solidity-c338b422d48694b9fa4491c572e3a5e742a8ed36.tar.xz
dexon-solidity-c338b422d48694b9fa4491c572e3a5e742a8ed36.tar.zst
dexon-solidity-c338b422d48694b9fa4491c572e3a5e742a8ed36.zip
Merge pull request #5315 from ethereum/yul-expr-joiner
Refactor Yul's ExpressionJoiner
Diffstat (limited to 'libyul/optimiser/ExpressionJoiner.h')
-rw-r--r--libyul/optimiser/ExpressionJoiner.h26
1 files changed, 13 insertions, 13 deletions
diff --git a/libyul/optimiser/ExpressionJoiner.h b/libyul/optimiser/ExpressionJoiner.h
index df18e58f..4f06cc0f 100644
--- a/libyul/optimiser/ExpressionJoiner.h
+++ b/libyul/optimiser/ExpressionJoiner.h
@@ -73,29 +73,29 @@ class NameCollector;
class ExpressionJoiner: public ASTModifier
{
public:
- virtual void operator()(FunctionalInstruction&) override;
- virtual void operator()(FunctionCall&) override;
- virtual void operator()(If&) override;
- virtual void operator()(Switch&) override;
- virtual void operator()(Block& _block) override;
-
- using ASTModifier::visit;
- virtual void visit(Expression& _e) override;
-
static void run(Block& _ast);
+
private:
explicit ExpressionJoiner(Block& _ast);
+ void operator()(Block& _block) override;
+ void operator()(FunctionalInstruction&) override;
+ void operator()(FunctionCall&) override;
+
+ using ASTModifier::visit;
+ void visit(Expression& _e) override;
+
void handleArguments(std::vector<Expression>& _arguments);
void decrementLatestStatementPointer();
void resetLatestStatementPointer();
Statement* latestStatement();
- bool isLatestStatementVarDeclOf(Identifier const& _identifier);
+ bool isLatestStatementVarDeclJoinable(Identifier const& _identifier);
- Block* m_currentBlock = nullptr;
- size_t m_latestStatementInBlock = 0;
- std::map<std::string, size_t> m_references;
+private:
+ Block* m_currentBlock = nullptr; ///< Pointer to currently block holding the visiting statement.
+ size_t m_latestStatementInBlock = 0; ///< Offset to m_currentBlock's statements of the last visited statement.
+ std::map<std::string, size_t> m_references; ///< Holds reference counts to all variable declarations in current block.
};
}