summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2010-06-06 07:46:43 +0000
committerMartin Odersky <odersky@gmail.com>2010-06-06 07:46:43 +0000
commiteebb8695e22cd50f510a132d21c8b47386f86a4c (patch)
tree22dcfba2ae3f712a1f7da6495b3ee3dbaca599e2
parent407ba61ff62de06cfa3c5f72b66f0ea4be793880 (diff)
downloadscala-eebb8695e22cd50f510a132d21c8b47386f86a4c.tar.gz
scala-eebb8695e22cd50f510a132d21c8b47386f86a4c.tar.bz2
scala-eebb8695e22cd50f510a132d21c8b47386f86a4c.zip
Overwrote copyToArray for efficiency.
-rw-r--r--src/library/scala/collection/mutable/ArrayOps.scala8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/library/scala/collection/mutable/ArrayOps.scala b/src/library/scala/collection/mutable/ArrayOps.scala
index d7072c0661..00e8697b53 100644
--- a/src/library/scala/collection/mutable/ArrayOps.scala
+++ b/src/library/scala/collection/mutable/ArrayOps.scala
@@ -10,6 +10,7 @@
package scala.collection
package mutable
+import compat.Platform.arraycopy
import scala.reflect.ClassManifest
@@ -38,6 +39,13 @@ abstract class ArrayOps[T] extends ArrayLike[T, Array[T]] {
ClassManifest.fromClass(
repr.getClass.getComponentType.getComponentType.asInstanceOf[Predef.Class[U]]))
+ override def copyToArray[U >: T](xs: Array[U], start: Int, len: Int) {
+ var l = len
+ if (repr.length < l) l = repr.length
+ if (xs.length - start < l) l = xs.length - start max 0
+ Array.copy(repr, 0, xs, start, l)
+ }
+
override def toArray[U >: T : ClassManifest]: Array[U] =
if (implicitly[ClassManifest[U]].erasure eq repr.getClass.getComponentType)
repr.asInstanceOf[Array[U]]