aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-05-29 22:14:22 +0800
committerGitHub <noreply@github.com>2017-05-29 22:14:22 +0800
commit9822deeed9d0be1324d6b6bdbdf83ae7ebca9b69 (patch)
tree06b2de6eab97c521dcd036423a1deb4da6e95e28
parent002df12d13fb423be641878a20b73bd10f90a6df (diff)
parent9adff68ecc9fe725670c3752429d18d15379644b (diff)
downloaddexon-solidity-9822deeed9d0be1324d6b6bdbdf83ae7ebca9b69.tar
dexon-solidity-9822deeed9d0be1324d6b6bdbdf83ae7ebca9b69.tar.gz
dexon-solidity-9822deeed9d0be1324d6b6bdbdf83ae7ebca9b69.tar.bz2
dexon-solidity-9822deeed9d0be1324d6b6bdbdf83ae7ebca9b69.tar.lz
dexon-solidity-9822deeed9d0be1324d6b6bdbdf83ae7ebca9b69.tar.xz
dexon-solidity-9822deeed9d0be1324d6b6bdbdf83ae7ebca9b69.tar.zst
dexon-solidity-9822deeed9d0be1324d6b6bdbdf83ae7ebca9b69.zip
Merge pull request #2321 from ethereum/labelid_typedef
Introduce LabelID typedef.
-rw-r--r--libjulia/backends/evm/AbstractAssembly.h8
-rw-r--r--libsolidity/inlineasm/AsmCodeGen.cpp4
-rw-r--r--libsolidity/inlineasm/AsmScope.h3
3 files changed, 9 insertions, 6 deletions
diff --git a/libjulia/backends/evm/AbstractAssembly.h b/libjulia/backends/evm/AbstractAssembly.h
index e3afa2b6..de31be28 100644
--- a/libjulia/backends/evm/AbstractAssembly.h
+++ b/libjulia/backends/evm/AbstractAssembly.h
@@ -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;
diff --git a/libsolidity/inlineasm/AsmCodeGen.cpp b/libsolidity/inlineasm/AsmCodeGen.cpp
index 6a44faac..af3547fd 100644
--- a/libsolidity/inlineasm/AsmCodeGen.cpp
+++ b/libsolidity/inlineasm/AsmCodeGen.cpp
@@ -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));
}
diff --git a/libsolidity/inlineasm/AsmScope.h b/libsolidity/inlineasm/AsmScope.h
index 70786dce..498218b4 100644
--- a/libsolidity/inlineasm/AsmScope.h
+++ b/libsolidity/inlineasm/AsmScope.h
@@ -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