summaryrefslogtreecommitdiff
path: root/test/files/jvm/nooptimise/Test.scala
diff options
context:
space:
mode:
authorJames Iry <jamesiry@gmail.com>2013-03-05 20:08:46 -0800
committerJames Iry <jamesiry@gmail.com>2013-03-05 20:16:32 -0800
commit3f0224c4de5b04f33e3de523c03d418b818af879 (patch)
tree52f122539a235e659167fa2fdf27633c1bc2a025 /test/files/jvm/nooptimise/Test.scala
parent32f04db6723b1c8d19f34499543b6b3dbc1f923d (diff)
downloadscala-3f0224c4de5b04f33e3de523c03d418b818af879.tar.gz
scala-3f0224c4de5b04f33e3de523c03d418b818af879.tar.bz2
scala-3f0224c4de5b04f33e3de523c03d418b818af879.zip
Add option to disable optimization
By default we run par test under -optimise. But occasionally we need to test optimizations in isolation. This commit adds a Ynooptimise flag that turns the optimize flags off back off after they've been turned on. A test is included to ensure that -Ynooptimise turns off optimizations and an existing test is modified to show that optimizations coming after -Ynooptimise in command line are enabled.
Diffstat (limited to 'test/files/jvm/nooptimise/Test.scala')
-rw-r--r--test/files/jvm/nooptimise/Test.scala23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/files/jvm/nooptimise/Test.scala b/test/files/jvm/nooptimise/Test.scala
new file mode 100644
index 0000000000..ec8daa6e16
--- /dev/null
+++ b/test/files/jvm/nooptimise/Test.scala
@@ -0,0 +1,23 @@
+import scala.tools.partest.BytecodeTest
+import scala.tools.asm
+import asm.tree.InsnList
+import scala.collection.JavaConverters._
+
+object Test extends BytecodeTest {
+ def show: Unit = {
+ val classNode = loadClassNode("Foo_1")
+ val methodNode = getMethod(classNode, "foo")
+ // if optimization didn't run then
+ // there should be some useless instructions
+ // with the magic constant 3
+ val expected = 1
+ val got = countMagicThrees(methodNode.instructions)
+ assert(got == expected, s"expected $expected but got $got magic threes")
+ }
+
+ def countMagicThrees(insnList: InsnList): Int = {
+ def isMagicThree(node: asm.tree.AbstractInsnNode): Boolean =
+ (node.getOpcode == asm.Opcodes.ICONST_3)
+ insnList.iterator.asScala.count(isMagicThree)
+ }
+}