Split Instruction and FunctionalInstruction in Julia

This commit is contained in:
Alex Beregszaszi
2017-12-05 14:52:11 +00:00
parent a08d853bbb
commit 745eefa36f
7 changed files with 27 additions and 19 deletions
+5 -4
View File
@@ -125,11 +125,11 @@ void CodeTransform::operator()(FunctionCall const& _call)
void CodeTransform::operator()(FunctionalInstruction const& _instruction)
{
if (m_evm15 && (
_instruction.instruction.instruction == solidity::Instruction::JUMP ||
_instruction.instruction.instruction == solidity::Instruction::JUMPI
_instruction.instruction == solidity::Instruction::JUMP ||
_instruction.instruction == solidity::Instruction::JUMPI
))
{
bool const isJumpI = _instruction.instruction.instruction == solidity::Instruction::JUMPI;
bool const isJumpI = _instruction.instruction == solidity::Instruction::JUMPI;
if (isJumpI)
{
solAssert(_instruction.arguments.size() == 2, "");
@@ -150,7 +150,8 @@ void CodeTransform::operator()(FunctionalInstruction const& _instruction)
{
for (auto const& arg: _instruction.arguments | boost::adaptors::reversed)
visitExpression(arg);
(*this)(_instruction.instruction);
m_assembly.setSourceLocation(_instruction.location);
m_assembly.appendInstruction(_instruction.instruction);
}
checkStackHeight(&_instruction);
}
+3 -2
View File
@@ -31,9 +31,10 @@ using namespace dev;
using namespace dev::julia;
Statement ASTCopier::operator()(Instruction const& _instruction)
Statement ASTCopier::operator()(Instruction const&)
{
return _instruction;
solAssert(false, "Invalid operation.");
return {};
}
Statement ASTCopier::operator()(VariableDeclaration const& _varDecl)