堆栈帧如何将值从当前帧传递到较旧的帧(JVM)?

时间:2016-01-08 03:52:53

标签: jvm stack frame operand

场景:     Java使用堆栈来执行带有指令的方法。有一个方法A,它包含一个方法B,当调用方法A时,当前线程的堆栈将为方法A创建一个新的堆栈帧,当遇到方法B时,它仍然对方法B做同样的事情,我了解每个帧包含局部变量表和操作数堆栈,我可以检查methodB使用局部变量表从methodA获取值,但是methodA如何获取methodB的返回值(执行结果)?我没有从Java doc中找到这个。

1 个答案:

答案 0 :(得分:0)

methodB的返回值被推入methodA的操作数堆栈。

Reference(强调我的):

  

在这种情况下,当前帧(第2.6节)用于恢复调用者的状态,包括其局部变量和操作数堆栈,调用者的程序计数器适当增加以跳过方法调用指令。然后执行在调用方法的框架中正常继续,返回值(如果有)被推到该框架的操作数堆栈