summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2011-08-24 17:06:04 +0000
committerMartin Odersky <odersky@gmail.com>2011-08-24 17:06:04 +0000
commitce0df1e1bf7a478398fbd6915d99c763c564d182 (patch)
tree2a858810def8f334e268c90026d70a4611020fb9
parente1a9fd9a7a3092e38915425adbd308b48e48e363 (diff)
downloadscala-ce0df1e1bf7a478398fbd6915d99c763c564d182.tar.gz
scala-ce0df1e1bf7a478398fbd6915d99c763c564d182.tar.bz2
scala-ce0df1e1bf7a478398fbd6915d99c763c564d182.zip
Class that can be used for memoizing types in r...
Class that can be used for memoizing types in reified trees
-rw-r--r--src/compiler/scala/reflect/runtime/Memoizer.scala15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/compiler/scala/reflect/runtime/Memoizer.scala b/src/compiler/scala/reflect/runtime/Memoizer.scala
new file mode 100644
index 0000000000..4c1b82ae6d
--- /dev/null
+++ b/src/compiler/scala/reflect/runtime/Memoizer.scala
@@ -0,0 +1,15 @@
+package scala.reflect.runtime
+
+import collection.mutable.ArrayBuffer
+import Mirror.Type
+
+/** Class that can be used for memoizing types in reified trees */
+class Memoizer {
+ private val mem = new ArrayBuffer[Mirror.Type]
+ def get(n: Int): Type = mem(n)
+ def add(n: Int, tpe: Type): Type = {
+ while (mem.length <= n) mem += null
+ mem(n) = tpe
+ tpe
+ }
+}