diff options
| author | Jack Koenig | 2020-03-13 23:46:31 -0700 |
|---|---|---|
| committer | Albert Magyar | 2020-05-14 14:23:35 -0700 |
| commit | 7f81175c1ccbb1338aaaa7f7d778aeec069328e0 (patch) | |
| tree | 4db8185e2f7f55851bd365e8fb5e1cf4315fd787 /src | |
| parent | 0f78e2df9d8f03e6847a012873fc2408b62d0692 (diff) | |
Eliminate unnecessary traversals in ResolveKinds
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/passes/ResolveKinds.scala | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/main/scala/firrtl/passes/ResolveKinds.scala b/src/main/scala/firrtl/passes/ResolveKinds.scala index 1fffcbbf..0f2da3fa 100644 --- a/src/main/scala/firrtl/passes/ResolveKinds.scala +++ b/src/main/scala/firrtl/passes/ResolveKinds.scala @@ -17,7 +17,12 @@ object ResolveKinds extends Pass with PreservesAll[Transform] { kinds(p.name) = PortKind ; p } - def find_stmt(kinds: KindMap)(s: Statement):Statement = { + def resolve_expr(kinds: KindMap)(e: Expression): Expression = e match { + case ex: WRef => ex copy (kind = kinds(ex.name)) + case _ => e map resolve_expr(kinds) + } + + def resolve_stmt(kinds: KindMap)(s: Statement): Statement = { s match { case sx: DefWire => kinds(sx.name) = WireKind case sx: DefNode => kinds(sx.name) = NodeKind @@ -26,24 +31,17 @@ object ResolveKinds extends Pass with PreservesAll[Transform] { case sx: DefMemory => kinds(sx.name) = MemKind case _ => } - s map find_stmt(kinds) - } - - def resolve_expr(kinds: KindMap)(e: Expression): Expression = e match { - case ex: WRef => ex copy (kind = kinds(ex.name)) - case _ => e map resolve_expr(kinds) + s.map(resolve_stmt(kinds)) + .map(resolve_expr(kinds)) } - def resolve_stmt(kinds: KindMap)(s: Statement): Statement = - s map resolve_stmt(kinds) map resolve_expr(kinds) - def resolve_kinds(m: DefModule): DefModule = { val kinds = new KindMap - (m map find_port(kinds) - map find_stmt(kinds) - map resolve_stmt(kinds)) + m.map(find_port(kinds)) + m.map(resolve_stmt(kinds)) } def run(c: Circuit): Circuit = c copy (modules = c.modules map resolve_kinds) } + |
