blob: 3f520eb1068588d956400f1ee6c3916afcbb67c6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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")
// Foo_1 is full of unreachable code which if not elimintated
// will result in NOPs as can be confirmed by adding -Ydisable-unreachable-prevention
// to Foo_1.flags
for (methodNode <- classNode.methods.asScala) {
val got = count(methodNode.instructions, asm.Opcodes.NOP)
if (got != 0) println(s"Found $got NOP(s) in ${methodNode.name}")
}
}
def count(insnList: InsnList, opcode: Int): Int = {
def isNop(node: asm.tree.AbstractInsnNode): Boolean =
(node.getOpcode == opcode)
insnList.iterator.asScala.count(isNop)
}
}
|