aboutsummaryrefslogtreecommitdiffstats
path: root/libevmasm
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-08-23 19:26:43 +0800
committerGitHub <noreply@github.com>2017-08-23 19:26:43 +0800
commitc5f11d938f6670d9dbe0d7212097089c757fd91a (patch)
treeeaebaac04092d5b05a5cba1211b046467d3263ae /libevmasm
parent0ffc5db82b24b4897d5d09cebbaadba37fa63b45 (diff)
parent4b56829ac3dc28ea9ca6945fee22963149bcc2bd (diff)
downloaddexon-solidity-c5f11d938f6670d9dbe0d7212097089c757fd91a.tar.gz
dexon-solidity-c5f11d938f6670d9dbe0d7212097089c757fd91a.tar.zst
dexon-solidity-c5f11d938f6670d9dbe0d7212097089c757fd91a.zip
Merge pull request #2656 from ethereum/performance1
Avoid some Json copy operations.
Diffstat (limited to 'libevmasm')
-rw-r--r--libevmasm/Assembly.cpp7
1 files changed, 2 insertions, 5 deletions
diff --git a/libevmasm/Assembly.cpp b/libevmasm/Assembly.cpp
index 42b923df..0a3bf6b8 100644
--- a/libevmasm/Assembly.cpp
+++ b/libevmasm/Assembly.cpp
@@ -233,7 +233,7 @@ Json::Value Assembly::streamAsmJson(ostream& _out, StringMap const& _sourceCodes
{
Json::Value root;
- Json::Value collection(Json::arrayValue);
+ Json::Value& collection = root[".code"] = Json::arrayValue;
for (AssemblyItem const& i: m_items)
{
switch (i.type())
@@ -289,11 +289,9 @@ Json::Value Assembly::streamAsmJson(ostream& _out, StringMap const& _sourceCodes
}
}
- root[".code"] = collection;
-
if (!m_data.empty() || !m_subs.empty())
{
- Json::Value data;
+ Json::Value& data = root[".data"] = Json::objectValue;
for (auto const& i: m_data)
if (u256(i.first) >= m_subs.size())
data[toStringInHex((u256)i.first)] = toHex(i.second);
@@ -304,7 +302,6 @@ Json::Value Assembly::streamAsmJson(ostream& _out, StringMap const& _sourceCodes
hexStr << hex << i;
data[hexStr.str()] = m_subs[i]->stream(_out, "", _sourceCodes, true);
}
- root[".data"] = data;
}
if (m_auxiliaryData.size() > 0)