论文部分内容阅读
Java语言在工业级应用开发中被广泛使用,使用该语言编写的程序主要通过Java虚拟机执行。虚拟机在运行时动态生成二进制代码,因而能够更好地发掘代码的动态信息,有效地在运行性能和功能特性上对Java语言提供支持。这使得虚拟机相关技术成为系统软件领域的研究热点之一。 支持工业级Java程序的运行,对自主UniCore-2处理器的应用具有重要意义。OpenJDK是J2SE(Java Platform2,Standard Edition)的开源实现。本文对OpenJDK进行分析,并面向UniCore-2处理器开展其代码动态生成引擎的实现与优化。 本文首先分析了OpenJDK中HotSpot虚拟机的实现原理,进而,提出了面向UniCore-2处理器的HotSpot虚拟机代码动态生成引擎的实现策略并予以实现。在实现过程中,首先在HotSpot虚拟机代码存储管理机制的基础上,实现了基于UniCore-2处理器的动态二进制代码生成接口;之后基于动态二进制代码生成接口实现了对运行时环境内部的本地静态代码调用机制;最后在此基础上,实现了HotSpot虚拟机的基本功能。 本文还结合解释器,分析和研究了HotSpot虚拟机的测试和调试方法。HotSpot虚拟机能够通过JCK兼容性测试和Jtreg正确性测试。实验结果表明,HotSpot虚拟机解释执行SPECjvm2008评测程序的性能与Zero虚拟机解释执行的性能相比,可平均提升43.4%。 本文针对UniCore-2处理器体系结构的特点,在代码动态生成引擎的本地代码调用机制实现方面进行了分析和优化。在本地代码调用的实现方案中需对Java线程信息进行多次访问,本文在寄存器分配时,保留一个寄存器专门用于保存Java线程信息基址,通过减少访存次数改进虚拟机性能。实验结果表明,该优化策略可提升约3%的SPECjvm2008评测程序运行性能。