diff options
author | Lukas Rytz <lukas.rytz@gmail.com> | 2016-02-16 12:33:45 +0100 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@gmail.com> | 2016-02-16 12:33:45 +0100 |
commit | 60bcaf19f90f76722658e2b5b2bb3d8a3009375c (patch) | |
tree | 592f797cffd35ef5e1dcb38c27ad25efaa74d467 /test/junit/scala/tools/nsc/backend/jvm/opt/UnreachableCodeTest.scala | |
parent | 97d8e5a2fd24f83e1adb17a11c15de2d8d9390bf (diff) | |
download | scala-60bcaf19f90f76722658e2b5b2bb3d8a3009375c.tar.gz scala-60bcaf19f90f76722658e2b5b2bb3d8a3009375c.tar.bz2 scala-60bcaf19f90f76722658e2b5b2bb3d8a3009375c.zip |
Clean up some bytecode tests
Diffstat (limited to 'test/junit/scala/tools/nsc/backend/jvm/opt/UnreachableCodeTest.scala')
-rw-r--r-- | test/junit/scala/tools/nsc/backend/jvm/opt/UnreachableCodeTest.scala | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/test/junit/scala/tools/nsc/backend/jvm/opt/UnreachableCodeTest.scala b/test/junit/scala/tools/nsc/backend/jvm/opt/UnreachableCodeTest.scala index 62ee09e9de..9634517e28 100644 --- a/test/junit/scala/tools/nsc/backend/jvm/opt/UnreachableCodeTest.scala +++ b/test/junit/scala/tools/nsc/backend/jvm/opt/UnreachableCodeTest.scala @@ -232,35 +232,33 @@ class UnreachableCodeTest extends ClearAfterClass { """.stripMargin val List(c) = compileClasses(noOptCompiler)(code) - assertEquals(getSingleMethod(c, "nl").instructions.summary, List(ACONST_NULL, ARETURN)) + assertSameSummary(getSingleMethod(c, "nl"), List(ACONST_NULL, ARETURN)) - assertEquals(getSingleMethod(c, "nt").instructions.summary, List( + assertSameSummary(getSingleMethod(c, "nt"), List( NEW, DUP, LDC, "<init>", ATHROW)) - assertEquals(getSingleMethod(c, "t1").instructions.summary, List( + assertSameSummary(getSingleMethod(c, "t1"), List( ALOAD, ACONST_NULL, "cons", RETURN)) // GenBCode introduces POP; ACONST_NULL after loading an expression of type scala.runtime.Null$, // see comment in BCodeBodyBuilder.adapt - assertEquals(getSingleMethod(c, "t2").instructions.summary, List( + assertSameSummary(getSingleMethod(c, "t2"), List( ALOAD, ALOAD, "nl", POP, ACONST_NULL, "cons", RETURN)) // the bytecode generated by GenBCode is ... ATHROW; INVOKEVIRTUAL C.cons; RETURN // the ASM classfile writer creates a new basic block (creates a label) right after the ATHROW // and replaces all instructions by NOP*; ATHROW, see comment in BCodeBodyBuilder.adapt // NOTE: DCE is enabled by default and gets rid of the redundant code (tested below) - assertEquals(getSingleMethod(c, "t3").instructions.summary, List( + assertSameSummary(getSingleMethod(c, "t3"), List( ALOAD, NEW, DUP, LDC, "<init>", ATHROW, NOP, NOP, NOP, ATHROW)) // GenBCode introduces an ATHROW after the invocation of C.nt, see BCodeBodyBuilder.adapt // NOTE: DCE is enabled by default and gets rid of the redundant code (tested below) - assertEquals(getSingleMethod(c, "t4").instructions.summary, List( + assertSameSummary(getSingleMethod(c, "t4"), List( ALOAD, ALOAD, "nt", ATHROW, NOP, NOP, NOP, ATHROW)) val List(cDCE) = compileClasses(dceCompiler)(code) - assertEquals(getSingleMethod(cDCE, "t3").instructions.summary, List( - ALOAD, NEW, DUP, LDC, "<init>", ATHROW)) - assertEquals(getSingleMethod(cDCE, "t4").instructions.summary, List( - ALOAD, ALOAD, "nt", ATHROW)) + assertSameSummary(getSingleMethod(cDCE, "t3"), List(ALOAD, NEW, DUP, LDC, "<init>", ATHROW)) + assertSameSummary(getSingleMethod(cDCE, "t4"), List(ALOAD, ALOAD, "nt", ATHROW)) } } |