aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDonggyu Kim2016-08-19 14:59:31 -0700
committerDonggyu Kim2016-09-06 13:12:21 -0700
commit57f52a585ceaabc90136dc4672ab690ff48d59da (patch)
tree9e9452169084333b34cbbd851e28bde5719ebaa6 /src
parent99dd51fefb3050ba825ca1a92c168e2d6d7b7ad8 (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.scala22
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
}