mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #2398 from ethereum/assembly-cleanup
Remove obsolete features from libevmasm
This commit is contained in:
@@ -40,7 +40,7 @@ void Assembly::append(Assembly const& _a)
|
||||
auto newDeposit = m_deposit + _a.deposit();
|
||||
for (AssemblyItem i: _a.m_items)
|
||||
{
|
||||
if (i.type() == Tag || (i.type() == PushTag && i != errorTag()))
|
||||
if (i.type() == Tag || i.type() == PushTag)
|
||||
i.setData(i.data() + m_usedTags);
|
||||
else if (i.type() == PushSub || i.type() == PushSubSize)
|
||||
i.setData(i.data() + m_subs.size());
|
||||
@@ -72,13 +72,6 @@ void Assembly::append(Assembly const& _a, int _deposit)
|
||||
}
|
||||
}
|
||||
|
||||
string Assembly::out() const
|
||||
{
|
||||
stringstream ret;
|
||||
stream(ret);
|
||||
return ret.str();
|
||||
}
|
||||
|
||||
unsigned Assembly::bytesRequired(unsigned subTagSize) const
|
||||
{
|
||||
for (unsigned tagSize = subTagSize; true; ++tagSize)
|
||||
|
||||
@@ -69,7 +69,13 @@ public:
|
||||
AssemblyItem appendJumpI() { auto ret = append(newPushTag()); append(solidity::Instruction::JUMPI); return ret; }
|
||||
AssemblyItem appendJump(AssemblyItem const& _tag) { auto ret = append(_tag.pushTag()); append(solidity::Instruction::JUMP); return ret; }
|
||||
AssemblyItem appendJumpI(AssemblyItem const& _tag) { auto ret = append(_tag.pushTag()); append(solidity::Instruction::JUMPI); return ret; }
|
||||
AssemblyItem errorTag() { return AssemblyItem(PushTag, 0); }
|
||||
|
||||
/// Adds a subroutine to the code (in the data section) and pushes its size (via a tag)
|
||||
/// on the stack. @returns the pushsub assembly item.
|
||||
AssemblyItem appendSubroutine(AssemblyPointer const& _assembly) { auto sub = newSub(_assembly); append(newPushSubSize(size_t(sub.data()))); return sub; }
|
||||
void pushSubroutineSize(size_t _subRoutine) { append(newPushSubSize(_subRoutine)); }
|
||||
/// Pushes the offset of the subroutine.
|
||||
void pushSubroutineOffset(size_t _subRoutine) { append(AssemblyItem(PushSub, _subRoutine)); }
|
||||
|
||||
/// Appends @a _data literally to the very end of the bytecode.
|
||||
void appendAuxiliaryDataToEnd(bytes const& _data) { m_auxiliaryData += _data; }
|
||||
@@ -85,10 +91,7 @@ public:
|
||||
void ignored() { m_baseDeposit = m_deposit; }
|
||||
void endIgnored() { m_deposit = m_baseDeposit; m_baseDeposit = 0; }
|
||||
|
||||
void popTo(int _deposit) { while (m_deposit > _deposit) append(solidity::Instruction::POP); }
|
||||
|
||||
void injectStart(AssemblyItem const& _i);
|
||||
std::string out() const;
|
||||
int deposit() const { return m_deposit; }
|
||||
void adjustDeposit(int _adjustment) { m_deposit += _adjustment; if (asserts(m_deposit >= 0)) BOOST_THROW_EXCEPTION(InvalidDeposit()); }
|
||||
void setDeposit(int _deposit) { m_deposit = _deposit; if (asserts(m_deposit >= 0)) BOOST_THROW_EXCEPTION(InvalidDeposit()); }
|
||||
|
||||
Reference in New Issue
Block a user