summaryrefslogtreecommitdiff
path: root/test/pending
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2012-09-24 14:31:17 +0200
committerEugene Burmako <xeno.by@gmail.com>2012-09-24 14:31:17 +0200
commitb403c1d7524ccdfc3455b5bc5d5363fdd9c82bec (patch)
tree2baee347799ec76cd51fbb8ff8f89abf20249b6f /test/pending
parent291d1f033a790e97298210de29f09a9796406ae3 (diff)
downloadscala-b403c1d7524ccdfc3455b5bc5d5363fdd9c82bec.tar.gz
scala-b403c1d7524ccdfc3455b5bc5d5363fdd9c82bec.tar.bz2
scala-b403c1d7524ccdfc3455b5bc5d5363fdd9c82bec.zip
SI-6412 alleviates leaks in toolboxes
Turns importer caches into fully weak hash maps, and also applies manual cleanup to toolboxes every time they are used. It's not enough, because reflection-mem-typecheck test is still leaking at a rate of ~100kb per typecheck, but it's much better than it was before. We'll fix the rest later, after 2.10.0-final. For more information, see https://issues.scala-lang.org/browse/SI-6412 and http://groups.google.com/group/scala-internals/browse_thread/thread/eabcf3d406dab8b2
Diffstat (limited to 'test/pending')
-rw-r--r--test/pending/run/reflection-mem-eval.scala26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/pending/run/reflection-mem-eval.scala b/test/pending/run/reflection-mem-eval.scala
new file mode 100644
index 0000000000..9045c44cd6
--- /dev/null
+++ b/test/pending/run/reflection-mem-eval.scala
@@ -0,0 +1,26 @@
+import scala.tools.partest.MemoryTest
+
+trait A { type T <: A }
+trait B { type T <: B }
+
+object Test extends MemoryTest {
+ lazy val tb = {
+ import scala.reflect.runtime.universe._
+ import scala.reflect.runtime.{currentMirror => cm}
+ import scala.tools.reflect.ToolBox
+ cm.mkToolBox()
+ }
+
+ override def maxDelta = 10
+ override def calcsPerIter = 3
+ override def calc() {
+ var snippet = """
+ trait A { type T <: A }
+ trait B { type T <: B }
+ def foo[T](x: List[T]) = x
+ foo(List(new A {}, new B {}))
+ """.trim
+ snippet = snippet + "\n" + (List.fill(50)(snippet.split("\n").last) mkString "\n")
+ tb.eval(tb.parse(snippet))
+ }
+} \ No newline at end of file