diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-12-20 15:35:05 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-12-20 15:45:05 +0100 |
commit | a3b10d134401f21c33ce51abd65d3404700ed479 (patch) | |
tree | ae1be596e48c97c2d0d1a4479cb7ded026fa23fc /src/dotty/tools/dotc/core/tasty/TreePickler.scala | |
parent | 68ce6e764db1e41408fcc3ad7c9874836874cd94 (diff) | |
download | dotty-a3b10d134401f21c33ce51abd65d3404700ed479.tar.gz dotty-a3b10d134401f21c33ce51abd65d3404700ed479.tar.bz2 dotty-a3b10d134401f21c33ce51abd65d3404700ed479.zip |
Postpone tree compaction till all phases finish operating TASTY.
Linker adds new sections. Wait for sections to be added and then compact.
Diffstat (limited to 'src/dotty/tools/dotc/core/tasty/TreePickler.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/tasty/TreePickler.scala | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/core/tasty/TreePickler.scala b/src/dotty/tools/dotc/core/tasty/TreePickler.scala index 5c0d4bd67..bb6c3cd2e 100644 --- a/src/dotty/tools/dotc/core/tasty/TreePickler.scala +++ b/src/dotty/tools/dotc/core/tasty/TreePickler.scala @@ -541,12 +541,17 @@ class TreePickler(pickler: TastyPickler) { } def pickle(trees: List[Tree])(implicit ctx: Context) = { + trees.foreach(tree => if (!tree.isEmpty) pickleTree(tree)) + assert(forwardSymRefs.isEmpty, i"unresolved symbols: ${forwardSymRefs.keySet.toList}%, %") + } + + def compactify() = { + buf.compactify() + assert(forwardSymRefs.isEmpty, s"unresolved symbols: ${forwardSymRefs.keySet.toList}%, %") + def updateMapWithDeltas[T](mp: collection.mutable.Map[T, Addr]) = for (key <- mp.keysIterator.toBuffer[T]) mp(key) = adjusted(mp(key)) - trees.foreach(tree => if (!tree.isEmpty) pickleTree(tree)) - assert(forwardSymRefs.isEmpty, i"unresolved symbols: ${forwardSymRefs.keySet.toList}%, %") - compactify() updateMapWithDeltas(symRefs) } } |