程序变换方法技术

技术编号:2853073 阅读:184 留言:0更新日期:2012-04-11 18:40
本发明专利技术的程序变换方法,着眼于有时能够确定成员函数的this指针的类型的事实,能够提高执行性能,减小代码长度,将虚函数调用变换为函数的直接调用,它变换用面向对象语言描述的程序,包含:方法分析步骤,在上述程序中,分析调用方法的实例的类型;虚方法调用提取步骤,在上述方法的定义中,提取上述实例的虚方法的调用;以及虚方法调用变换步骤,根据上述方法分析步骤的分析结果,将上述虚方法调用提取步骤提取出的虚方法调用变换为直接方法调用。

【技术实现步骤摘要】

本专利技术涉及变换用面向对象语言描述的程序的,特别涉及将虚函数调用变换为直接函数调用的。
技术介绍
近年来,随着程序的大规模化,为了提高程序的开发效率、实现再利用,或者为了提高程序的可维护性,频繁用C++或Java(注册商标)等面向对象语言进行程序开发。作为面向对象语言的特征之一,有多态性。所谓“多态性”,表示其动作按照执行程序时的对象实例的类型来动态地变化的性质。为了实现该多态性,例如在C++语言中具有称作虚函数的功能。用图1~图4来说明该虚函数。图1是用面向对象语言C++描述的程序。类A的成员函数f、g及h的声明中指定的关键词“virtual”指定了成员函数f、g及h是虚函数。所谓“虚函数”,是指在执行程序时按照指针指向的对象的类型来动态决定要执行的函数的函数,在派生类中重定义了基类的虚函数的情况下,在指针指向派生类的对象的情况下,执行派生类的虚函数。类B继承了类A,类B的成员函数g覆盖了基类A的虚函数g,执行类B特有的动作。此时,在函数t2内指针变量p调用成员函数g后,成为虚函数调用。此时,如果指针变量p指向的对象是类A的对象,则执行类A的函数g;如果是类B的对象,则执行类本文档来自技高网...

【技术保护点】
一种程序变换方法,变换用面向对象语言描述的程序,其特征在于,包含:方法分析步骤,在上述程序中,分析调用方法的实例的类型;虚方法调用提取步骤,在上述方法的定义中,提取上述实例的虚方法调用;以及虚方法调用变换步骤,根据上 述方法分析步骤的分析结果,将由上述虚方法调用提取步骤提取出的虚方法调用变换为直接方法调用。

【技术特征摘要】
JP 2004-11-19 336539/20041.一种程序变换方法,变换用面向对象语言描述的程序,其特征在于,包含方法分析步骤,在上述程序中,分析调用方法的实例的类型;虚方法调用提取步骤,在上述方法的定义中,提取上述实例的虚方法调用;以及虚方法调用变换步骤,根据上述方法分析步骤的分析结果,将由上述虚方法调用提取步骤提取出的虚方法调用变换为直接方法调用。2.如权利要求1所述的程序变换方法,其特征在于,上述方法分析步骤包含类继承关系分析步骤,在上述程序中,分析类的继承关系;虚方法重定义分析步骤,分析上述类中的上述虚方法的重定义状况;虚方法直接调用分析步骤,在上述程序中,分析上述虚方法的直接调用;以及实例确定步骤,根据上述类继承关系分析步骤、上述虚方法重定义分析步骤及上述虚方法直接调用分析步骤的分析结果,来确定调用上述方法的上述实例的类型;在上述方法分析步骤能够确定上述实例的类型的情况下,上述虚方法调用变换步骤将由上述虚方法调用提取步骤提取出的虚方法调用变换为直接方法调用。3.如权利要求2所述的程序变换方法,其特征在于,上述实例确定步骤包含下述步骤判定上述方法所属的类是否具有派生类;在上述类具有派生类的情况下,判定是否在直接继承上述类的所有类中重定义了上述方法;以及判定上述类的所有派生类的实例是否直接调用了上述方法。4.如权利要求2所述的程序变换方法,其特征在于,上述实例确定步骤包含下述步骤判定上述方法所属的类是否具有派生类;在上述类具有派生类的情况下,判定是否在对由上述虚方法调用提取步骤提取出的上述虚方法进行重定义的第二类中重定义了上述方法;以及判定上述第二类及上述第二类的所有派生类的实例是否直接调用了上述方法。5.如权利要求1所述的程序变换方法,其特征在于,在上述方法是实例生成方法时,上述方法分析步骤确定调用上述方法的上述实例的类型。6.如权利要求1所述的程序变换方法,其特征在于,在上述方法是实例删除方法时,上述方法分析步骤确定调用上述方法的上述实例的类型。7.一种程序变换方法,变换用面向对象语言描述的程序,其特征在于,包含方法分析步骤,在上述程序中,分析调用方法的实例的类型;虚方法调用提取步骤,在上述方法的定义中,提取上述实例的虚方法调用;虚方法复制步骤,根据上述方法分析步骤的结果,复制上述虚方法;以及虚方法调用变换步骤,根据上述方法分析步骤的分析结果,将由上述虚方法调用提取步骤提取出的虚方法调用变换为直接方法调用。8.如权利要求7所述的程序变换方法,其特征在于,上述方法分析步骤包含类继承关系分析步骤,在上述程序中,分析类的继承关系;虚方法重定义分析步骤,分析上述类中的上述虚方法的重定义状况;虚方法直接调用分析步骤,在上述程序中,分析上述虚方法的直接调用;以及实例确定步骤,根据上述类继承关系分析步...

【专利技术属性】
技术研发人员:田中裕久
申请(专利权)人:松下电器产业株式会社
类型:发明
国别省市:JP[日本]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1