mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Refactor Optimiser Steps Interface.
This commit is contained in:
@@ -30,6 +30,7 @@
|
||||
namespace yul
|
||||
{
|
||||
struct Dialect;
|
||||
struct OptimiserStepContext;
|
||||
|
||||
/**
|
||||
* Optimiser component that modifies an AST in place, inlining functions that can be
|
||||
@@ -48,11 +49,8 @@ struct Dialect;
|
||||
class ExpressionInliner: public ASTModifier
|
||||
{
|
||||
public:
|
||||
ExpressionInliner(Dialect const& _dialect, Block& _block):
|
||||
m_block(_block), m_dialect(_dialect)
|
||||
{}
|
||||
|
||||
void run();
|
||||
static constexpr char const* name{"ExpressionInliner"};
|
||||
static void run(OptimiserStepContext&, Block& _ast);
|
||||
|
||||
using ASTModifier::operator();
|
||||
void operator()(FunctionDefinition& _fun) override;
|
||||
@@ -60,13 +58,18 @@ public:
|
||||
void visit(Expression& _expression) override;
|
||||
|
||||
private:
|
||||
std::map<YulString, FunctionDefinition const*> m_inlinableFunctions;
|
||||
ExpressionInliner(
|
||||
Dialect const& _dialect,
|
||||
std::map<YulString, FunctionDefinition const*> const& _inlinableFunctions
|
||||
): m_dialect(_dialect), m_inlinableFunctions(_inlinableFunctions)
|
||||
{}
|
||||
|
||||
Dialect const& m_dialect;
|
||||
std::map<YulString, FunctionDefinition const*> const& m_inlinableFunctions;
|
||||
|
||||
std::map<YulString, YulString> m_varReplacements;
|
||||
/// Set of functions we are currently visiting inside.
|
||||
std::set<YulString> m_currentFunctions;
|
||||
|
||||
Block& m_block;
|
||||
Dialect const& m_dialect;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user