diff options
author | Martin Odersky <odersky@gmail.com> | 2007-08-30 16:46:28 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2007-08-30 16:46:28 +0000 |
commit | 97946f9d60d289beee2f980c2b3efe984db23a38 (patch) | |
tree | afd036350bd2010b0dadd727be19138ec4ea2eb9 | |
parent | 71ba470de369e42fc935e4101aedc066c9e0c4d6 (diff) | |
download | scala-97946f9d60d289beee2f980c2b3efe984db23a38.tar.gz scala-97946f9d60d289beee2f980c2b3efe984db23a38.tar.bz2 scala-97946f9d60d289beee2f980c2b3efe984db23a38.zip |
fixed ticket 17 (unboxing 2d-arrays)
-rw-r--r-- | src/library/scala/runtime/BoxedAnyArray.scala | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/library/scala/runtime/BoxedAnyArray.scala b/src/library/scala/runtime/BoxedAnyArray.scala index a03ed39053..316c085aa1 100644 --- a/src/library/scala/runtime/BoxedAnyArray.scala +++ b/src/library/scala/runtime/BoxedAnyArray.scala @@ -154,11 +154,21 @@ final class BoxedAnyArray(val length: Int) extends BoxedArray { i += 1 } unboxed = newvalue; - } else if (elemClass == boxed.getClass().getComponentType()) { + } else if (elemClass == classOf[AnyRef]) { // todo: replace with ScalaRunTime.AnyRef.class unboxed = boxed } else { unboxed = Platform.createArray(elemClass, length) + if (elemClass.isArray) { + var i = 0 + while (i < length) { + boxed(i) match { + case ba: BoxedArray => boxed(i) = ba.unbox(elemClass.getComponentType()) + case _ => + } + i += 1 + } + } Platform.arraycopy(boxed, 0, unboxed, 0, length) } boxed = null |