正文
看图:
做的事情如下:
1:弹出当前的方法栈帧
2:获取上一个方法
3:从当前方法的操作数栈中获取执行结果,并推送到上一个方法的操作数栈中
对应的伪代码:
@Override
public void execute(Frame frame) {
Thread thread = frame.thread();
Frame currentFrame = thread.popFrame();
Frame invokerFrame = thread.topFrame();
long val = currentFrame.operandStack().popLong();
invokerFrame.operandStack().pushLong(val);
}
这样执行之后,上一个方法就可以通过store指令,将方法执行的结果存储到自己的局部变量表对应的slot中。就比如下边的例子 :