Skip to content

Commit b7abcb2

Browse files
aarltcameel
authored andcommitted
[libevmasm] Add Assembly::OptimiserSettings::translateSettings.
1 parent 1d85eb5 commit b7abcb2

File tree

5 files changed

+19
-40
lines changed

5 files changed

+19
-40
lines changed

libevmasm/Assembly.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,3 +792,18 @@ Assembly const* Assembly::subAssemblyById(size_t _subId) const
792792
assertThrow(currentAssembly != this, AssemblyException, "");
793793
return currentAssembly;
794794
}
795+
796+
Assembly::OptimiserSettings Assembly::OptimiserSettings::translateSettings(frontend::OptimiserSettings const& _settings, langutil::EVMVersion const& _evmVersion)
797+
{
798+
// Constructing it this way so that we notice changes in the fields.
799+
evmasm::Assembly::OptimiserSettings asmSettings{false, false, false, false, false, false, _evmVersion, 0};
800+
asmSettings.runInliner = _settings.runInliner;
801+
asmSettings.runJumpdestRemover = _settings.runJumpdestRemover;
802+
asmSettings.runPeephole = _settings.runPeephole;
803+
asmSettings.runDeduplicate = _settings.runDeduplicate;
804+
asmSettings.runCSE = _settings.runCSE;
805+
asmSettings.runConstantOptimiser = _settings.runConstantOptimiser;
806+
asmSettings.expectedExecutionsPerDeployment = _settings.expectedExecutionsPerDeployment;
807+
asmSettings.evmVersion = _evmVersion;
808+
return asmSettings;
809+
}

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: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -572,21 +572,6 @@ void CompilerContext::updateSourceLocation()
572572
m_asm->setSourceLocation(m_visitedNodes.empty() ? SourceLocation() : m_visitedNodes.top()->location());
573573
}
574574

575-
evmasm::Assembly::OptimiserSettings CompilerContext::translateOptimiserSettings(OptimiserSettings const& _settings)
576-
{
577-
// Constructing it this way so that we notice changes in the fields.
578-
evmasm::Assembly::OptimiserSettings asmSettings{false, false, false, false, false, false, m_evmVersion, 0};
579-
asmSettings.runInliner = _settings.runInliner;
580-
asmSettings.runJumpdestRemover = _settings.runJumpdestRemover;
581-
asmSettings.runPeephole = _settings.runPeephole;
582-
asmSettings.runDeduplicate = _settings.runDeduplicate;
583-
asmSettings.runCSE = _settings.runCSE;
584-
asmSettings.runConstantOptimiser = _settings.runConstantOptimiser;
585-
asmSettings.expectedExecutionsPerDeployment = _settings.expectedExecutionsPerDeployment;
586-
asmSettings.evmVersion = m_evmVersion;
587-
return asmSettings;
588-
}
589-
590575
evmasm::AssemblyItem CompilerContext::FunctionCompilationQueue::entryLabel(
591576
Declaration const& _declaration,
592577
CompilerContext& _context

libsolidity/codegen/CompilerContext.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ class CompilerContext
283283
void appendToAuxiliaryData(bytes const& _data) { m_asm->appendToAuxiliaryData(_data); }
284284

285285
/// Run optimisation step.
286-
void optimise(OptimiserSettings const& _settings) { m_asm->optimise(translateOptimiserSettings(_settings)); }
286+
void optimise(OptimiserSettings const& _settings) { m_asm->optimise(evmasm::Assembly::OptimiserSettings::translateSettings(_settings, m_evmVersion)); }
287287

288288
/// @returns the runtime context if in creation mode and runtime context is set, nullptr otherwise.
289289
CompilerContext* runtimeContext() const { return m_runtimeContext; }
@@ -314,8 +314,6 @@ class CompilerContext
314314
/// Updates source location set in the assembly.
315315
void updateSourceLocation();
316316

317-
evmasm::Assembly::OptimiserSettings translateOptimiserSettings(OptimiserSettings const& _settings);
318-
319317
/**
320318
* Helper class that manages function labels and ensures that referenced functions are
321319
* compiled in a specific order.

libyul/YulStack.cpp

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -64,27 +64,6 @@ Dialect const& languageToDialect(YulStack::Language _language, EVMVersion _versi
6464
return Dialect::yulDeprecated();
6565
}
6666

67-
// Duplicated from libsolidity/codegen/CompilerContext.cpp
68-
// TODO: refactor and remove duplication
69-
evmasm::Assembly::OptimiserSettings translateOptimiserSettings(
70-
frontend::OptimiserSettings const& _settings,
71-
langutil::EVMVersion _evmVersion
72-
)
73-
{
74-
// Constructing it this way so that we notice changes in the fields.
75-
evmasm::Assembly::OptimiserSettings asmSettings{false, false, false, false, false, false, _evmVersion, 0};
76-
asmSettings.runInliner = _settings.runInliner;
77-
asmSettings.runJumpdestRemover = _settings.runJumpdestRemover;
78-
asmSettings.runPeephole = _settings.runPeephole;
79-
asmSettings.runDeduplicate = _settings.runDeduplicate;
80-
asmSettings.runCSE = _settings.runCSE;
81-
asmSettings.runConstantOptimiser = _settings.runConstantOptimiser;
82-
asmSettings.expectedExecutionsPerDeployment = _settings.expectedExecutionsPerDeployment;
83-
asmSettings.evmVersion = _evmVersion;
84-
85-
return asmSettings;
86-
}
87-
8867
}
8968

9069

@@ -289,7 +268,7 @@ YulStack::assembleEVMWithDeployed(optional<string_view> _deployName) const
289268
EthAssemblyAdapter adapter(assembly);
290269
compileEVM(adapter, m_optimiserSettings.optimizeStackAllocation);
291270

292-
assembly.optimise(translateOptimiserSettings(m_optimiserSettings, m_evmVersion));
271+
assembly.optimise(evmasm::Assembly::OptimiserSettings::translateSettings(m_optimiserSettings, m_evmVersion));
293272

294273
optional<size_t> subIndex;
295274

0 commit comments

Comments
 (0)