jvm方法返回相关指令ireturn,areturn,return等分析

正文

看图:

做的事情如下:

复制代码
1:弹出当前的方法栈帧
2:获取上一个方法
3:从当前方法的操作数栈中获取执行结果,并推送到上一个方法的操作数栈中

对应的伪代码:

java 复制代码
@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中。就比如下边的例子

相关推荐
2301_8092445312 小时前
C#怎么使用协变和逆变 C#泛型中的in和out关键字协变逆变是什么意思怎么用【语法】
jvm·数据库·python
BING_Algorithm13 小时前
深入理解JVM垃圾回收
jvm·后端·面试
笨蛋不要掉眼泪13 小时前
Java并发编程:线程的创建和运行
java·开发语言·jvm
qxwlcsdn14 小时前
mysql在事务中执行DDL的后果_MySQL 8.0之前的限制
jvm·数据库·python
2401_8844541514 小时前
如何防止SQL触发器导致性能下降_通过精简触发器逻辑
jvm·数据库·python
m0_5967490915 小时前
Golang如何做Clean Architecture_Golang整洁架构教程【详解】
jvm·数据库·python
czt_java15 小时前
线程安全问题
java·开发语言·jvm
2401_8676239815 小时前
如何管理应用锁_DBMS_LOCK申请自定义锁控制并发逻辑
jvm·数据库·python
woxihuan12345615 小时前
SQL数据分析如何剔除极端异常值_配合窗口函数检测偏离度
jvm·数据库·python
2303_8212873815 小时前
Go 中通过指针实现变量名的“间接引用”与原地修改
jvm·数据库·python