Skip to content

Commit e3c7369

Browse files
committed
EVMHost: Simplify some code and dcoument functions
1 parent 3ddf5db commit e3c7369

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

test/EVMHost.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ using namespace solidity::util;
3737
using namespace solidity::test;
3838
using namespace evmc::literals;
3939

40-
using StorageMap = std::map<evmc::bytes32, evmc::storage_value>;
41-
4240
evmc::VM& EVMHost::getVM(string const& _path)
4341
{
4442
static evmc::VM NullVM{nullptr};
@@ -205,6 +203,8 @@ void EVMHost::recordCalls(evmc_message const& _message) noexcept
205203
recorded_calls.emplace_back(_message);
206204
}
207205

206+
// NOTE: this is used for both internal and external calls.
207+
// External calls are triggered from ExecutionFramework and contain only EVMC_CREATE or EVMC_CALL.
208208
evmc::result EVMHost::call(evmc_message const& _message) noexcept
209209
{
210210
recordCalls(_message);
@@ -408,6 +408,7 @@ evmc::result EVMHost::precompileSha256(evmc_message const& _message) noexcept
408408
));
409409

410410
evmc::result result({});
411+
result.status_code = EVMC_SUCCESS;
411412
result.gas_left = _message.gas;
412413
result.output_data = hash.data();
413414
result.output_size = hash.size();
@@ -485,7 +486,9 @@ evmc::result EVMHost::precompileIdentity(evmc_message const& _message) noexcept
485486
// static data so that we do not need a release routine...
486487
bytes static data;
487488
data = bytes(_message.input_data, _message.input_data + _message.input_size);
489+
488490
evmc::result result({});
491+
result.status_code = EVMC_SUCCESS;
489492
result.gas_left = _message.gas;
490493
result.output_data = data.data();
491494
result.output_size = data.size();

test/EVMHost.h

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
namespace solidity::test
3636
{
3737
using Address = util::h160;
38+
using StorageMap = std::map<evmc::bytes32, evmc::storage_value>;
3839

3940
class EVMHost: public evmc::MockedHost
4041
{
@@ -55,9 +56,10 @@ class EVMHost: public evmc::MockedHost
5556

5657
explicit EVMHost(langutil::EVMVersion _evmVersion, evmc::VM& _vm);
5758

59+
/// Reset entire state (including accounts).
5860
void reset();
59-
/// Clears EIP-2929 account and storage access indicator
60-
void resetWarmAccess();
61+
62+
/// Start new block.
6163
void newBlock()
6264
{
6365
tx_context.block_number++;
@@ -67,7 +69,7 @@ class EVMHost: public evmc::MockedHost
6769
}
6870

6971
/// @returns contents of storage at @param _addr.
70-
std::map<evmc::bytes32, evmc::storage_value> const& get_address_storage(evmc::address const& _addr);
72+
StorageMap const& get_address_storage(evmc::address const& _addr);
7173

7274
bool account_exists(evmc::address const& _addr) const noexcept final
7375
{
@@ -94,8 +96,12 @@ class EVMHost: public evmc::MockedHost
9496
private:
9597
evmc::address m_currentAddress = {};
9698

99+
/// Transfer value between accounts. Checks for sufficient balance.
97100
void transfer(evmc::MockedAccount& _sender, evmc::MockedAccount& _recipient, u256 const& _value) noexcept;
98101

102+
/// Clears EIP-2929 account and storage access indicator
103+
void resetWarmAccess();
104+
99105
/// Records calls made via @param _message.
100106
void recordCalls(evmc_message const& _message) noexcept;
101107

@@ -113,9 +119,9 @@ class EVMHost: public evmc::MockedHost
113119
static evmc::result resultWithGas(evmc_message const& _message, bytes const& _data) noexcept;
114120

115121
evmc::VM& m_vm;
116-
// EVM version requested by the testing tool
122+
/// EVM version requested by the testing tool
117123
langutil::EVMVersion m_evmVersion;
118-
// EVM version requested from EVMC (matches the above)
124+
/// EVM version requested from EVMC (matches the above)
119125
evmc_revision m_evmRevision;
120126
};
121127

0 commit comments

Comments
 (0)