Simple peephole optimizer that is activated even if not requested.

This commit is contained in:
chriseth
2016-11-16 14:37:19 +01:00
parent 22b4d1b29a
commit 0335ed4cb4
6 changed files with 226 additions and 17 deletions
+2 -4
View File
@@ -41,8 +41,7 @@ void Compiler::compileContract(
ContractCompiler creationCompiler(&runtimeCompiler, m_context, m_optimize);
m_runtimeSub = creationCompiler.compileConstructor(_contract, _contracts);
if (m_optimize)
m_context.optimise(m_optimizeRuns);
m_context.optimise(m_optimize, m_optimizeRuns);
if (_contract.isLibrary())
{
@@ -60,8 +59,7 @@ void Compiler::compileClone(
ContractCompiler cloneCompiler(&runtimeCompiler, m_context, m_optimize);
m_runtimeSub = cloneCompiler.compileClone(_contract, _contracts);
if (m_optimize)
m_context.optimise(m_optimizeRuns);
m_context.optimise(m_optimize, m_optimizeRuns);
}
eth::AssemblyItem Compiler::functionEntryLabel(FunctionDefinition const& _function) const
+1 -1
View File
@@ -155,7 +155,7 @@ public:
/// Prepends "PUSH <compiler version number> POP"
void injectVersionStampIntoSub(size_t _subIndex);
void optimise(unsigned _runs = 200) { m_asm->optimise(true, true, _runs); }
void optimise(bool _fullOptimsation, unsigned _runs = 200) { m_asm->optimise(_fullOptimsation, true, _runs); }
/// @returns the runtime context if in creation mode and runtime context is set, nullptr otherwise.
CompilerContext* runtimeContext() { return m_runtimeContext; }