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

相关推荐
欣栀♡44 分钟前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
czt_java1 小时前
JVM 核心基础|运行时数据区、类加载机制、GC 分代回收
jvm
Web极客码4 小时前
Python Ollama 本地 Agent 入门与订单查询实践
开发语言·jvm·python
y = xⁿ4 小时前
一文掌握JVM
jvm
顺风尿一寸12 小时前
从 FileOutputStream 到 int fd:一次 JNI 字段读写全链路源码剖析
linux·jvm
用户0942485680312 小时前
第36章:JVMTI、Java Agent与运行时扩展点
java·jvm
脚踏实地,坚持不懈!13 小时前
Linux 内存回收机制:水位线、kswapd 与 Direct Reclaim
linux·jvm·算法
wuminyu14 小时前
ZGC染色指针在虚拟线程stackChunkOop上的并发屏障全景分析
java·linux·c语言·jvm·c++
江湖有缘1 天前
Docker实战 | 使用Docker部署rmoments社交平台
jvm·docker·oracle
H.莓飛2 天前
【C++】内存管理
linux·开发语言·jvm·c++·visual studio