aboutsummaryrefslogtreecommitdiffstats
path: root/libevmasm/ConstantOptimiser.cpp
diff options
context:
space:
mode:
authorYoichi Hirai <i@yoichihirai.com>2017-03-08 19:11:16 +0800
committerGitHub <noreply@github.com>2017-03-08 19:11:16 +0800
commit85411f4f677769f3ea1b69c49c44d9c08180dbd4 (patch)
tree7acfbf6140c925c48036eb527e4dd11d42283413 /libevmasm/ConstantOptimiser.cpp
parenta1e350a4aeef11865d2deee5a4e59feb0625d053 (diff)
parent244b45e1ffe13cc12e7d6fd18467094b4bb0cb6a (diff)
downloaddexon-solidity-85411f4f677769f3ea1b69c49c44d9c08180dbd4.tar
dexon-solidity-85411f4f677769f3ea1b69c49c44d9c08180dbd4.tar.gz
dexon-solidity-85411f4f677769f3ea1b69c49c44d9c08180dbd4.tar.bz2
dexon-solidity-85411f4f677769f3ea1b69c49c44d9c08180dbd4.tar.lz
dexon-solidity-85411f4f677769f3ea1b69c49c44d9c08180dbd4.tar.xz
dexon-solidity-85411f4f677769f3ea1b69c49c44d9c08180dbd4.tar.zst
dexon-solidity-85411f4f677769f3ea1b69c49c44d9c08180dbd4.zip
Merge pull request #1736 from ethereum/boundoptimizer
Add upper bound for computing constants.
Diffstat (limited to 'libevmasm/ConstantOptimiser.cpp')
-rw-r--r--libevmasm/ConstantOptimiser.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/libevmasm/ConstantOptimiser.cpp b/libevmasm/ConstantOptimiser.cpp
index 86244e17..a1dfd21c 100644
--- a/libevmasm/ConstantOptimiser.cpp
+++ b/libevmasm/ConstantOptimiser.cpp
@@ -194,7 +194,7 @@ AssemblyItems ComputeMethod::findRepresentation(u256 const& _value)
// Is not always better, try literal and decomposition method.
AssemblyItems routine{u256(_value)};
bigint bestGas = gasNeeded(routine);
- for (unsigned bits = 255; bits > 8; --bits)
+ for (unsigned bits = 255; bits > 8 && m_maxSteps > 0; --bits)
{
unsigned gapDetector = unsigned(_value >> (bits - 8)) & 0x1ff;
if (gapDetector != 0xff && gapDetector != 0x100)
@@ -219,6 +219,8 @@ AssemblyItems ComputeMethod::findRepresentation(u256 const& _value)
else if (lowerPart < 0)
newRoutine.push_back(Instruction::SUB);
+ if (m_maxSteps > 0)
+ m_maxSteps--;
bigint newGas = gasNeeded(newRoutine);
if (newGas < bestGas)
{