aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/Utils.scala
diff options
context:
space:
mode:
authorSchuyler Eldridge2018-11-01 16:18:16 -0400
committerGitHub2018-11-01 16:18:16 -0400
commitece8e1b0bb459fd5aa139390b6cb7d313077d21d (patch)
tree5626a130bc1607e6a4c68eec864b7944f3a322e8 /src/main/scala/firrtl/Utils.scala
parent297fbda180584cc3456145faecdc40418babeef1 (diff)
parent9bc2e6daaf3a3a08aefe485aa924c820689de981 (diff)
Merge pull request #928 from freechipsproject/dont-append-to-lists
Adds performance improvements by removing list appends.
Diffstat (limited to 'src/main/scala/firrtl/Utils.scala')
-rw-r--r--src/main/scala/firrtl/Utils.scala8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/main/scala/firrtl/Utils.scala b/src/main/scala/firrtl/Utils.scala
index 2d1b0b74..44b16bf8 100644
--- a/src/main/scala/firrtl/Utils.scala
+++ b/src/main/scala/firrtl/Utils.scala
@@ -256,10 +256,9 @@ object Utils extends LazyLogging {
case ex: ValidIf => create_exps(ex.value) map (e1 => ValidIf(ex.cond, e1, e1.tpe))
case ex => ex.tpe match {
case (_: GroundType) => Seq(ex)
- case (t: BundleType) => (t.fields foldLeft Seq[Expression]())((exps, f) =>
- exps ++ create_exps(WSubField(ex, f.name, f.tpe,times(gender(ex), f.flip))))
- case (t: VectorType) => (0 until t.size foldLeft Seq[Expression]())((exps, i) =>
- exps ++ create_exps(WSubIndex(ex, i, t.tpe,gender(ex))))
+ case t: BundleType =>
+ t.fields.flatMap(f => create_exps(WSubField(ex, f.name, f.tpe,times(gender(ex), f.flip))))
+ case t: VectorType => (0 until t.size).flatMap(i => create_exps(WSubIndex(ex, i, t.tpe,gender(ex))))
}
}
@@ -301,6 +300,7 @@ object Utils extends LazyLogging {
onExp(expression)
ReferenceTarget(main, module, Nil, ref, tokens)
}
+ @deprecated("get_flip is fundamentally slow, use to_flip(gender(expr))", "1.2")
def get_flip(t: Type, i: Int, f: Orientation): Orientation = {
if (i >= get_size(t)) throwInternalError(s"get_flip: shouldn't be here - $i >= get_size($t)")
t match {