码迷,mamicode.com
首页 > 编程语言 > 详细

早期(编译器)优化--javac编译器

时间:2017-08-03 13:44:55      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:nbsp   成本   stop   break   文件   mpi   process   ati   efi   

java语言的“编译期”其实是一段“不确定”的操作过程,可能是指一个前端编译器把.java变成.class的过程,也可能是指虚拟机的后端运行期编译器(JLT)把字节码转变成机器码的过程,也有可能是使用静态提前编译器(AOT)直接把.java文件直接编译成本地机器代码的过程。现在讨论的是第一种编译器。

Javac编译器

①javac的源码与测试

 

运行com.sun.tools.javac.Main的main()方法来执行编译,与命令行中使用javac的命令没什么区别.

编译过程可以分为3个过程:

1.解析与填充符号表过程

2.插入式注解处理器的注解处理过程

3.分析与字节码生成过程

这三个过程的代码逻辑集中在这个类的complie()和compile2()方法中,整个编译最关键的处理就由下面注释的8个方法完成

  initProcessAnnotations(processors);//准备过程:初始化插入式注解处理器


            delegateCompiler =
                processAnnotations//执行注解处理(
                    enterTrees//输入到符号表(stopIfError(CompileState.PARSE, parseFiles//词法分析、语法分析(sourceFileObjects))),
                    classnames);
            compile2()//分析及字节码生成 {
                case BY_TODO:
                while (!todo.isEmpty())
                    generate//生成字节码(desugar//解语法糖(flow//数据流分析(attribute//标注(todo.remove()))));
                break;

}

 

②解析与填充符号表

解析步骤由parseFiles完成。解析步骤包括词法解析与语法解析两个过程

 1.词法、语法解析:

 

早期(编译器)优化--javac编译器

标签:nbsp   成本   stop   break   文件   mpi   process   ati   efi   

原文地址:http://www.cnblogs.com/wxw7blog/p/7279095.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!