原文:[Inside HotSpot] Java的方法调用

. 方法调用模块入口 Java所有的方法调用都会经过JavaCalls模块。该模块又细分为call virtual调用虚函数,call static调用静态函数等。虚函数调用会根据对象类型进行方法决议,所以需要获取对象引用再查找实际要调用的方法 而静态方法调用直接查找要调用的方法即可。不管怎样,这些方法都是先找到要调用的方法methodHandle,然后传给JavaCalls::call hel ...

2019-04-17 15:05 0 627 推荐指数:

查看详情

[Inside HotSpot] hotspot的启动流程与main方法调用

hotspot的启动流程与main方法调用 虚拟机的使命就是执行public static void main(String[])方法,从虚拟机创建到main方法执行会经过一系列流程。这篇文章详细讨论了执行命令行java.exe HelloWorld调用main函数输出经历了什么。源码使用 ...

Sat Apr 13 19:03:00 CST 2019 7 645
[Inside HotSpot] 模板解释器

0. 简介 众所周知,hotspot默认使用解释+编译混合(-Xmixed)的方式执行代码。它首先使用模板解释器对字节码进行解释,当发现一段代码是热点的时候,就使用C1/C2 JIT进行优化编译再执行,这也它的名字"热点"(hotspot)的由来。 解释器的代码位于hotspot/share ...

Mon Apr 15 06:20:00 CST 2019 0 484
[Inside HotSpot] C1编译器中间表示

1. C1编译器线程 C1编译器(aka Client Compiler)的代码位于hotspot\share\c1。C1编译线程(C1 CompilerThread)会阻塞在任务队列,当发现队列有编译任务即可CompileTask的时候,线程唤醒然后调用CompilerBroker ...

Sat Apr 20 19:56:00 CST 2019 0 505
[Inside HotSpot] Xcode编译调试OpenJDK12

编译 下载brew然后安装hg,freetype,ccache 一切完成后openjdk12/build/macos-x86_64-server-fastdebug就是编译产出。 xcode ...

Tue Jun 04 21:28:00 CST 2019 1 663
[Inside HotSpot] C1编译器优化:全局值编号(GVN)

1. 值编号 我们知道C1内部使用的是一种图结构的HIR,它由基本块构成一个图,然后每个基本块里面是SSA形式的指令,关于这点如可以参考[Inside HotSpot] C1编译器工作流程及中间表示。值编号(Value numbering)是指为每个计算得到的值分配一个独一无二的编号,然后遍历 ...

Thu Apr 25 02:49:00 CST 2019 0 525
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM