当前位置: 首页 > 专利查询>谷歌公司专利>正文

用于虚拟和接口方法调用的装置和方法制造方法及图纸

技术编号:16112575 阅读:22 留言:0更新日期:2017-08-30 05:55
本发明专利技术公开了用于调用软件方法的装置和方法。计算设备可以接收调用类实例的软件方法的请求,所述类实例包括接口方法表和虚拟方法表(vtable)。所述接口方法表可以包括接口方法表条目,所述接口方法表条目可以包括针对与所述类实例相关联的软件接口的特定接口方法的特定接口方法表条目。所述特定接口方法表条目可以参考所述特定接口方法。所述vtable可以包括vtable条目,所述vtable条目可以包括针对与所述类实例相关联的特定虚拟方法的特定vtable条目。所述特定vtable条目可以参考所述特定虚拟方法。所述计算设备可以基于接口方法表和/或所述vtable来确定所述调用的软件方法的入口点。所述计算设备可以通过在所述入口点处执行指令来调用所述调用的软件方法。

【技术实现步骤摘要】
【国外来华专利技术】用于虚拟和接口方法调用的装置和方法相关申请的交叉引用本申请要求2015年1月5日提交的标题为“ApparatusandMethodsforVirtualandInterfaceMethodCalls”的美国专利申请第14/589,898号的优先权,该申请的全部内容通过引用合并于此。
技术介绍
除非本文另有指出,否则在本部分中描述的材料不是本申请中的权利要求的现有技术,并且不因为被包括在本部分中就被承认为是现有技术。现代软件往往是使用面向对象原则来构建的,其中,利用对象的集合来执行软件的任务并且存储与软件相关的数据。许多对象包括对数据进行操作的方法(method)或者软件功能(function),所述数据包括但不限于作为对象的一部分存储的数据。在软件中,可以将对象定义为类,其包括用于该对象的方法列表和数据。类可以充当更专门的类的集合的原型。例如,在面向对象的图形软件中,可以将多边形的类用作三角形、方形、六角形等的类的原型。原型类可以称为基础类,并且更专门的类可以称为基础类的子类。
技术实现思路
在一个方面中,提供了一种方法。计算设备接收调用类实例的软件方法的请求。该类实例包括接口方法表和虚拟方法表。该接口方法表包括一个或者多个接口方法表条目。该一个或者多个接口方法表条目包括针对与类实例相关联的软件接口的特定接口方法的特定接口方法表条目。该特定接口方法表条目包括与特定接口方法有关的引用。虚拟方法表包括一个或者多个虚拟表条目。该一个或者多个虚拟表条目包括针对与类实例相关联的特定虚拟方法的特定虚拟表条目。该特定虚拟表条目包括与特定虚拟方法有关的引用。计算设备基于接口方法表和虚拟方法表中的至少一个来确定调用的软件方法的入口点。计算设备可以通过在入口点处执行指令来调用所调用的软件方法。在另一方面中,提供了一种计算设备。该计算设备包括一个或者多个处理器和数据存储。该数据存储上存储有指令,该指令在由该一个或者多个处理器执行时使该一个或者多个处理器执行功能。所述功能包括:接收调用类实例的软件方法的请求,其中,该类实例包括接口方法表和虚拟方法表,其中,接口方法表包括一个或者多个接口方法表条目并且虚拟方法表包括一个或者多个虚拟表条目,其中,该一个或者多个接口方法表条目包括针对与类实例相关联的软件接口的特定接口方法的特定接口方法表条目,该特定接口方法表条目包括与特定接口方法有关的引用,其中,该一个或者多个虚拟表条目包括针对与类实例相关联的特定虚拟方法的特定虚拟表条目,该特定虚拟表条目包括与特定虚拟方法有关的引用;基于接口方法表和虚拟方法表中的至少一个来确定调用的软件方法的入口点;以及通过在入口点处执行指令来调用所调用的软件方法。在又一方面中,提供了一种制品。该制品包括数据存储,该数据存储上存储有指令,该指令在由该一个或者多个处理器执行时使该一个或者多个处理器执行功能。所述功能包括:接收调用类实例的软件方法的请求,其中,该类实例包括接口方法表和虚拟方法表,其中,接口方法表包括一个或者多个接口方法表条目并且虚拟方法表包括一个或者多个虚拟表条目,其中,该一个或者多个接口方法表条目包括针对与类实例相关联的软件接口的特定接口方法的特定接口方法表条目,该特定接口方法表条目包括与特定接口方法有关的引用,其中,该一个或者多个虚拟表条目包括针对与类实例相关联的特定虚拟方法的特定虚拟表条目,该特定虚拟表条目包括与特定虚拟方法有关的引用;基于接口方法表和虚拟方法表中的至少一个来确定调用的软件方法的入口点;以及通过在入口点处执行指令来调用所调用的软件方法。在还一方面中,提供了一种设备。该设备包括:用于接收调用类实例的软件方法的请求的装置,其中,该类实例包括接口方法表和虚拟方法表,其中,接口方法表包括一个或者多个接口方法表条目并且虚拟方法表包括一个或者多个虚拟表条目,其中,该一个或者多个接口方法表条目包括针对与类实例相关联的软件接口的特定接口方法的特定接口方法表条目,该特定接口方法表条目包括与特定接口方法有关的引用,其中,该一个或者多个虚拟表条目包括针对与类实例相关联的特定虚拟方法的特定虚拟表条目,该特定虚拟表条目包括与特定虚拟方法有关的引用;用于基于接口方法表和虚拟方法表中的至少一个来确定调用的软件方法的入口点的装置;以及用于通过在入口点处执行指令来调用所调用的软件方法的装置。附图说明在图中:图1示出根据示例实施例的运行时间环境的示意图。图2是根据示例实施例的示例方法的流程图。图3示出根据示例实施例的具有源代码以及与图1的运行时间环境有关的对应运行时间环境的计算设备。图4示出根据示例实施例的运行时间环境的示意图。图5是根据示例实施例的另一示例方法的流程图。图6示出根据示例实施例的具有源代码以及与图4的运行时间环境有关的对应运行时间环境的计算设备。图7示出根据示例实施例的运行时间环境的示意图。图8是根据示例实施例的图示了另一方法的流程图。图9示出根据示例实施例的具有源代码以及与图7的运行时间环境有关的对应运行时间环境的计算设备。图10描绘了根据示例实施例的分布式计算架构。图11A是根据示例实施例的计算设备的框图。图11B描绘了根据示例实施例的基于云的服务器系统。图12是根据示例实施例的图示了另一方法的流程图。具体实施方式现代计算设备可以包括操作系统,操作系统是管理计算设备的硬件资源并且为计算机程序(诸如,在计算设备上执行的应用程序)提供公共服务的软件。应用程序,或者简称应用,可以使用操作系统提供的服务来进行一个或者多个任务。操作系统提供的一些服务可以涉及运行时间服务、或者支持计算机程序(包括应用)的执行的服务。例如,操作系统可以具有提供和/或支持运行时间系统(诸如,用于执行Java程序的Java运行时间系统)的运行时间服务。对于采用面向对象的语言(诸如,Java)编写的应用,对象可以具有虚拟和/或接口方法。虚拟方法是被(或者可以被)继承了类的属性的子类中具有相同名称的方法覆盖或者替代的类的方法。接口方法是实现指定接口的部分或者所有的方法。常见的是,应用的一些方法调用是虚拟方法和/或接口方法调用,以便利用命名和与面向对象编程相关联的其它益处。因此,执行虚拟和接口方法调用对于运行时间系统的总体性能可以是至关重要的。为了实现方法调用,运行时间系统首先可以分派(dispatch)或者选择要执行的方法,然后调用或者执行所分派的方法。虚拟/接口方法调用的说明可以涉及复杂的方法解析规则的使用,这些复杂的方法解析规则往往涉及通过方法列表进行迭代以及遍历对应的类层次。为了加速方法分派,以逐个类为基础,运行时间系统可以针对虚拟方法使用“vtable”并且针对接口方法使用接口方法表,其中,术语“vtable”是虚拟方法表的简称。Vtable是表条目的可变长度表(或者,相似的数据结构),其中,每个条目包括虚拟方法的标识符和对应虚拟方法的引用。相似地,接口方法表中的每个条目包括接口方法的标识符和对应接口方法的引用。通过支付布局这些表的一次性成本,通常是在类链接时间期间支付,在每次调用时不再需要其它的方法解析。在运行时间中,虚拟/接口方法分派犹如使用所调用的方法的索引来查找vtable/接口方法表一样简单。然而,在所管理的运行时间系统的对象布局中,可以使用多个间接(依赖性载本文档来自技高网...
用于虚拟和接口方法调用的装置和方法

【技术保护点】
一种方法,其包括:在计算设备处接收调用类实例的软件方法的请求,其中,所述类实例包括接口方法表和虚拟方法表,其中,所述接口方法表包括一个或者多个接口方法表条目并且所述虚拟方法表包括一个或者多个虚拟表条目,其中,所述一个或者多个接口方法表条目包括针对与所述类实例相关联的软件接口的特定接口方法的特定接口方法表条目,所述特定接口方法表条目包括与所述特定接口方法有关的引用,其中,所述一个或者多个虚拟表条目包括针对与所述类实例相关联的特定虚拟方法的特定虚拟表条目,所述特定虚拟表条目包括与所述特定虚拟方法有关的引用;使用所述计算设备,基于所述接口方法表和所述虚拟方法表中的至少一个来确定调用的软件方法的入口点;以及使用所述计算设备,通过在所述入口点处执行指令来调用所述调用的软件方法。

【技术特征摘要】
【国外来华专利技术】2015.01.05 US 14/589,8981.一种方法,其包括:在计算设备处接收调用类实例的软件方法的请求,其中,所述类实例包括接口方法表和虚拟方法表,其中,所述接口方法表包括一个或者多个接口方法表条目并且所述虚拟方法表包括一个或者多个虚拟表条目,其中,所述一个或者多个接口方法表条目包括针对与所述类实例相关联的软件接口的特定接口方法的特定接口方法表条目,所述特定接口方法表条目包括与所述特定接口方法有关的引用,其中,所述一个或者多个虚拟表条目包括针对与所述类实例相关联的特定虚拟方法的特定虚拟表条目,所述特定虚拟表条目包括与所述特定虚拟方法有关的引用;使用所述计算设备,基于所述接口方法表和所述虚拟方法表中的至少一个来确定调用的软件方法的入口点;以及使用所述计算设备,通过在所述入口点处执行指令来调用所述调用的软件方法。2.根据权利要求1所述的方法,其中,基于所述接口方法表和所述虚拟方法表中的至少一个来确定所述调用的软件方法的所述入口点包括:在确定所述调用的软件方法是所述软件接口的接口方法时,所述计算设备:确定与所述调用的软件方法相关联的所述接口方法表的调用的接口方法表条目;以及基于所述调用的接口方法表条目来确定所述入口点。3.根据权利要求2所述的方法,其中,所述调用的接口方法表条目包括运行时间方法引用,以及其中,基于所述调用的接口方法表条目来确定所述入口点包括基于所述运行时间方法引用来确定所述入口点。4.根据权利要求3所述的方法,其中,所述调用的软件方法与特定运行时间方法相关联,其中,所述运行时间方法引用包括所述特定运行时间方法的起始地址,以及其中,所述入口点基于存储在所述特定运行时间方法的所述起始地址中的值。5.根据权利要求2所述的方法,其中,所述调用的接口方法表条目包括入口点值,以及其中,基于所述调用的接口方法表条目来确定所述入口点包括基于所述入口点值来确定所述入口点。6.根据权利要求5所述的方法,其中,所述调用的软件方法与特定运行时间方法相关联,以及其中,所述入口点值包括所述特定运行时间方法的入口点。7.根据权利要求1所述的方法,其中,基于所述接口方法表和所述虚拟方法表中的至少一个来确定所述调用的软件方法的所述入口点包括:在确定所述调用的软件方法是与所述类实例相关联的虚拟方法时,所述计算设备:确定与所述调用的软件方法相关联的所述虚拟方法表的调用的虚拟方法表条目;以及基于所述调用的虚拟方法表条目来确定所述入口点。8.根据权利要求7所述的方法,其中,所述调用的虚拟方法表条目包括运行时间方法引用,以及其中,基于所述调用的虚拟方法表条目来确定所述入口点包括基于所述运行时间方法引用来确定所述入口点。9.根据权利要求8所述的方法,其中,所述调用的软件方法与特定运行时间方法相关联,其中,所述运行时间方法引用包括所述特定运行时间方法的起始地址,以及其中,所述入口点基于存储在所述特定运行时间方法的所述起始地址中的值。10.根据权利要求7所述的方法,其中,所述调用的虚拟方法表条目包括入口点值,以及其中,基于所述调用的虚拟方法表条目来确定所述入口点包括基于所述入口点值来确定所述入口点。11.根据权利要求10所述的方法,其中,所述调用的软件方法与特定运行时间方法相关联,以及其中,所述入口点值包括所述特定运行时间方法的入口点。12.根据权利要求1所述的方法,其进一步包括:从基址开始将所述类实例存储在所述计算设备的存储器中,其中,所述接口方法表具有预定大小并且被配置为从离所述基址第一预定偏移地址处开始存储,其中,所述虚拟地址表被配置为从离所述基址第二预定偏移...

【专利技术属性】
技术研发人员:杨明耀伊恩·安德鲁·罗杰斯
申请(专利权)人:谷歌公司
类型:发明
国别省市:美国,US

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

1