summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/immutable
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-07-04 04:55:04 +0000
committerPaul Phillips <paulp@improving.org>2011-07-04 04:55:04 +0000
commit54b26beb2c9a82fc5a1b3a66f11ed763bfad39be (patch)
tree111a2081507c084b81918216cdfdaf185605961a /src/library/scala/collection/immutable
parent69b9d9858e6127d021e083d336e9629c12173698 (diff)
downloadscala-54b26beb2c9a82fc5a1b3a66f11ed763bfad39be.tar.gz
scala-54b26beb2c9a82fc5a1b3a66f11ed763bfad39be.tar.bz2
scala-54b26beb2c9a82fc5a1b3a66f11ed763bfad39be.zip
Discovered another impressive source of unneces...
Discovered another impressive source of unnecessary garbage is every collection creating a new GenericCanBuildFrom for every map ever performed. They can all use the same one: they all have the same implementation. It looks like tiark had already figured this out and done it for Vector: I followed with the other fifty. I really haven't the least idea who to have review most things. No review.
Diffstat (limited to 'src/library/scala/collection/immutable')
-rw-r--r--src/library/scala/collection/immutable/GenIterable.scala.disabled2
-rw-r--r--src/library/scala/collection/immutable/GenSeq.scala.disabled2
-rw-r--r--src/library/scala/collection/immutable/GenSet.scala.disabled2
-rw-r--r--src/library/scala/collection/immutable/GenTraversable.scala.disabled2
-rw-r--r--src/library/scala/collection/immutable/IndexedSeq.scala2
-rw-r--r--src/library/scala/collection/immutable/Iterable.scala2
-rw-r--r--src/library/scala/collection/immutable/LinearSeq.scala2
-rw-r--r--src/library/scala/collection/immutable/List.scala3
-rw-r--r--src/library/scala/collection/immutable/Queue.scala2
-rw-r--r--src/library/scala/collection/immutable/Seq.scala2
-rw-r--r--src/library/scala/collection/immutable/Stack.scala2
-rw-r--r--src/library/scala/collection/immutable/Traversable.scala2
-rw-r--r--src/library/scala/collection/immutable/Vector.scala9
13 files changed, 14 insertions, 20 deletions
diff --git a/src/library/scala/collection/immutable/GenIterable.scala.disabled b/src/library/scala/collection/immutable/GenIterable.scala.disabled
index 252c721271..858abd27aa 100644
--- a/src/library/scala/collection/immutable/GenIterable.scala.disabled
+++ b/src/library/scala/collection/immutable/GenIterable.scala.disabled
@@ -31,7 +31,7 @@ trait GenIterable[+A] extends GenTraversable[A]
// object GenIterable extends TraversableFactory[GenIterable] {
-// implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, GenIterable[A]] = new GenericCanBuildFrom[A]
+// implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, GenIterable[A]] = ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
// def newBuilder[A]: Builder[A, GenIterable[A]] = Iterable.newBuilder
// }
diff --git a/src/library/scala/collection/immutable/GenSeq.scala.disabled b/src/library/scala/collection/immutable/GenSeq.scala.disabled
index 36aff8f8e6..5b59418b9f 100644
--- a/src/library/scala/collection/immutable/GenSeq.scala.disabled
+++ b/src/library/scala/collection/immutable/GenSeq.scala.disabled
@@ -39,7 +39,7 @@ trait GenSeq[+A] extends GenIterable[A]
// object GenSeq extends SeqFactory[GenSeq] {
-// implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, GenSeq[A]] = new GenericCanBuildFrom[A]
+// implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, GenSeq[A]] = ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
// def newBuilder[A]: Builder[A, GenSeq[A]] = Seq.newBuilder
// }
diff --git a/src/library/scala/collection/immutable/GenSet.scala.disabled b/src/library/scala/collection/immutable/GenSet.scala.disabled
index 3cca6ba66e..dc921b5245 100644
--- a/src/library/scala/collection/immutable/GenSet.scala.disabled
+++ b/src/library/scala/collection/immutable/GenSet.scala.disabled
@@ -38,6 +38,6 @@ trait GenSet[A] extends GenIterable[A]
// object GenSet extends TraversableFactory[GenSet] {
-// implicit def canBuildFrom[A] = new GenericCanBuildFrom[A]
+// implicit def canBuildFrom[A] = ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
// def newBuilder[A] = Set.newBuilder
// }
diff --git a/src/library/scala/collection/immutable/GenTraversable.scala.disabled b/src/library/scala/collection/immutable/GenTraversable.scala.disabled
index 2ee9bd9d8c..4a5cf12ebe 100644
--- a/src/library/scala/collection/immutable/GenTraversable.scala.disabled
+++ b/src/library/scala/collection/immutable/GenTraversable.scala.disabled
@@ -34,7 +34,7 @@ trait GenTraversable[+A] extends scala.collection.GenTraversable[A]
// object GenTraversable extends TraversableFactory[GenTraversable] {
-// implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, GenTraversable[A]] = new GenericCanBuildFrom[A]
+// implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, GenTraversable[A]] = ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
// def newBuilder[A]: Builder[A, GenTraversable[A]] = Traversable.newBuilder
// }
diff --git a/src/library/scala/collection/immutable/IndexedSeq.scala b/src/library/scala/collection/immutable/IndexedSeq.scala
index 9945f6f0e7..2b06c950fa 100644
--- a/src/library/scala/collection/immutable/IndexedSeq.scala
+++ b/src/library/scala/collection/immutable/IndexedSeq.scala
@@ -35,6 +35,6 @@ object IndexedSeq extends SeqFactory[IndexedSeq] {
def length = buf.length
def apply(idx: Int) = buf.apply(idx)
}
- implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, IndexedSeq[A]] = new GenericCanBuildFrom[A]
+ implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, IndexedSeq[A]] = ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
def newBuilder[A]: Builder[A, IndexedSeq[A]] = Vector.newBuilder[A]
}
diff --git a/src/library/scala/collection/immutable/Iterable.scala b/src/library/scala/collection/immutable/Iterable.scala
index 81579ef3b7..d5fca2bdff 100644
--- a/src/library/scala/collection/immutable/Iterable.scala
+++ b/src/library/scala/collection/immutable/Iterable.scala
@@ -38,6 +38,6 @@ trait Iterable[+A] extends Traversable[A]
* @define coll immutable iterable collection
*/
object Iterable extends TraversableFactory[Iterable] {
- implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Iterable[A]] = new GenericCanBuildFrom[A]
+ implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Iterable[A]] = ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
def newBuilder[A]: Builder[A, Iterable[A]] = new mutable.ListBuffer
}
diff --git a/src/library/scala/collection/immutable/LinearSeq.scala b/src/library/scala/collection/immutable/LinearSeq.scala
index ab8b63238d..e2e2d97588 100644
--- a/src/library/scala/collection/immutable/LinearSeq.scala
+++ b/src/library/scala/collection/immutable/LinearSeq.scala
@@ -31,6 +31,6 @@ trait LinearSeq[+A] extends Seq[A]
* @define Coll immutable.LinearSeq
*/
object LinearSeq extends SeqFactory[LinearSeq] {
- implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, LinearSeq[A]] = new GenericCanBuildFrom[A]
+ implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, LinearSeq[A]] = ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
def newBuilder[A]: Builder[A, LinearSeq[A]] = new mutable.ListBuffer
}
diff --git a/src/library/scala/collection/immutable/List.scala b/src/library/scala/collection/immutable/List.scala
index 563f14eac6..1781e7ba36 100644
--- a/src/library/scala/collection/immutable/List.scala
+++ b/src/library/scala/collection/immutable/List.scala
@@ -426,7 +426,8 @@ object List extends SeqFactory[List] {
import scala.collection.{Iterable, Seq, IndexedSeq}
/** $genericCanBuildFromInfo */
- implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, List[A]] = new GenericCanBuildFrom[A]
+ implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, List[A]] =
+ ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
def newBuilder[A]: Builder[A, List[A]] = new ListBuffer[A]
diff --git a/src/library/scala/collection/immutable/Queue.scala b/src/library/scala/collection/immutable/Queue.scala
index bf5dc6816a..e09e4b7196 100644
--- a/src/library/scala/collection/immutable/Queue.scala
+++ b/src/library/scala/collection/immutable/Queue.scala
@@ -144,7 +144,7 @@ class Queue[+A] protected(protected val in: List[A], protected val out: List[A])
*/
object Queue extends SeqFactory[Queue] {
/** $genericCanBuildFromInfo */
- implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Queue[A]] = new GenericCanBuildFrom[A]
+ implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Queue[A]] = ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
def newBuilder[A]: Builder[A, Queue[A]] = new ListBuffer[A] mapResult (x => new Queue[A](Nil, x.toList))
override def empty[A]: Queue[A] = EmptyQueue.asInstanceOf[Queue[A]]
override def apply[A](xs: A*): Queue[A] = new Queue[A](Nil, xs.toList)
diff --git a/src/library/scala/collection/immutable/Seq.scala b/src/library/scala/collection/immutable/Seq.scala
index 11e56df354..882ca12612 100644
--- a/src/library/scala/collection/immutable/Seq.scala
+++ b/src/library/scala/collection/immutable/Seq.scala
@@ -41,6 +41,6 @@ trait Seq[+A] extends Iterable[A]
*/
object Seq extends SeqFactory[Seq] {
/** genericCanBuildFromInfo */
- implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Seq[A]] = new GenericCanBuildFrom[A]
+ implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Seq[A]] = ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
def newBuilder[A]: Builder[A, Seq[A]] = new mutable.ListBuffer
}
diff --git a/src/library/scala/collection/immutable/Stack.scala b/src/library/scala/collection/immutable/Stack.scala
index 329f12190f..adbe34ed09 100644
--- a/src/library/scala/collection/immutable/Stack.scala
+++ b/src/library/scala/collection/immutable/Stack.scala
@@ -20,7 +20,7 @@ import mutable.{ ArrayBuffer, Builder }
*/
object Stack extends SeqFactory[Stack] {
/** $genericCanBuildFromInfo */
- implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Stack[A]] = new GenericCanBuildFrom[A]
+ implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Stack[A]] = ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
def newBuilder[A]: Builder[A, Stack[A]] = new ArrayBuffer[A] mapResult (buf => new Stack(buf.toList))
@deprecated("Use Stack.empty instead", "2.8.0")
diff --git a/src/library/scala/collection/immutable/Traversable.scala b/src/library/scala/collection/immutable/Traversable.scala
index 80839db31c..7830b38d69 100644
--- a/src/library/scala/collection/immutable/Traversable.scala
+++ b/src/library/scala/collection/immutable/Traversable.scala
@@ -33,6 +33,6 @@ trait Traversable[+A] extends scala.collection.Traversable[A]
* @define Coll immutable.Traversable
*/
object Traversable extends TraversableFactory[Traversable] {
- implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Traversable[A]] = new GenericCanBuildFrom[A]
+ implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Traversable[A]] = ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
def newBuilder[A]: Builder[A, Traversable[A]] = new mutable.ListBuffer
}
diff --git a/src/library/scala/collection/immutable/Vector.scala b/src/library/scala/collection/immutable/Vector.scala
index ab44585902..5adbcbb524 100644
--- a/src/library/scala/collection/immutable/Vector.scala
+++ b/src/library/scala/collection/immutable/Vector.scala
@@ -6,30 +6,23 @@
** |/ **
\* */
-
package scala.collection
package immutable
import scala.annotation.unchecked.uncheckedVariance
import compat.Platform
-
import scala.collection.generic._
import scala.collection.mutable.Builder
import scala.collection.parallel.immutable.ParVector
-
object Vector extends SeqFactory[Vector] {
- private[immutable] val BF = new GenericCanBuildFrom[Nothing] {
- override def apply() = newBuilder[Nothing]
- }
@inline implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Vector[A]] =
- BF.asInstanceOf[CanBuildFrom[Coll, A, Vector[A]]]
+ ReusableCBF.asInstanceOf[CanBuildFrom[Coll, A, Vector[A]]]
def newBuilder[A]: Builder[A, Vector[A]] = new VectorBuilder[A]
private[immutable] val NIL = new Vector[Nothing](0, 0, 0)
@inline override def empty[A]: Vector[A] = NIL
}
-
// in principle, most members should be private. however, access privileges must
// be carefully chosen to not prevent method inlining