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

相关推荐
wangchunting1 小时前
Jvm-垃圾收集器
java·开发语言·jvm
鹤旗3 小时前
While语句,do-while语句,for语句
java·jvm·算法
wuqingshun3141593 小时前
谈谈你对springAop动态代理的理解?
java·jvm
gelald4 小时前
JVM - 运行时内存模型
java·jvm·后端
2501_924952695 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
专注_每天进步一点点9 小时前
方法 A 用线程池 1,方法 A 内部的方法 B 也用同一个线程池 1提交任务。导致的线程死锁
jvm
小王不爱笑1329 小时前
深度剖析:synchronized 底层实现原理(JVM 视角)
jvm
庞轩px9 小时前
线程池核心参数与拒绝策略深度解析
java·jvm·数据库
干啥啥不行,秃头第一名9 小时前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python