summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2013-02-14 13:57:32 -0800
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2013-02-14 13:57:32 -0800
commitc8ab5b33b9d02c48b93b0ea6b7174e6057917614 (patch)
treeb524aa4ab7cffa350aa78f7756d8aeb2091f765d
parent466fc670a38836dfb81d75f72d46ddcaa12bc3bb (diff)
downloadscala-c8ab5b33b9d02c48b93b0ea6b7174e6057917614.tar.gz
scala-c8ab5b33b9d02c48b93b0ea6b7174e6057917614.tar.bz2
scala-c8ab5b33b9d02c48b93b0ea6b7174e6057917614.zip
Fix SI-7130: Memory leaked caused by Statistics
As described in the ticket, we were leaking memory by holding reference to Global through by-name argument that was captured by an instance of a class stored in global HashMap `qs`. The fix is simple: do not register quantities in HashMap unless statistics is enabled. This way, if Statistics is disabled we do not store any references. We still leak memory in case of statistics being enabled.
-rw-r--r--src/reflect/scala/reflect/internal/util/Statistics.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/util/Statistics.scala b/src/reflect/scala/reflect/internal/util/Statistics.scala
index 2c90d2d525..af4a0263ec 100644
--- a/src/reflect/scala/reflect/internal/util/Statistics.scala
+++ b/src/reflect/scala/reflect/internal/util/Statistics.scala
@@ -109,7 +109,7 @@ quant)
* Quantities with non-empty prefix are printed in the statistics info.
*/
trait Quantity {
- if (prefix.nonEmpty) {
+ if (enabled && prefix.nonEmpty) {
val key = s"${if (underlying != this) underlying.prefix else ""}/$prefix"
qs(key) = this
}