diff options
author | Martin Odersky <odersky@gmail.com> | 2010-06-06 07:46:43 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2010-06-06 07:46:43 +0000 |
commit | eebb8695e22cd50f510a132d21c8b47386f86a4c (patch) | |
tree | 22dcfba2ae3f712a1f7da6495b3ee3dbaca599e2 | |
parent | 407ba61ff62de06cfa3c5f72b66f0ea4be793880 (diff) | |
download | scala-eebb8695e22cd50f510a132d21c8b47386f86a4c.tar.gz scala-eebb8695e22cd50f510a132d21c8b47386f86a4c.tar.bz2 scala-eebb8695e22cd50f510a132d21c8b47386f86a4c.zip |
Overwrote copyToArray for efficiency.
-rw-r--r-- | src/library/scala/collection/mutable/ArrayOps.scala | 8 |
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]] |