论文部分内容阅读
当前,计算机技术发展迅速。随着硬件速度的提高,软件的通用性设计和复杂架构成为提升整体性能的瓶颈,软件自动化的研究成为热点问题,部分求值技术正是这一领域中提高软件效率的方法之一。Java语言作为一种面向对象程序设计语言具有许多良好的特性,但其解释执行的方式产生的程序性能问题随着软件复杂度的提高变得更加明显,因此将部分求值技术应用于Java语言是该领域的研究热点。
在传统的面向对象语言部分求值器中,绑定时间分析的不精确导致程序中大量的可例化点被忽略,从而影响了整个部分求值的效果。为此本文提出了一种扩展绑定时间分析技术,该技术在传统绑定时间分析之中引入了对象分析,将分析的单元从类变为了对象,从方法变为了方法的每次调用,进而提出一种对象类例化模型。在对象类例化模型中,同一个类在不同绑定时间上下文环境下构造的对象可以对应多个类例化模式,同样对一个方法的多次调用也会由于上下文环境不同而对应多个方法例化模式。采用这种方法就可以确定同一个类生成的不同对象在程序运行中各自具有的可例化点,而不必像传统绑定时间分析那样只能识别他们公共的可例化点。生成对象类例化模型后,扩展绑定时间分析会根据该模型生成待例化程序,为其中的类例化模式生成待例化类,为方法例化模式生成待例化方法。在待例化程序的基础上,就可以分别对上述类对象和方法调用进行标注,从而提高绑定时间分析的精确性。
这种方法已经用于实现Java程序的绑定时间分析,有效地分析了大多数单线程的Java程序,为实现高精度的Java程序部分求值提供了必要的手段。