mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge remote-tracking branch 'origin/develop' into breaking
This commit is contained in:
@@ -53,7 +53,7 @@ void EVMAssembly::appendInstruction(evmasm::Instruction _instr)
|
||||
void EVMAssembly::appendConstant(u256 const& _constant)
|
||||
{
|
||||
bytes data = toCompactBigEndian(_constant, 1);
|
||||
appendInstruction(evmasm::pushInstruction(data.size()));
|
||||
appendInstruction(evmasm::pushInstruction(static_cast<unsigned>(data.size())));
|
||||
m_bytecode += data;
|
||||
}
|
||||
|
||||
|
||||
@@ -222,7 +222,7 @@ void CodeTransform::operator()(VariableDeclaration const& _varDecl)
|
||||
m_unusedStackSlots.erase(m_unusedStackSlots.begin());
|
||||
m_context->variableStackHeights[&var] = slot;
|
||||
if (size_t heightDiff = variableHeightDiff(var, varName, true))
|
||||
m_assembly.appendInstruction(evmasm::swapInstruction(heightDiff - 1));
|
||||
m_assembly.appendInstruction(evmasm::swapInstruction(static_cast<unsigned>(heightDiff - 1)));
|
||||
m_assembly.appendInstruction(evmasm::Instruction::POP);
|
||||
}
|
||||
}
|
||||
@@ -314,7 +314,7 @@ void CodeTransform::operator()(Identifier const& _identifier)
|
||||
// TODO: opportunity for optimization: Do not DUP if this is the last reference
|
||||
// to the top most element of the stack
|
||||
if (size_t heightDiff = variableHeightDiff(_var, _identifier.name, false))
|
||||
m_assembly.appendInstruction(evmasm::dupInstruction(heightDiff));
|
||||
m_assembly.appendInstruction(evmasm::dupInstruction(static_cast<unsigned>(heightDiff)));
|
||||
else
|
||||
// Store something to balance the stack
|
||||
m_assembly.appendConstant(u256(0));
|
||||
@@ -694,7 +694,7 @@ void CodeTransform::generateAssignment(Identifier const& _variableName)
|
||||
{
|
||||
Scope::Variable const& _var = std::get<Scope::Variable>(*var);
|
||||
if (size_t heightDiff = variableHeightDiff(_var, _variableName.name, true))
|
||||
m_assembly.appendInstruction(evmasm::swapInstruction(heightDiff - 1));
|
||||
m_assembly.appendInstruction(evmasm::swapInstruction(static_cast<unsigned>(heightDiff - 1)));
|
||||
m_assembly.appendInstruction(evmasm::Instruction::POP);
|
||||
decreaseReference(_variableName.name, _var);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user