diff options
| author | Donggyu Kim | 2016-08-19 14:59:31 -0700 |
|---|---|---|
| committer | Donggyu Kim | 2016-09-06 13:12:21 -0700 |
| commit | 57f52a585ceaabc90136dc4672ab690ff48d59da (patch) | |
| tree | 9e9452169084333b34cbbd851e28bde5719ebaa6 /src | |
| parent | 99dd51fefb3050ba825ca1a92c168e2d6d7b7ad8 (diff) | |
remove unnecessary mappers in Namespace
there's a big stack overhead with mappers
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/Namespace.scala | 22 |
1 files changed, 8 insertions, 14 deletions
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 } |
