如果throw
可能是方法中的最后一个操作码,则jmp
也可能符合条件。
另外,如果我们考虑一个退出条件不在最后的递归方法,最后一个操作码可能是call
或tail.call
而不是a ret
。
更新:嗯,不,它不会。正如Marc Gravell在评论中正确指出的那样,tail.call
的文档说:
除了要传输的参数外,堆栈必须为空
以下电话。调用指令后的指令
必须是ret
。
更新2:无条件分支操作码如br
和br.s
也可能是方法的最后一条指令,如果它的出口点更早出现(再次感谢Marc)。