diff options
| author | Andrew Waterman | 2015-07-28 19:55:16 -0700 |
|---|---|---|
| committer | Andrew Waterman | 2015-07-28 19:55:16 -0700 |
| commit | fe1250c59ae8a444233fdf1a20264523e7788161 (patch) | |
| tree | 0d1b1ac845918b32511c967c6cdf4e7049a2f68c /src/main/scala/Chisel | |
| parent | dc58bdb68b3c10eb690ce095ddd2ce3bf1e68ea6 (diff) | |
Only attempt to name vals, not defs
Diffstat (limited to 'src/main/scala/Chisel')
| -rw-r--r-- | src/main/scala/Chisel/Core.scala | 54 |
1 files changed, 26 insertions, 28 deletions
diff --git a/src/main/scala/Chisel/Core.scala b/src/main/scala/Chisel/Core.scala index e18920b5..d49fe624 100644 --- a/src/main/scala/Chisel/Core.scala +++ b/src/main/scala/Chisel/Core.scala @@ -1028,38 +1028,36 @@ abstract class Module(private[Chisel] _reset: Bool = null) extends Id { // getClass.getName.replace('.', '_') getClass.getName.split('.').last } - def debugName: String = { - val p = _parent.getOrElse(null) - val pname = if (p == null) "" else (p.debugName + ".") - pname + getRefForId(cid).debugName - } + def debugName: String = (_parent match { + case Some(p) => p.debugName + "." + case None => "" + }) + getRefForId(cid).debugName + + private def setRefs: Unit = { + val valNames = HashSet[String](getClass.getDeclaredFields.map(_.getName):_*) + def isPublicVal(m: java.lang.reflect.Method) = + m.getParameterTypes.isEmpty && valNames.contains(m.getName) && isPublic(m.getModifiers) - def setRefs { _nodes.foreach(_.collectElts) setRefForId(io.cid, "this") - for (m <- getClass.getDeclaredMethods) { - val name = m.getName() - val types = m.getParameterTypes() - if (types.length == 0 && isPublic(m.getModifiers())) { - val obj = m.invoke(this) - obj match { - case module: Module => - setRefForId(module.cid, name) - module.setRefs - case bundle: Bundle => - if (name != "io") { - setRefForId(bundle.cid, name) - } - case mem: Mem[_] => - setRefForId(mem.t.cid, name) - case vec: Vec[_] => - setRefForId(vec.cid, name) - case data: Data => - setRefForId(data.cid, name) - // ignore anything not of those types - case _ => null - } + for (m <- getClass.getDeclaredMethods; if isPublicVal(m)) { + m.invoke(this) match { + case module: Module => + setRefForId(module.cid, m.getName) + module.setRefs + case bundle: Bundle => + if (m.getName != "io") { + setRefForId(bundle.cid, m.getName) + } + case mem: Mem[_] => + setRefForId(mem.t.cid, m.getName) + case vec: Vec[_] => + setRefForId(vec.cid, m.getName) + case data: Data => + setRefForId(data.cid, m.getName) + // ignore anything not of those types + case _ => null } } } |
