From 398099f50eaa7a4862950914054dbe68d0eee67b Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Thu, 1 Jun 2017 14:31:35 +0100 Subject: Remove obsolete errorTag() --- libevmasm/Assembly.cpp | 2 +- libevmasm/Assembly.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'libevmasm') diff --git a/libevmasm/Assembly.cpp b/libevmasm/Assembly.cpp index ea061a30..de51d230 100644 --- a/libevmasm/Assembly.cpp +++ b/libevmasm/Assembly.cpp @@ -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()); diff --git a/libevmasm/Assembly.h b/libevmasm/Assembly.h index 528c9e74..bf7404d2 100644 --- a/libevmasm/Assembly.h +++ b/libevmasm/Assembly.h @@ -69,7 +69,6 @@ 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); } /// Appends @a _data literally to the very end of the bytecode. void appendAuxiliaryDataToEnd(bytes const& _data) { m_auxiliaryData += _data; } -- cgit v1.2.3 From 18fc66765808c717c0ed5f3f2b3da979618c329d Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Wed, 14 Jun 2017 20:24:53 +0100 Subject: Remove obsolete Assembly::out --- libevmasm/Assembly.cpp | 7 ------- libevmasm/Assembly.h | 1 - 2 files changed, 8 deletions(-) (limited to 'libevmasm') diff --git a/libevmasm/Assembly.cpp b/libevmasm/Assembly.cpp index de51d230..68c02bb6 100644 --- a/libevmasm/Assembly.cpp +++ b/libevmasm/Assembly.cpp @@ -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) diff --git a/libevmasm/Assembly.h b/libevmasm/Assembly.h index bf7404d2..6549cc45 100644 --- a/libevmasm/Assembly.h +++ b/libevmasm/Assembly.h @@ -87,7 +87,6 @@ public: 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()); } -- cgit v1.2.3 From 6a260a9ff1c0c9c8ee14e988bd066b74555651e7 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Wed, 14 Jun 2017 20:26:26 +0100 Subject: Remove single use Assembly::popTo --- libevmasm/Assembly.h | 2 -- 1 file changed, 2 deletions(-) (limited to 'libevmasm') diff --git a/libevmasm/Assembly.h b/libevmasm/Assembly.h index 6549cc45..36fdda36 100644 --- a/libevmasm/Assembly.h +++ b/libevmasm/Assembly.h @@ -84,8 +84,6 @@ 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); int deposit() const { return m_deposit; } void adjustDeposit(int _adjustment) { m_deposit += _adjustment; if (asserts(m_deposit >= 0)) BOOST_THROW_EXCEPTION(InvalidDeposit()); } -- cgit v1.2.3 From c08c4b8b6f0e8c4ccc139e525218cb0cb1ac4ad4 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Wed, 14 Jun 2017 20:38:59 +0100 Subject: Move subroutine helpers from CompilerContext to Assembly --- libevmasm/Assembly.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'libevmasm') diff --git a/libevmasm/Assembly.h b/libevmasm/Assembly.h index 36fdda36..13d82e1a 100644 --- a/libevmasm/Assembly.h +++ b/libevmasm/Assembly.h @@ -70,6 +70,13 @@ public: 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; } + /// 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; } -- cgit v1.2.3