From df5946d9cb44b51c44d1ce381e743e52264c81e7 Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Sat, 23 Nov 2024 17:31:00 +0300 Subject: [PATCH] interop: slightly rephrase BuildHFSpecificMD logic Technically, we can always buildHFSpecificMD() if contract is active, but we just optimize the build out in some cases. switch slightly obfuscates this and requires having the call in two branches. Signed-off-by: Roman Khimov --- pkg/core/interop/context.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/pkg/core/interop/context.go b/pkg/core/interop/context.go index b23690fb6f..bf600acacc 100644 --- a/pkg/core/interop/context.go +++ b/pkg/core/interop/context.go @@ -266,18 +266,16 @@ func (c *ContractMD) BuildHFSpecificMD(activeIn *config.Hardfork) { } for _, hf := range append([]config.Hardfork{config.HFDefault}, config.Hardforks...) { - switch { - case hf.Cmp(start) < 0: + if hf.Cmp(start) < 0 { continue - case hf.Cmp(start) == 0: - c.buildHFSpecificMD(hf) - default: - if _, ok := c.ActiveHFs[hf]; !ok { - // Intentionally omit HFSpecificContractMD structure copying since mdCache is read-only. - c.mdCache[hf] = c.mdCache[hf.Prev()] - continue - } + } + _, contractHasChanges := c.ActiveHFs[hf] + if hf.Cmp(start) == 0 || contractHasChanges { c.buildHFSpecificMD(hf) + } else { + // Optimize out MD rebuild, the contract is the same. + // Intentionally omit HFSpecificContractMD structure copying since mdCache is read-only. + c.mdCache[hf] = c.mdCache[hf.Prev()] } } }