diff options
Diffstat (limited to 'test/files/specialized/arrays.scala')
-rw-r--r-- | test/files/specialized/arrays.scala | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/test/files/specialized/arrays.scala b/test/files/specialized/arrays.scala new file mode 100644 index 0000000000..505f482486 --- /dev/null +++ b/test/files/specialized/arrays.scala @@ -0,0 +1,55 @@ + + + +import runtime.ScalaRunTime._ + + +class Generic[T](a: Array[T]) { + def apply() = a(0) +} + + +class Spec[@specialized(AnyRef) T](a: Array[T]) { + def apply() = a(0) +} + + +object Test { + + def main(args: Array[String]) { + val len = 50 + + testSpec(new Array[String](len)) + println(arrayApplyCount) + + (new Spec(new Array[String](len)))() + println(arrayApplyCount) + + testGeneric(new Array[String](len)) + println(arrayApplyCount) + + (new Generic(new Array[String](len)))() + println(arrayApplyCount) + } + + def testGeneric[T](a: Array[T]) = { + var i = 0 + var sum = 0 + while (i < a.length) { + sum += (if (a(i) != null) 1 else 0) + i += 1 + } + sum + } + + def testSpec[@specialized(AnyRef) T](a: Array[T]) = { + var i = 0 + var sum = 0 + while (i < a.length) { + sum += (if (a(i) != null) 1 else 0) + i += 1 + } + sum + } + +} |