From 57f52a585ceaabc90136dc4672ab690ff48d59da Mon Sep 17 00:00:00 2001 From: Donggyu Kim Date: Fri, 19 Aug 2016 14:59:31 -0700 Subject: remove unnecessary mappers in Namespace there's a big stack overhead with mappers --- src/main/scala/firrtl/Namespace.scala | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/main/scala/firrtl/Namespace.scala b/src/main/scala/firrtl/Namespace.scala index e7a1cd10..952670cf 100644 --- a/src/main/scala/firrtl/Namespace.scala +++ b/src/main/scala/firrtl/Namespace.scala @@ -63,22 +63,16 @@ object Namespace { def apply(m: DefModule): Namespace = { val namespace = new Namespace - def buildNamespaceStmt(s: Statement): Statement = - s map buildNamespaceStmt match { - case dec: IsDeclaration => - namespace.namespace += dec.name - dec - case x => x - } - def buildNamespacePort(p: Port): Port = p match { - case dec: IsDeclaration => - namespace.namespace += dec.name - dec - case x => x + def buildNamespaceStmt(s: Statement): Seq[String] = s match { + case s: IsDeclaration => Seq(s.name) + case s: Conditionally => buildNamespaceStmt(s.conseq) ++ buildNamespaceStmt(s.alt) + case s: Block => s.stmts flatMap buildNamespaceStmt + case _ => Nil } - m.ports map buildNamespacePort + namespace.namespace ++= (m.ports collect { case dec: IsDeclaration => dec.name }) m match { - case in: Module => buildNamespaceStmt(in.body) + case in: Module => + namespace.namespace ++= buildNamespaceStmt(in.body) case _ => // Do nothing } -- cgit v1.2.3