From b7b9af739b7f1b96c030619f8910cfd6f571d6d6 Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Tue, 2 Jun 2020 15:56:22 -0700 Subject: Fix performance pathology in DedupModules (#1654) Fix a performance bug in DedupModules introduced in #1539. Stop recalculating the same expensive datastructures for each module, potentially multiple times. Co-authored-by: Schuyler Eldridge --- src/main/scala/firrtl/transforms/Dedup.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/scala/firrtl/transforms/Dedup.scala b/src/main/scala/firrtl/transforms/Dedup.scala index f91e2e41..7199d63a 100644 --- a/src/main/scala/firrtl/transforms/Dedup.scala +++ b/src/main/scala/firrtl/transforms/Dedup.scala @@ -165,7 +165,7 @@ class DedupModules extends Transform with DependencyAPIMigration with PreservesA }.toMap // get the ordered set of instances a module, includes new Deduped modules - val getChildrenInstances = (mod: String) => { + val getChildrenInstances = { val childrenMap = instanceGraph.getChildrenInstances val newModsMap: Map[String, mutable.LinkedHashSet[WDefInstance]] = dedupMap.map { case (name, m: Module) => @@ -175,7 +175,7 @@ class DedupModules extends Transform with DependencyAPIMigration with PreservesA case (name, m: DefModule) => m.name -> mutable.LinkedHashSet.empty[WDefInstance] }.toMap - childrenMap.get(mod).getOrElse(newModsMap(mod)) + (mod: String) => childrenMap.get(mod).getOrElse(newModsMap(mod)) } val instanceNameMap: Map[OfModule, Map[Instance, Instance]] = { -- cgit v1.2.3