Reuse stack slots in Yul to EVM code generation.

This commit is contained in:
liangdzou
2018-12-10 14:28:56 +01:00
committed by chriseth
parent 6240d9e72a
commit 362648a450
11 changed files with 313 additions and 54 deletions
+20
View File
@@ -93,6 +93,16 @@ void ASTWalker::operator()(Block const& _block)
walkVector(_block.statements);
}
void ASTWalker::visit(Statement const& _st)
{
boost::apply_visitor(*this, _st);
}
void ASTWalker::visit(Expression const& _e)
{
boost::apply_visitor(*this, _e);
}
void ASTModifier::operator()(FunctionalInstruction& _instr)
{
walkVector(_instr.arguments | boost::adaptors::reversed);
@@ -155,3 +165,13 @@ void ASTModifier::operator()(Block& _block)
{
walkVector(_block.statements);
}
void ASTModifier::visit(Statement& _st)
{
boost::apply_visitor(*this, _st);
}
void ASTModifier::visit(Expression& _e)
{
boost::apply_visitor(*this, _e);
}
+4 -16
View File
@@ -58,14 +58,8 @@ public:
virtual void operator()(ForLoop const&);
virtual void operator()(Block const& _block);
virtual void visit(Statement const& _st)
{
boost::apply_visitor(*this, _st);
}
virtual void visit(Expression const& _e)
{
boost::apply_visitor(*this, _e);
}
virtual void visit(Statement const& _st);
virtual void visit(Expression const& _e);
protected:
template <class T>
@@ -99,14 +93,8 @@ public:
virtual void operator()(ForLoop&);
virtual void operator()(Block& _block);
virtual void visit(Statement& _st)
{
boost::apply_visitor(*this, _st);
}
virtual void visit(Expression& _e)
{
boost::apply_visitor(*this, _e);
}
virtual void visit(Statement& _st);
virtual void visit(Expression& _e);
protected:
template <class T>