aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/solidityExecutionFramework.h
diff options
context:
space:
mode:
authorPaweł Bylica <pawel.bylica@imapp.pl>2015-05-28 14:56:21 +0800
committerPaweł Bylica <pawel.bylica@imapp.pl>2015-05-28 14:56:21 +0800
commitecd5108afcaeceb52a7b2276beefced575fca5c4 (patch)
treeef76e7b44b926a4cc9ca0d480458ea75ad115035 /libsolidity/solidityExecutionFramework.h
parentd2bc79b9eaec10e22d3c266dbbf40a767e67d764 (diff)
downloaddexon-solidity-ecd5108afcaeceb52a7b2276beefced575fca5c4.tar.gz
dexon-solidity-ecd5108afcaeceb52a7b2276beefced575fca5c4.tar.zst
dexon-solidity-ecd5108afcaeceb52a7b2276beefced575fca5c4.zip
Change the way execution results are collected.
Changes handling ExecutionResult by Executive. From now execution results are collected on if a storage for results (ExecutionResult) is provided to an Executiove instance up front. This change allow better output management for calls - VM interface improved.
Diffstat (limited to 'libsolidity/solidityExecutionFramework.h')
-rw-r--r--libsolidity/solidityExecutionFramework.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/libsolidity/solidityExecutionFramework.h b/libsolidity/solidityExecutionFramework.h
index 0f80e9f5..ea277421 100644
--- a/libsolidity/solidityExecutionFramework.h
+++ b/libsolidity/solidityExecutionFramework.h
@@ -135,6 +135,8 @@ protected:
{
m_state.addBalance(m_sender, _value); // just in case
eth::Executive executive(m_state, eth::LastHashes(), 0);
+ eth::ExecutionResult res;
+ executive.setResultRef(res);
eth::Transaction t = _isCreation ? eth::Transaction(_value, m_gasPrice, m_gas, _data, 0, KeyPair::create().sec())
: eth::Transaction(_value, m_gasPrice, m_gas, m_contractAddress, _data, 0, KeyPair::create().sec());
bytes transactionRLP = t.rlp();
@@ -161,7 +163,7 @@ protected:
m_state.noteSending(m_sender);
executive.finalize();
m_gasUsed = executive.gasUsed();
- m_output = executive.out().toVector();
+ m_output = std::move(res.output); // FIXME: Looks like Framework needs ExecutiveResult embedded
m_logs = executive.logs();
}