深入理解hotspot-C1编译器

概述

        Hotspot虚拟机中常见的即时编译器包括客户端编译器和服务端编译器,也被称为C1编译器和C2编译器。C1编译器能够做出一些快速优化,而C2编译器所作的优化会消耗更多的时间,但能够产生更高效的代码。

调用链

JavaThread::thread_main_entry()
-> compiler_thread_entry()
-> CompilerBroker::compiler_thread_loop()
-> CompileBroker::invoke_compiler_on_method() // 使用C1
-> Compiler::compile_method() // 进入C1世界
-> Compilation::Compilation() // 代码编译
-> Compilation::compile_method()
-> Compilation::compile_java_method()

         C1的完整编译周期等价于Compilation对象的构造周期。 Compilation::compile_method包含编译代码和安装编译后代码两个动作。Compilation::compile_java_method表示编译动作。

int Compilation::compile_java_method() {
  assert(!method()->is_native(), "should not reach here");

  if (BailoutOnExceptionHandlers) {
    if (method()->has_exception_handlers()) {
      bailout("linear scan can't handle exception handlers");
    }
  }

  CHECK_BAILOUT_(no_frame_siz
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值