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中。就比如下边的例子

相关推荐
m0_674294641 天前
如何编写SQL存储过程性能对比_记录执行时间评估优化效果
jvm·数据库·python
运气好好的1 天前
怎样开启phpMyAdmin的操作审计日志_记录每条执行的SQL
jvm·数据库·python
2401_871492851 天前
Layui如何修改Layui默认的UI主题颜色(换肤功能实现)
jvm·数据库·python
步辞1 天前
Redis如何利用LFU算法优化缓存命中率
jvm·数据库·python
forEverPlume1 天前
golang如何实现日志按级别过滤_golang日志按级别过滤实现教程
jvm·数据库·python
m0_624578591 天前
MySQL主从复制支持跨版本吗_不同版本间同步的注意事项
jvm·数据库·python
2401_871492851 天前
如何在 React Router v6 中正确配置多路由组件显示
jvm·数据库·python
zhangchaoxies1 天前
MySQL触发器能否监控特定用户操作_结合审计功能实现分析
jvm·数据库·python
qq_413502021 天前
如何解决ORA-12518监听程序无法分配进程_内存耗尽与PGA溢出
jvm·数据库·python
djjdjdjdjjdj1 天前
如何用参数解构在函数入口处直接提取对象属性
jvm·数据库·python