summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/parallel/immutable
diff options
context:
space:
mode:
authorAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2011-03-22 18:22:25 +0000
committerAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2011-03-22 18:22:25 +0000
commite579152f7329a314607d33c7e3761b769b93518d (patch)
treee1ff4d301bdf7bc11b30f047645698f6aa82f800 /src/library/scala/collection/parallel/immutable
parent60d9a5127cf190c90e2e3ce4f79455469dac54eb (diff)
downloadscala-e579152f7329a314607d33c7e3761b769b93518d.tar.gz
scala-e579152f7329a314607d33c7e3761b769b93518d.tar.bz2
scala-e579152f7329a314607d33c7e3761b769b93518d.zip
Implementing foreach to work in parallel in Par...
Implementing foreach to work in parallel in ParIterableLike. Doing a bunch of refactoring around in the collection framework to ensure a parallel foreach is never called with a side-effecting method. This still leaves other parts of the standard library and the compiler unguarded. No review.
Diffstat (limited to 'src/library/scala/collection/parallel/immutable')
-rw-r--r--src/library/scala/collection/parallel/immutable/ParHashMap.scala2
-rw-r--r--src/library/scala/collection/parallel/immutable/ParHashSet.scala2
-rw-r--r--src/library/scala/collection/parallel/immutable/ParRange.scala2
-rw-r--r--src/library/scala/collection/parallel/immutable/ParSeq.scala2
-rw-r--r--src/library/scala/collection/parallel/immutable/ParVector.scala5
-rw-r--r--src/library/scala/collection/parallel/immutable/package.scala2
6 files changed, 9 insertions, 6 deletions
diff --git a/src/library/scala/collection/parallel/immutable/ParHashMap.scala b/src/library/scala/collection/parallel/immutable/ParHashMap.scala
index 66b981e8c4..84705c33e7 100644
--- a/src/library/scala/collection/parallel/immutable/ParHashMap.scala
+++ b/src/library/scala/collection/parallel/immutable/ParHashMap.scala
@@ -66,7 +66,7 @@ self =>
def parallelIterator: ParIterableIterator[(K, V)] = new ParHashMapIterator(trie.iterator, trie.size) with SCPI
- def seq = trie
+ override def seq = trie
def -(k: K) = new ParHashMap(trie - k)
diff --git a/src/library/scala/collection/parallel/immutable/ParHashSet.scala b/src/library/scala/collection/parallel/immutable/ParHashSet.scala
index bd9cefa298..29c6eb0f93 100644
--- a/src/library/scala/collection/parallel/immutable/ParHashSet.scala
+++ b/src/library/scala/collection/parallel/immutable/ParHashSet.scala
@@ -64,7 +64,7 @@ self =>
def parallelIterator: ParIterableIterator[T] = new ParHashSetIterator(trie.iterator, trie.size) with SCPI
- def seq = trie
+ override def seq = trie
def -(e: T) = new ParHashSet(trie - e)
diff --git a/src/library/scala/collection/parallel/immutable/ParRange.scala b/src/library/scala/collection/parallel/immutable/ParRange.scala
index f68c7c9062..157f6746fa 100644
--- a/src/library/scala/collection/parallel/immutable/ParRange.scala
+++ b/src/library/scala/collection/parallel/immutable/ParRange.scala
@@ -39,7 +39,7 @@ extends ParSeq[Int]
{
self =>
- def seq = range
+ override def seq = range
@inline final def length = range.length
diff --git a/src/library/scala/collection/parallel/immutable/ParSeq.scala b/src/library/scala/collection/parallel/immutable/ParSeq.scala
index dbb37a9c69..a922642022 100644
--- a/src/library/scala/collection/parallel/immutable/ParSeq.scala
+++ b/src/library/scala/collection/parallel/immutable/ParSeq.scala
@@ -32,7 +32,7 @@ extends collection.immutable.Seq[T]
with collection.parallel.ParSeq[T]
with ParIterable[T]
with GenericParTemplate[T, ParSeq]
- with ParSeqLike[T, ParSeq[T], Seq[T]]
+ with ParSeqLike[T, ParSeq[T], collection.immutable.Seq[T]]
{
override def companion: GenericCompanion[ParSeq] with GenericParCompanion[ParSeq] = ParSeq
override def toSeq: ParSeq[T] = this
diff --git a/src/library/scala/collection/parallel/immutable/ParVector.scala b/src/library/scala/collection/parallel/immutable/ParVector.scala
index f79ba2a7f9..05e057a2a4 100644
--- a/src/library/scala/collection/parallel/immutable/ParVector.scala
+++ b/src/library/scala/collection/parallel/immutable/ParVector.scala
@@ -52,13 +52,16 @@ extends ParSeq[T]
type SCPI = SignalContextPassingIterator[ParVectorIterator]
def apply(idx: Int) = vector.apply(idx)
+
def length = vector.length
+
def parallelIterator: ParSeqIterator[T] = {
val pit = new ParVectorIterator(vector.startIndex, vector.endIndex) with SCPI
vector.initIterator(pit)
pit
}
- def seq: Vector[T] = vector
+
+ override def seq: Vector[T] = vector
class ParVectorIterator(_start: Int, _end: Int) extends VectorIterator[T](_start, _end) with ParIterator {
self: SCPI =>
diff --git a/src/library/scala/collection/parallel/immutable/package.scala b/src/library/scala/collection/parallel/immutable/package.scala
index 8bb0b2216d..87d5bfc9f9 100644
--- a/src/library/scala/collection/parallel/immutable/package.scala
+++ b/src/library/scala/collection/parallel/immutable/package.scala
@@ -37,7 +37,7 @@ package object immutable {
private[parallel] class Repetition[T](elem: T, val length: Int) extends ParSeq[T] {
self =>
def apply(idx: Int) = if (0 <= idx && idx < length) elem else throw new IndexOutOfBoundsException
- def seq = throw new UnsupportedOperationException
+ override def seq = throw new UnsupportedOperationException
def update(idx: Int, elem: T) = throw new UnsupportedOperationException
type SCPI = SignalContextPassingIterator[ParIterator]