diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-01-23 00:40:59 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-01-23 01:04:55 +0100 |
commit | ba411c4c2cb4b400481ed3dffed30b6975c000c1 (patch) | |
tree | 01fd836f1838fe012e8c85775e6e48b9fc4b5d8b /test/files/instrumented | |
parent | 884737c75dc7f2765a3d769342ecc832deeddb81 (diff) | |
download | scala-ba411c4c2cb4b400481ed3dffed30b6975c000c1.tar.gz scala-ba411c4c2cb4b400481ed3dffed30b6975c000c1.tar.bz2 scala-ba411c4c2cb4b400481ed3dffed30b6975c000c1.zip |
[backport] Fix unsafe array opt. / opt. primitive Array(...)
SI-6611, SI-6247 (partial fix)
The original commits on master were a bit circuitous, this
is squashed to a neat little package.
I had to add type arguments to the Array.apply calls in the
test case, they are inferred on master.
commit 41ff05dfdbcf032157b3509ace633f2e7a12295c
Author: Jason Zaugg <jzaugg@gmail.com>
Date: Sun Nov 4 14:44:59 2012 +0100
Refactor guards checking for a particular overload of Array.apply.
(cherry picked from commit 092345a24c22a821204fb358d33272ae8f7353be)
commit 1e5c942deccaf64f8d57bd8891b912381d7f220a
Author: Jason Zaugg <jzaugg@gmail.com>
Date: Sun Nov 4 14:17:25 2012 +0100
Expand optimization of Array(e1, ..., en) to primitive arrays.
(cherry picked from commit 8265175ecc42293997d59049f430396c77a2b891)
commit ab1bf77e39f2dfeacf3fc107ccb2907a1867f04c
Author: Jason Zaugg <jzaugg@gmail.com>
Date: Sat Nov 3 13:34:20 2012 +0100
SI-6611 Tighten up an unsafe array optimization
The net was cast too wide and was unsafely optimizing away array
copies.
(cherry picked from commit dad886659faca4fba2d4937c9bc6780591b02c27)
And also:
Optimize primitive Array(e1, ..., en)
Expands an existing optimization for reference arrays to
apply to primitives, as well.
Fixes one aspect of SI-6247.
(cherry picked from commit cac5a08611f9511ba4d94b99db630404efae190a)
Conflicts:
src/compiler/scala/tools/nsc/transform/CleanUp.scala
More principled tree copying.
Canonical > home-spun.
Conflicts:
src/compiler/scala/tools/nsc/transform/CleanUp.scala
Diffstat (limited to 'test/files/instrumented')
-rw-r--r-- | test/files/instrumented/t6611.check | 1 | ||||
-rw-r--r-- | test/files/instrumented/t6611.scala | 35 |
2 files changed, 36 insertions, 0 deletions
diff --git a/test/files/instrumented/t6611.check b/test/files/instrumented/t6611.check new file mode 100644 index 0000000000..5cd691e93a --- /dev/null +++ b/test/files/instrumented/t6611.check @@ -0,0 +1 @@ +Method call statistics: diff --git a/test/files/instrumented/t6611.scala b/test/files/instrumented/t6611.scala new file mode 100644 index 0000000000..4c52f8a5ef --- /dev/null +++ b/test/files/instrumented/t6611.scala @@ -0,0 +1,35 @@ +import scala.tools.partest.instrumented.Instrumentation._ + +object Test { + def main(args: Array[String]) { + startProfiling() + + // tests optimization in Cleanup for varargs reference arrays + Array("") + + + Array(true) + Array(true, false) + Array(1: Byte) + Array(1: Byte, 2: Byte) + Array(1: Short) + Array(1: Short, 2: Short) + Array(1) + Array(1, 2) + Array(1L) + Array(1L, 2L) + Array(1d) + Array(1d, 2d) + Array(1f) + Array(1f, 2f) + + /* Not currently optimized: + Array[Int](1, 2) etc + Array(()) + Array((), ()) + */ + + stopProfiling() + printStatistics() + } +} |