Introduce LabelID typedef.

This commit is contained in:
chriseth 2017-05-24 18:34:19 +02:00
parent 002df12d13
commit 9adff68ecc
3 changed files with 9 additions and 6 deletions

View File

@ -44,6 +44,8 @@ namespace julia
class AbstractAssembly
{
public:
using LabelID = size_t;
virtual ~AbstractAssembly() {}
/// Set a new source location valid starting from the next instruction.
@ -56,11 +58,11 @@ public:
/// Append a constant.
virtual void appendConstant(u256 const& _constant) = 0;
/// Append a label.
virtual void appendLabel(size_t _labelId) = 0;
virtual void appendLabel(LabelID _labelId) = 0;
/// Append a label reference.
virtual void appendLabelReference(size_t _labelId) = 0;
virtual void appendLabelReference(LabelID _labelId) = 0;
/// Generate a new unique label.
virtual size_t newLabelId() = 0;
virtual LabelID newLabelId() = 0;
/// Append a reference to a to-be-linked symobl.
/// Currently, we assume that the value is always a 20 byte number.
virtual void appendLinkerSymbol(std::string const& _name) = 0;

View File

@ -70,12 +70,12 @@ public:
m_assembly.append(_constant);
}
/// Append a label.
virtual void appendLabel(size_t _labelId) override
virtual void appendLabel(LabelID _labelId) override
{
m_assembly.append(eth::AssemblyItem(eth::Tag, _labelId));
}
/// Append a label reference.
virtual void appendLabelReference(size_t _labelId) override
virtual void appendLabelReference(LabelID _labelId) override
{
m_assembly.append(eth::AssemblyItem(eth::PushTag, _labelId));
}

View File

@ -63,6 +63,7 @@ struct GenericVisitor<>: public boost::static_visitor<> {
struct Scope
{
using JuliaType = std::string;
using LabelID = size_t;
struct Variable
{
@ -76,7 +77,7 @@ struct Scope
struct Label
{
boost::optional<size_t> id;
boost::optional<LabelID> id;
};
struct Function