diff options
author | Stefan Zeiger <szeiger@novocode.com> | 2016-02-17 18:06:24 +0100 |
---|---|---|
committer | Stefan Zeiger <szeiger@novocode.com> | 2016-02-17 18:06:24 +0100 |
commit | be3f0e3db699aef764b1f61f95be0871ba7a715a (patch) | |
tree | 1f90f9412f7c377f528169eec06a0b7c2f5b3cdb /src | |
parent | 4e39a79e726eb2a499dd4948ef03e14b73f2e4e3 (diff) | |
parent | 60bcaf19f90f76722658e2b5b2bb3d8a3009375c (diff) | |
download | scala-be3f0e3db699aef764b1f61f95be0871ba7a715a.tar.gz scala-be3f0e3db699aef764b1f61f95be0871ba7a715a.tar.bz2 scala-be3f0e3db699aef764b1f61f95be0871ba7a715a.zip |
Merge pull request #4969 from lrytz/valPatternOpt
Tests for optimizing val patterns
Diffstat (limited to 'src')
-rw-r--r-- | src/partest-extras/scala/tools/partest/ASMConverters.scala | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/partest-extras/scala/tools/partest/ASMConverters.scala b/src/partest-extras/scala/tools/partest/ASMConverters.scala index d990160ce8..a3d849a9c1 100644 --- a/src/partest-extras/scala/tools/partest/ASMConverters.scala +++ b/src/partest-extras/scala/tools/partest/ASMConverters.scala @@ -43,6 +43,23 @@ object ASMConverters { case i: Invoke => i.name case i => i.opcode } + + def summaryText: String = { + def comment(i: Instruction) = i match { + case j: Jump => s" /*${j.label.offset}*/" + case l: Label => s" /*${l.offset}*/" + case _ => "" + } + dropNonOp.map({ + case i: Invoke => s""""${i.name}"""" + case ins => opcodeToString(ins.opcode, ins.opcode) + comment(ins) + }).mkString("List(", ", ", ")") + } + } + + def opcodeToString(op: Int, default: Any = "?"): String = { + import scala.tools.asm.util.Printer.OPCODES + if (OPCODES.isDefinedAt(op)) OPCODES(op) else default.toString } sealed abstract class Instruction extends Product { @@ -50,12 +67,9 @@ object ASMConverters { // toString such that the first field, "opcode: Int", is printed textually. final override def toString() = { - import scala.tools.asm.util.Printer.OPCODES - def opString(op: Int) = if (OPCODES.isDefinedAt(op)) OPCODES(op) else "?" val printOpcode = opcode != -1 - productPrefix + ( - if (printOpcode) Iterator(opString(opcode)) ++ productIterator.drop(1) + if (printOpcode) Iterator(opcodeToString(opcode)) ++ productIterator.drop(1) else productIterator ).mkString("(", ", ", ")") } |