Skip to content

Commit 8fa368a

Browse files
committed
Assembly::OptimiserSettings: add translateSettings(..).
1 parent 2cf619f commit 8fa368a

File tree

4 files changed

+20
-20
lines changed

4 files changed

+20
-20
lines changed

libevmasm/Assembly.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -940,3 +940,18 @@ Assembly const* Assembly::subAssemblyById(size_t _subId) const
940940
assertThrow(currentAssembly != this, AssemblyException, "");
941941
return currentAssembly;
942942
}
943+
944+
Assembly::OptimiserSettings Assembly::OptimiserSettings::translateSettings(frontend::OptimiserSettings const& _settings, langutil::EVMVersion const& _evmVersion)
945+
{
946+
// Constructing it this way so that we notice changes in the fields.
947+
evmasm::Assembly::OptimiserSettings asmSettings{false, false, false, false, false, false, _evmVersion, 0};
948+
asmSettings.runInliner = _settings.runInliner;
949+
asmSettings.runJumpdestRemover = _settings.runJumpdestRemover;
950+
asmSettings.runPeephole = _settings.runPeephole;
951+
asmSettings.runDeduplicate = _settings.runDeduplicate;
952+
asmSettings.runCSE = _settings.runCSE;
953+
asmSettings.runConstantOptimiser = _settings.runConstantOptimiser;
954+
asmSettings.expectedExecutionsPerDeployment = _settings.expectedExecutionsPerDeployment;
955+
asmSettings.evmVersion = _evmVersion;
956+
return asmSettings;
957+
}

libevmasm/Assembly.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ class Assembly
128128
/// This specifies an estimate on how often each opcode in this assembly will be executed,
129129
/// i.e. use a small value to optimise for size and a large value to optimise for runtime gas usage.
130130
size_t expectedExecutionsPerDeployment = frontend::OptimiserSettings{}.expectedExecutionsPerDeployment;
131+
132+
static OptimiserSettings translateSettings(frontend::OptimiserSettings const& _settings, langutil::EVMVersion const& _evmVersion);
131133
};
132134

133135
/// Modify and return the current assembly such that creation and execution gas usage

libsolidity/codegen/CompilerContext.cpp

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -573,17 +573,7 @@ void CompilerContext::updateSourceLocation()
573573

574574
evmasm::Assembly::OptimiserSettings CompilerContext::translateOptimiserSettings(OptimiserSettings const& _settings)
575575
{
576-
// Constructing it this way so that we notice changes in the fields.
577-
evmasm::Assembly::OptimiserSettings asmSettings{false, false, false, false, false, false, m_evmVersion, 0};
578-
asmSettings.runInliner = _settings.runInliner;
579-
asmSettings.runJumpdestRemover = _settings.runJumpdestRemover;
580-
asmSettings.runPeephole = _settings.runPeephole;
581-
asmSettings.runDeduplicate = _settings.runDeduplicate;
582-
asmSettings.runCSE = _settings.runCSE;
583-
asmSettings.runConstantOptimiser = _settings.runConstantOptimiser;
584-
asmSettings.expectedExecutionsPerDeployment = _settings.expectedExecutionsPerDeployment;
585-
asmSettings.evmVersion = m_evmVersion;
586-
return asmSettings;
576+
return evmasm::Assembly::OptimiserSettings::translateSettings(_settings, m_evmVersion);
587577
}
588578

589579
evmasm::AssemblyItem CompilerContext::FunctionCompilationQueue::entryLabel(

libsolidity/interface/CompilerStack.cpp

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -686,15 +686,8 @@ bool CompilerStack::compile(State _stopAfter)
686686
string const evmSourceName = m_evmAssemblyJson.begin()->first;
687687
Json::Value const evmJson = m_evmAssemblyJson.begin()->second;
688688

689-
evmasm::Assembly::OptimiserSettings optimiserSettings;
690-
optimiserSettings.evmVersion = m_evmVersion;
691-
optimiserSettings.expectedExecutionsPerDeployment = m_optimiserSettings.expectedExecutionsPerDeployment;
692-
optimiserSettings.runCSE = m_optimiserSettings.runCSE;
693-
optimiserSettings.runConstantOptimiser = m_optimiserSettings.runConstantOptimiser;
694-
optimiserSettings.runDeduplicate = m_optimiserSettings.runDeduplicate;
695-
optimiserSettings.runInliner = m_optimiserSettings.runInliner;
696-
optimiserSettings.runJumpdestRemover = m_optimiserSettings.runJumpdestRemover;
697-
optimiserSettings.runPeephole = m_optimiserSettings.runPeephole;
689+
evmasm::Assembly::OptimiserSettings optimiserSettings =
690+
evmasm::Assembly::OptimiserSettings::translateSettings(m_optimiserSettings, m_evmVersion);
698691

699692
m_contracts[evmSourceName].evmAssembly = evmasm::Assembly::loadFromAssemblyJSON(m_evmAssemblyJson[evmSourceName]);
700693
if (m_optimiserSettings.enabled)

0 commit comments

Comments
 (0)