将InsnList拆分为基本块

时间:2016-05-28 18:48:53

标签: java java-bytecode-asm bytecode-manipulation jvm-bytecode

在ASM Tree API中,我有一个InsnList,其中包含方法中的指令列表。

我想将其拆分为基本块:一系列指令,使得除最后一个指令之外的每个指令都只有一个后继,并且除了第一个指令之外没有指令可以成为跳转的目标。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:2)

在Java 7+堆栈帧中将包含在方法操作码中。迭代一个方法的InsnList,并按每个FrameInsn分割块。

示例:

let questionsArray: [AnyObject] = Array(zip(iN, nS).map {xx, yy in ["x": xx, "y": yy]}.shuffle().prefix(10))