summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorJack Koenig2021-03-04 18:24:08 -0800
committerJack Koenig2021-03-12 16:16:45 -0800
commita8d32388ffa8c29a3b0f9e78ab6cd917b92954cd (patch)
tree1ce22bbf889192de399adacc6725e1c87bd598bf /core/src
parent1494231212425fd09f915d819102ca5cdef0dfcf (diff)
[plugin] Stop autoclonetype stack traces when using plugin
The compiler plugin obviates the need for using stack traces to determine outer objects in autoclonetype. When the plugin was used to compile a given Bundle, it will no longer collect a stack trace upon construction. This should have massive benefits to elaboration runtime.
Diffstat (limited to 'core/src')
-rw-r--r--core/src/main/scala/chisel3/Aggregate.scala6
1 files changed, 3 insertions, 3 deletions
diff --git a/core/src/main/scala/chisel3/Aggregate.scala b/core/src/main/scala/chisel3/Aggregate.scala
index 30276230..c5a917fa 100644
--- a/core/src/main/scala/chisel3/Aggregate.scala
+++ b/core/src/main/scala/chisel3/Aggregate.scala
@@ -809,11 +809,11 @@ abstract class Bundle(implicit compileOptions: CompileOptions) extends Record {
// (like the outer module or enclosing Bundles).
private var _outerInst: Option[Object] = None
- // For autoclonetype, record possible candidates for outer instance.
+ // For reflective autoclonetype, record possible candidates for outer instance.
// _outerInst should always take precedence, since it should be propagated from the original
// object which has the most accurate context.
- private val _containingModule: Option[BaseModule] = Builder.currentModule
- private val _containingBundles: Seq[Bundle] = Builder.updateBundleStack(this)
+ private val _containingModule: Option[BaseModule] = if (_usingPlugin) None else Builder.currentModule
+ private val _containingBundles: Seq[Bundle] = if (_usingPlugin) Nil else Builder.updateBundleStack(this)
private def checkClone(clone: Bundle): Unit = {
for ((name, field) <- elements) {