From 140dbfdbd8f4319d1d02339feea0a8636a3738e5 Mon Sep 17 00:00:00 2001 From: Cryptomental Date: Tue, 10 Jul 2018 09:18:59 +0200 Subject: Code, Changelog, ReleaseChecklist: Fix typos. Refs: #4442 --- libevmasm/SimplificationRules.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libevmasm/SimplificationRules.cpp') diff --git a/libevmasm/SimplificationRules.cpp b/libevmasm/SimplificationRules.cpp index 53a5f9fc..504dbc24 100644 --- a/libevmasm/SimplificationRules.cpp +++ b/libevmasm/SimplificationRules.cpp @@ -67,7 +67,7 @@ void Rules::addRule(SimplificationRule const& _rule) Rules::Rules() { - // Multiple occurences of one of these inside one rule must match the same equivalence class. + // Multiple occurrences of one of these inside one rule must match the same equivalence class. // Constants. Pattern A(Push); Pattern B(Push); -- cgit v1.2.3 From a1d73a7befd2f3d72c18d4cb539edab5111c681f Mon Sep 17 00:00:00 2001 From: Daniel Kirchner Date: Fri, 14 Sep 2018 15:49:55 +0200 Subject: Split simplification rules into two functions. --- libevmasm/SimplificationRules.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'libevmasm/SimplificationRules.cpp') diff --git a/libevmasm/SimplificationRules.cpp b/libevmasm/SimplificationRules.cpp index 504dbc24..ba13a611 100644 --- a/libevmasm/SimplificationRules.cpp +++ b/libevmasm/SimplificationRules.cpp @@ -21,16 +21,19 @@ * Container for equivalence classes of expressions for use in common subexpression elimination. */ +#include + #include -#include -#include -#include -#include #include #include -#include - #include +#include + +#include +#include + +#include +#include using namespace std; using namespace dev; @@ -54,6 +57,11 @@ SimplificationRule const* Rules::findFirstMatch( return nullptr; } +bool Rules::isInitialized() const +{ + return !m_rules[byte(Instruction::ADD)].empty(); +} + void Rules::addRules(std::vector> const& _rules) { for (auto const& r: _rules) @@ -82,6 +90,7 @@ Rules::Rules() Y.setMatchGroup(5, m_matchGroups); addRules(simplificationRuleList(A, B, C, X, Y)); + assertThrow(isInitialized(), OptimizerException, "Rule list not properly initialized."); } Pattern::Pattern(Instruction _instruction, std::vector const& _arguments): -- cgit v1.2.3 From ab0de38f16a9eff13ee5a32a3408b890d87941f6 Mon Sep 17 00:00:00 2001 From: Christian Parpart Date: Wed, 7 Nov 2018 12:04:46 +0100 Subject: Eliminate `byte`-typedef and use `uint8_t` in all their places instead. This change is made to (easily) be forward compatible with future C++ standards, in order to allow compiling the code with newer standards at some point in the future. * Removed the `using byte = uint8_t;` line from Common.h * Mechanically change all uses of `byte` to `uint8_t`. Tested with GCC 7.3 in C++11/14/17 modes :-) --- libevmasm/SimplificationRules.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'libevmasm/SimplificationRules.cpp') diff --git a/libevmasm/SimplificationRules.cpp b/libevmasm/SimplificationRules.cpp index ba13a611..120d1787 100644 --- a/libevmasm/SimplificationRules.cpp +++ b/libevmasm/SimplificationRules.cpp @@ -48,7 +48,7 @@ SimplificationRule const* Rules::findFirstMatch( resetMatchGroups(); assertThrow(_expr.item, OptimizerException, ""); - for (auto const& rule: m_rules[byte(_expr.item->instruction())]) + for (auto const& rule: m_rules[uint8_t(_expr.item->instruction())]) { if (rule.pattern.matches(_expr, _classes)) return &rule; @@ -59,7 +59,7 @@ SimplificationRule const* Rules::findFirstMatch( bool Rules::isInitialized() const { - return !m_rules[byte(Instruction::ADD)].empty(); + return !m_rules[uint8_t(Instruction::ADD)].empty(); } void Rules::addRules(std::vector> const& _rules) @@ -70,7 +70,7 @@ void Rules::addRules(std::vector> const& _rules) void Rules::addRule(SimplificationRule const& _rule) { - m_rules[byte(_rule.pattern.instruction())].push_back(_rule); + m_rules[uint8_t(_rule.pattern.instruction())].push_back(_rule); } Rules::Rules() -- cgit v1.2.3