[发明专利]使用复常量的方法和系统在审
申请号: | 202010828067.X | 申请日: | 2015-06-08 |
公开(公告)号: | CN111966424A | 公开(公告)日: | 2020-11-20 |
发明(设计)人: | J·R·罗斯;B·戈茨 | 申请(专利权)人: | 甲骨文国际公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F9/455;G06F8/30;G06F8/41 |
代理公司: | 中国贸促会专利商标事务所有限公司 11038 | 代理人: | 张鑫 |
地址: | 美国加*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 使用 常量 方法 系统 | ||
本公开涉及使用复常量的方法和系统。在方法中,虚拟机在一组指令内识别加载常量的指令;基于加载常量的指令识别数据结构中的第一条目,该数据结构识别一个或多个常量类型中的特定常量类型,其中第一条目至少指定常量数据以及用于从常量数据组装值或部分值的第一组指令;执行第一组指令以从常量数据组装值或部分值;将特定值或对特定值的引用存储到被用于在运行环境中执行的指令组之间传递值或引用的运行时数据结构上,其中特定值基于从常量数据组装的值或特定值。
优先权要求
本申请是申请日为2015年6月8日、名称为“使用复常量的方法和系统”、申请号为201580027961.4的发明专利申请的分案申请。
技术领域
实施例一般涉及用于在编程语言内支持和/或利用复常量结构体的技术。
背景技术
常量表(还被称为常量池)是在程序中存储固定值的数据结构。例如,在Java虚拟机(Java Virtual Machine)的背景下,存储在常量池中的值可以表示在执行的过程中不改变的值,诸如文本(诸如字符串、整数(integer)、双精度浮点数(double)、浮点数(float)等)、字段引用、方法引用、接口引用、名称/类型信息以及其他。常量表的一种用途是向执行程序的运行环境提供与程序员对于常量值的意图有关的信息。
然后运行环境可以使用该知识以在静态存储器中创建这些常量值的实例以供程序使用。由于常量值被存储在它们不能被改变的位置中,因此运行环境可以在需要时自由地重复使用这些常量值以避免为了每次使用而重新实例化常量值(或者在一些情况中避免为了垃圾收集而追踪值的需要)。例如,假设程序的源代码定义了两个变量,这两个变量都指代字符串文本“hello world”。在诸如Java虚拟机之类的一些运行环境中,在不使用常量的情况下环境将需要实例化“hello world”两次,并且然后将每个变量赋值到其各自的字符串的存储器位置。然而,如果字符串“hello world”是常量,则操作环境可以自由地作为替代创建“hello world”的一个实例化并且将两个变量都赋值到同一引用。由于“helloworld”字符串在存储器中是不可变的,因此不存在操作可能使用第一变量来修改“helloworld”字符串并且引发对于第二变量的意外的交叉影响的风险。如果指令试图修改第一变量,则表示修改后的字符串的第二实例化被创建,并且由第一变量存储的引用被转移到修改后的字符串的位置。因此,常量值通过节省存储器以及阻止工作不必要地重复而作为优化程序的执行的重要部分。
当前,常量表以及从这些常量表加载常量的过程被定制为适合由运行环境硬编码或本地(native)支持的特定类型的值。这些技术允许运行环境的开发者精调这些常量的处理以及开发特定于特定类型的值的优化。然而,从利用常量值可以获得的运行时效率适用于几乎任何类型的值(诸如复数、元组(tuple)、点(point)、组(group)等)。将常量值的概念扩张到其他类型的一个问题是对于运行环境(诸如执行程序的虚拟机)的设计者来说预见可能对于软件开发者有用的每种类型的常量值几乎是不可能的。因此,在常量表中表示常量值以及使得这些常量值在运行时存储器中可用的灵活方法将会是在有表现力并且高效执行的程序的追求中的重大进步。
发明内容
本公开的一些方面涉及一种方法,包括:在一组程序指令内识别加载常量的指令;基于加载所述常量的所述指令识别第一条目,所述第一条目与识别由程序使用的一个或多个常量的数据结构中的常量相关联,其中所述第一条目至少指定常量数据以及用于从所述常量数据组装值或部分值的第一组指令;执行所述第一组指令以从所述常量数据组装所述值或所述部分值;将特定值或对所述特定值的引用存储到被用于在运行环境中执行的指令组之间传递值或引用的运行时数据结构上,其中所述特定值基于从所述常量数据组装的所述值或所述部分值,其中所述方法由一个或多个计算设备执行。
本公开的其他方面涉及一个或多个计算机可读媒介,所述一个或多个计算机可读媒介存储指令,所述指令在由一个或多个计算设备执行时使得本公开的方法被执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于甲骨文国际公司,未经甲骨文国际公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010828067.X/2.html,转载请声明来源钻瓜专利网。