mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Simple Assembly Locations test
- Also adding some helper functions to SourceLocation
This commit is contained in:
parent
3e5c9a74b2
commit
12c32392ab
@ -41,6 +41,8 @@ public:
|
|||||||
bytes getAssembledBytecode() { return m_context.getAssembledBytecode(m_optimize); }
|
bytes getAssembledBytecode() { return m_context.getAssembledBytecode(m_optimize); }
|
||||||
bytes getRuntimeBytecode() { return m_runtimeContext.getAssembledBytecode(m_optimize);}
|
bytes getRuntimeBytecode() { return m_runtimeContext.getAssembledBytecode(m_optimize);}
|
||||||
void streamAssembly(std::ostream& _stream) const { m_context.streamAssembly(_stream); }
|
void streamAssembly(std::ostream& _stream) const { m_context.streamAssembly(_stream); }
|
||||||
|
CompilerContext const& getContext() const { return m_context; }
|
||||||
|
CompilerContext const& getRuntimeContext() const { return m_runtimeContext; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/// Registers the non-function objects inside the contract with the context.
|
/// Registers the non-function objects inside the contract with the context.
|
||||||
|
@ -176,28 +176,28 @@ void CompilerContext::resetVisitedNodes(ASTNode const* _node)
|
|||||||
CompilerContext& CompilerContext::operator<<(eth::AssemblyItem _item)
|
CompilerContext& CompilerContext::operator<<(eth::AssemblyItem _item)
|
||||||
{
|
{
|
||||||
solAssert(m_visitedNodes.size() > 0, "No node on the visited stack");
|
solAssert(m_visitedNodes.size() > 0, "No node on the visited stack");
|
||||||
m_asm.append(_item);
|
m_asm.append(_item, m_visitedNodes.top()->getLocation());
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
CompilerContext& CompilerContext::operator<<(eth::Instruction _instruction)
|
CompilerContext& CompilerContext::operator<<(eth::Instruction _instruction)
|
||||||
{
|
{
|
||||||
solAssert(m_visitedNodes.size() > 0, "No node on the visited stack");
|
solAssert(m_visitedNodes.size() > 0, "No node on the visited stack");
|
||||||
m_asm.append(_instruction);
|
m_asm.append(_instruction, m_visitedNodes.top()->getLocation());
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
CompilerContext& CompilerContext::operator<<(u256 const& _value)
|
CompilerContext& CompilerContext::operator<<(u256 const& _value)
|
||||||
{
|
{
|
||||||
solAssert(m_visitedNodes.size() > 0, "No node on the visited stack");
|
solAssert(m_visitedNodes.size() > 0, "No node on the visited stack");
|
||||||
m_asm.append(_value);
|
m_asm.append(_value, m_visitedNodes.top()->getLocation());
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
CompilerContext& CompilerContext::operator<<(bytes const& _data)
|
CompilerContext& CompilerContext::operator<<(bytes const& _data)
|
||||||
{
|
{
|
||||||
solAssert(m_visitedNodes.size() > 0, "No node on the visited stack");
|
solAssert(m_visitedNodes.size() > 0, "No node on the visited stack");
|
||||||
m_asm.append(_data);
|
m_asm.append(_data, m_visitedNodes.top()->getLocation());
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user