diff options
author | James Iry <jamesiry@gmail.com> | 2013-03-06 05:40:21 -0800 |
---|---|---|
committer | James Iry <jamesiry@gmail.com> | 2013-03-06 05:40:21 -0800 |
commit | b8c8299be52e1bffc0efec54bd7294510e36022e (patch) | |
tree | 52f122539a235e659167fa2fdf27633c1bc2a025 /test/files | |
parent | 32f04db6723b1c8d19f34499543b6b3dbc1f923d (diff) | |
parent | 3f0224c4de5b04f33e3de523c03d418b818af879 (diff) | |
download | scala-b8c8299be52e1bffc0efec54bd7294510e36022e.tar.gz scala-b8c8299be52e1bffc0efec54bd7294510e36022e.tar.bz2 scala-b8c8299be52e1bffc0efec54bd7294510e36022e.zip |
Merge pull request #2205 from JamesIry/master_deoptimize
Add option to disable optimization
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/jvm/nooptimise/Foo_1.flags | 1 | ||||
-rw-r--r-- | test/files/jvm/nooptimise/Foo_1.scala | 8 | ||||
-rw-r--r-- | test/files/jvm/nooptimise/Test.scala | 23 | ||||
-rw-r--r-- | test/files/jvm/t7006/Foo_1.flags | 2 |
4 files changed, 33 insertions, 1 deletions
diff --git a/test/files/jvm/nooptimise/Foo_1.flags b/test/files/jvm/nooptimise/Foo_1.flags new file mode 100644 index 0000000000..9686c20775 --- /dev/null +++ b/test/files/jvm/nooptimise/Foo_1.flags @@ -0,0 +1 @@ +-optimise -Ynooptimise
\ No newline at end of file diff --git a/test/files/jvm/nooptimise/Foo_1.scala b/test/files/jvm/nooptimise/Foo_1.scala new file mode 100644 index 0000000000..c6f1b06c8e --- /dev/null +++ b/test/files/jvm/nooptimise/Foo_1.scala @@ -0,0 +1,8 @@ +class Foo_1 { + def foo() { + // optimization will remove this magic 3 from appearing in the source + // so -Ynooptimize should prevent that + val x = 3 + + } +} 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) + } +} diff --git a/test/files/jvm/t7006/Foo_1.flags b/test/files/jvm/t7006/Foo_1.flags index 72fe7b1aa0..b723a661a7 100644 --- a/test/files/jvm/t7006/Foo_1.flags +++ b/test/files/jvm/t7006/Foo_1.flags @@ -1 +1 @@ - -Ydead-code -Ydebug -Xfatal-warnings +-Ynooptimise -Ydead-code -Ydebug -Xfatal-warnings |