[yul-phaser] ProgramSize: Add an option to repeat the optimisation sequence several times

This commit is contained in:
Kamil Śliwak
2020-02-19 16:36:14 +01:00
parent 751caf0ed3
commit 930a9918a6
3 changed files with 40 additions and 2 deletions
+3 -1
View File
@@ -23,6 +23,8 @@ using namespace solidity::phaser;
size_t ProgramSize::evaluate(Chromosome const& _chromosome) const
{
Program programCopy = m_program;
programCopy.optimise(_chromosome.optimisationSteps());
for (size_t i = 0; i < m_repetitionCount; ++i)
programCopy.optimise(_chromosome.optimisationSteps());
return programCopy.codeSize();
}
+4 -1
View File
@@ -53,12 +53,15 @@ public:
class ProgramSize: public FitnessMetric
{
public:
ProgramSize(Program _program): m_program(std::move(_program)) {}
explicit ProgramSize(Program _program, size_t _repetitionCount = 1):
m_program(std::move(_program)),
m_repetitionCount(_repetitionCount) {}
size_t evaluate(Chromosome const& _chromosome) const override;
private:
Program m_program;
size_t m_repetitionCount;
};
}