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_596749093 小时前
如何防止SQL拼接漏洞_使用PDO对象实现安全的SQL交互
jvm·数据库·python
2301_795099746 小时前
golang如何在Gin中自定义验证器_golang Gin自定义验证器实现方法
jvm·数据库·python
2301_766283446 小时前
如何在MongoDB GridFS中进行按文件大小(length)范围的查询
jvm·数据库·python
那我掉的头发算什么6 小时前
【面试八股】一篇文章讲清楚JVM面试常考
jvm·面试·职场和发展·java虚拟机
m0_631529827 小时前
CSS如何利用CSS变量进行渐变色管理_提升渐变配置的灵活性
jvm·数据库·python
2301_818008447 小时前
数据库模型设计实战:如何正向工程从模型建表_规范化项目开发流程
jvm·数据库·python
Run_Teenage8 小时前
Linux:线程互斥,线程锁
运维·开发语言·jvm
2401_846339568 小时前
Vue 3 中集成 Three.js 场景的完整实现指南
jvm·数据库·python
Byron__9 小时前
Java JVM核心知识点复习笔记
java·jvm·笔记
2301_775639899 小时前
Golang怎么写TODO待办应用_Golang TODO应用教程【深入】
jvm·数据库·python