[libsolidity] OptimiserSettings: add enabled flag.

This commit is contained in:
Alexander Arlt 2021-11-12 10:32:04 -05:00
parent 5d748613b7
commit ba62b1a401
2 changed files with 6 additions and 2 deletions

View File

@ -687,13 +687,15 @@ bool CompilerStack::compile(State _stopAfter)
m_contracts[evmAssemblyJsonSource].evmAssembly = make_shared<evmasm::Assembly>(evmAssemblyJsonSource); m_contracts[evmAssemblyJsonSource].evmAssembly = make_shared<evmasm::Assembly>(evmAssemblyJsonSource);
m_contracts[evmAssemblyJsonSource].evmAssembly->loadFromAssemblyJSON(m_evmAssemblyJson[evmAssemblyJsonSource]); m_contracts[evmAssemblyJsonSource].evmAssembly->loadFromAssemblyJSON(m_evmAssemblyJson[evmAssemblyJsonSource]);
// m_contracts[evmAssemblyJsonSource].evmAssembly->optimise(optimiserSettings); if (m_optimiserSettings.enabled)
m_contracts[evmAssemblyJsonSource].evmAssembly->optimise(optimiserSettings);
m_contracts[evmAssemblyJsonSource].object = m_contracts[evmAssemblyJsonSource].evmAssembly->assemble(); m_contracts[evmAssemblyJsonSource].object = m_contracts[evmAssemblyJsonSource].evmAssembly->assemble();
m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly = make_shared<evmasm::Assembly>(evmAssemblyJsonSource); m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly = make_shared<evmasm::Assembly>(evmAssemblyJsonSource);
m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly->setSources(m_contracts[evmAssemblyJsonSource].evmAssembly->sources()); m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly->setSources(m_contracts[evmAssemblyJsonSource].evmAssembly->sources());
m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly->loadFromAssemblyJSON(m_evmAssemblyJson[evmAssemblyJsonSource][".data"]["0"], false); m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly->loadFromAssemblyJSON(m_evmAssemblyJson[evmAssemblyJsonSource][".data"]["0"], false);
// m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly->optimise(optimiserSettings); if (m_optimiserSettings.enabled)
m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly->optimise(optimiserSettings);
m_contracts[evmAssemblyJsonSource].runtimeObject = m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly->assemble(); m_contracts[evmAssemblyJsonSource].runtimeObject = m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly->assemble();
} }
else else

View File

@ -121,6 +121,8 @@ struct OptimiserSettings
expectedExecutionsPerDeployment == _other.expectedExecutionsPerDeployment; expectedExecutionsPerDeployment == _other.expectedExecutionsPerDeployment;
} }
/// Optimizer enabled.
bool enabled = false;
/// Move literals to the right of commutative binary operators during code generation. /// Move literals to the right of commutative binary operators during code generation.
/// This helps exploiting associativity. /// This helps exploiting associativity.
bool runOrderLiterals = false; bool runOrderLiterals = false;