专注虚拟机与编译器研究

2020年8月18日

虚拟机执行模式

摘要: 在HotSpot里面,代码执行有两种模式: 直接解释指令:这使用的是HotSpot的解释引擎,它采用模板解释,将每一条指令直接翻译成本地代码,而后由硬件直接执行; 编译执行:是指,将代码直接翻译成本地代码执行,这就是耳熟能详的JIT编译器,更加准确的说是HotSpot Compiler; HotSp 阅读全文

posted @ 2020-08-18 16:22 鸠摩(马智) 阅读(705) 评论(0) 推荐(0) 编辑

dispatch_next()方法的实现

摘要: 之前的文章介绍到,在generate_normal_entry()函数中会调用generate_fixed_frame()函数为Java方法的执行生成对应的栈帧,接下来还会调用dispatch_next()函数执行Java方法的字节码。generate_normal_entry()函数中调用的dis 阅读全文

posted @ 2020-08-18 10:54 鸠摩(马智) 阅读(628) 评论(0) 推荐(0) 编辑

generate_fixed_frame()方法生成Java方法栈帧

摘要: 在从generate_normal_entry()函数调用generate_fixed_frame()函数时的栈与寄存器的状态如下: 栈的状态如下图所示。 各个寄存器的状态如下所示。 rax: return address // %rax寄存器中存储的是返回地址r rbx: Method* // 要 阅读全文

posted @ 2020-08-18 09:35 鸠摩(马智) 阅读(682) 评论(0) 推荐(0) 编辑

JVM的方法执行引擎-entry point栈帧

摘要: 接着上一篇去讲,回到JavaCalls::call_helper()中: address entry_point = method->from_interpreted_entry(); entry_point是从当前要执行的Java方法中获取的,定义如下: 源代码位置:/openjdk/hotspo 阅读全文

posted @ 2020-08-18 08:24 鸠摩(马智) 阅读(1198) 评论(0) 推荐(0) 编辑

导航