解释器生成
解释器的机器代码片段都是在
TemplateInterpreterGenerator::generate_all()中生成的,下面将分小节详细展示该函数的具体细节,以及解释器某个组件的机器代码生成过程与逻辑。与第4章不同的是,本节中的各部分出现的顺序与它们在代码中的顺序不一致。
在研究解释器前了解调试手段是有必要的。由于运行时生成的机器代码是人类不可读的二进制形式,要想阅读它们,可以下载hsdis-amd64插件,并将该插件放到编译后的JDK中的/lib/server目录下面,然后开启虚拟机参数-XX:+PrintAssembly和-XX:+PrintInterpreter,然后便可输出解释器各个例程的机器代码的汇编表示形式了。也可以开启-XX:+TraceBytecodes跟踪解释器正在执行的字节码和对应方法。