diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2018-09-18 23:16:21 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2018-09-26 21:25:40 +0800 |
commit | d64be90497bd9cb519d7146f49e6861fee060383 (patch) | |
tree | f131f50a92014ca051191ebbb55c5e43a3c81319 | |
parent | 9be058eb70be20d379d48a8902d112ba491aae2d (diff) | |
download | dexon-solidity-d64be90497bd9cb519d7146f49e6861fee060383.tar.gz dexon-solidity-d64be90497bd9cb519d7146f49e6861fee060383.tar.zst dexon-solidity-d64be90497bd9cb519d7146f49e6861fee060383.zip |
Add PathGasMeter.estimateMax helper
-rw-r--r-- | libevmasm/PathGasMeter.h | 10 | ||||
-rw-r--r-- | libsolidity/interface/GasEstimator.cpp | 5 |
2 files changed, 12 insertions, 3 deletions
diff --git a/libevmasm/PathGasMeter.h b/libevmasm/PathGasMeter.h index 9537b176..fb821684 100644 --- a/libevmasm/PathGasMeter.h +++ b/libevmasm/PathGasMeter.h @@ -57,6 +57,16 @@ public: GasMeter::GasConsumption estimateMax(size_t _startIndex, std::shared_ptr<KnownState> const& _state); + static GasMeter::GasConsumption estimateMax( + AssemblyItems const& _items, + solidity::EVMVersion _evmVersion, + size_t _startIndex, + std::shared_ptr<KnownState> const& _state + ) + { + return PathGasMeter(_items, _evmVersion).estimateMax(_startIndex, _state); + } + private: /// Adds a new path item to the queue, but only if we do not already have /// a higher gas usage at that point. diff --git a/libsolidity/interface/GasEstimator.cpp b/libsolidity/interface/GasEstimator.cpp index a532f86e..e70e23a2 100644 --- a/libsolidity/interface/GasEstimator.cpp +++ b/libsolidity/interface/GasEstimator.cpp @@ -160,8 +160,7 @@ GasEstimator::GasConsumption GasEstimator::functionalEstimation( ); } - PathGasMeter meter(_items, m_evmVersion); - return meter.estimateMax(0, state); + return PathGasMeter::estimateMax(_items, m_evmVersion, 0, state); } GasEstimator::GasConsumption GasEstimator::functionalEstimation( @@ -183,7 +182,7 @@ GasEstimator::GasConsumption GasEstimator::functionalEstimation( if (parametersSize > 0) state->feedItem(swapInstruction(parametersSize)); - return PathGasMeter(_items, m_evmVersion).estimateMax(_offset, state); + return PathGasMeter::estimateMax(_items, m_evmVersion, _offset, state); } set<ASTNode const*> GasEstimator::finestNodesAtLocation( |