If throw
may be the last opcode in a method, most likely jmp
.
In addition, if we consider a recursive method whose exit condition is not at the end, the last operation code may be call
or tail.call
instead of ret
.
Update: Well, no, it won’t. As Mark Gravell rightly points out in his comment, the documentation for tail.call
says:
The stack must be empty, with the exception of the arguments passed to the next call. The statement following the call statement must be ret
.
Update 2: Unconditional branch codes such as br
and br.s
may also be the last instructions of a method if its exit point occurs earlier (thanks again Marc).
source share