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

相关推荐
未若君雅裁34 分钟前
JVM 运行时数据区:程序计数器、堆、虚拟机栈与栈帧
java·jvm
killerbasd2 小时前
总结 6.9
jvm
IT龟苓膏3 小时前
Java 并发基础:进程、线程、线程状态、synchronized、volatile 一篇讲清
java·开发语言·jvm
周末也要写八哥4 小时前
线程的生命周期之线程睡眠
java·开发语言·jvm
瓦特what?5 小时前
位运算核心技巧与应用
java·jvm·算法
程序员二叉6 小时前
【JVM】类加载全过程&双亲委派机制深度解析
java·jvm·面试
cfm_29146 小时前
JVM 深度入门:Class文件结构 + 字节码指令详解
jvm
吴声子夜歌6 小时前
JVM——线程池实现原理
java·jvm·线程池
Full Stack Developme6 小时前
JVM的类加载机制
jvm
fengxin_rou7 小时前
Java垃圾回收机制深度解析:从原理到实战
java·jvm·性能优化·gc·垃圾回收