动态型阵列的表达和变换制造技术

技术编号:11116967 阅读:120 留言:0更新日期:2015-03-06 14:15
本发明专利技术提供了一种运行时的动态型程序代码中阵列的表达。程序代码在运行时被访问。用于添加、更新或删除阵列的一个或多个元素的指令在代码中被检测。阵列与包括第一表示和打包形式的第一类元素相关。基于指令或一个或多个元素中的至少一种来确定第二类元素,第二类元素包括第二表达或打包形式中的至少一种。基于第一表达形式或打包形式与第二表达形式或打包形式之间的不一致性做出第一类元素和第二类元素之间不一致的确定。变换阵列,使得第一类元素和第二类元素一致。基于指令,添加、更新或删除一个或多个阵列元素。

【技术实现步骤摘要】
【国外来华专利技术】动态型阵列的表达和变换
本主题技术总体涉及动态型输入程序代码,并具体涉及表达运行时的动态型程序 代码的阵列。
技术介绍
许多静态型语言,如C语言和C++语言在存储器中以打包和有效的原始形式存 储双精度浮点值(或双精度值),例如使用每个占据64位存储器的双精度值(例如,使 用IEEE 754 64位形式)。因为当程序在这些语言中被编译时,值的类型和因此它们的表达 是已知的,编译器可生成在存储器中载入、存储并操作双精度值的有效的代码。在动态型语 言中(例如JavaScript),值的类型通常直到运行时才知道。这导致对于语言实现,难以为 双精度值使用简单且有效的原始存储形式。
技术实现思路
本公开主题涉及表达运行时的动态类型程序代码中的阵列的机器实现方法。该方 法包括在运行时访问程序代码,该程序代码对应于动态型程序语言,并在程序代码内检测 用于添加、更新或删除阵列的一个或多个元素的指令。该阵列与第一类元素相关,该第一类 元素包括第一表达形式和第一打包形式。该方法进一步包括基于指令或一个或多个元素中 的至少一种确定第二类元素,该第二类元素包括第二表达形式或第二打包形式中的至少一 种,并且基于第一和第二表达形式或第一和第二打包形式之间的不一致性,确定第一类元 素与第二类元素不一致。另外,该方法包括变换阵列,使得第一类元素与第二类元素一致, 并且根据指令,添加、更新或删除变换的阵列的一个或多个元素。 所述公开主题进一步涉及用于表达运行时的动态型程序代码中阵列的系统。该系 统包括一个或多个处理器和机器可读介质,其包含存储于其中的指令,该指令在由处理器 执行时促使处理器执行操作,操作包括在运行时访问程序代码,该程序代码对应动态型程 序语言,并在程序代码内检测用于增加或更新阵列的一个或多个元素的指令。阵列与第一 类元素相关,该第一类元素包括第一表达形式。操作进一步包括基于指令或一个或多个元 素中的至少一种来确定第二类元素,第二类元素包括第二表达形式,其基于一个或多个元 素的数据类型,并且基于第一和第二表达形式之间的不一致性,确定第一类元素与第二类 元素不一致。另外,操作包括变换阵列,使得第一类元素与第二类元素一致,并且基于指令 添加或更新变换的阵列的一个或多个元素。 公开的主题还涉及机器可读介质,其包括储存在其中的指令,该指令在由系统执 行时促使系统执行操作,该操作包括在运行时访问程序代码,该程序代码对应动态型编程 语言,并在程序代码内检测用于删除阵列的一个或多个元素,或在阵列结尾之后处添加一 个或多个元素的指令。该阵列与第一类元素相关,该第一类元素包括第一打包形式。操作还 包括基于指令或一个或多个元素中的至少一种确定第二类元素,该第二类元素包括第二打 包形式,以及基于第一和第二打包形式的不一致性确定第一类元素与第二类元素不一致。 另外,操作包括变换阵列,使得第一类元素与第二类元素一致。操作还包括删除变换阵列的 一个或多个元素,或基于指令,添加一个或多个元素到变换阵列的结尾之后。 应当理解,从下述具体描述中,本主题技术的其他配置对本领域技术人员应是显 而易见的,其中通过说明性的方式示出并描述了主题技术的多种配置。应当意识到,本主题 技术可具有其他不同配置,且在完全没有偏离本主题技术范围的情况下,可对各种细节在 各种其他方面进行修改。相应地,附图及详细描述应被看作是说明性的而非限制性的。 【附图说明】 主题技术的特定技术特征在随附的权利要求中加以阐述。但出于解释的目的,本 主题技术的一些实施例在下列附图中进行阐述。 图1示出了用于处理程序代码的分布式网络环境的实例。 图2是示出了在阵列更新时影响元素类型转变的框图。 图3是示出了在动态程序代码运行时表达阵列的流程图。 图4概念性地示出了电子系统,使用该电子系统实现一些主题技术的实现。 【具体实施方式】 下面阐述的具体描述旨在作为本主题技术不同配置的描述,且并不旨在代表可实 践本主题技术的唯一形式。附图在此引入并构成具体描述的一部分。具体表述包括用于提 供本主体技术充分理解的具体细节。但本领域技术人员应该清楚,所述主题技术并不限定 于本文中阐述的具体细节,且可以在没有这些具体细节的情况下被实践。一些实例中,已知 的结构和元件以框图的形式示出以避免与本主题技术混淆。 许多静态型语言,如C和C++,在存储器中以打包并有效的原始形式存储双精度 值(例如,每个双精度数值占据64位存储器)。因为当程序以这些语言编译时,值的类型和 因此他们的表达是已知的。在动态型语言中,值的类型经常直到运行时才可知。这使得对 语言实现来讲很难对双精度值使用简单并有效的原始存储形式。动态型语言包括但不 限于 APL、Erlang、Groovy、JavaScript、Lisp、Lua、MATLAB、GNU Octave、Perl (对用户定义 类型,但并不是内嵌类型)、PHP、Pick BASIC、Prolog、Python、Ruby、Smalltalk 和 Tel。 本主题公开用于追踪阵列的表达形式(例如,小整形、双精度型或标签),且不论 阵列是否打包。标记值类型可对应对象指针、小整型或堆数。如在本文中使用的,已打包 阵列是指不含被删除元素的阵列,而非打包阵列指具有被删除或否则是空元素的阵列。 用于追踪阵列类型的附加信息被存储为阵列内部类型的一部分,例如,作为阵列的隐藏 类值。 更具体地,本主题被公开以用于表达运行时的动态程序的阵列。在运行时访问程 序代码,该程序代码对应动态型编程语言。用于添加、更新或删除阵列的一个或多个元素的 指令在程序代码中被检测,其中阵列与第一类元素相关,该第一类元素包括第一表达形式 和第一打包形式。基于指令或一个或多个元素中的至少一种确定第二类元素,该第二类元 素包括第二表达形式或第二打包形式中的至少一种。基于第一与第二表达形式或第一和第 二打包形式之间的不一致性确定第一类元素与第二类元素不一致。变换阵列使得第一类元 素与第二类元素一致。基于指令,添加、更新或删除变换阵列的一个或多个元素。 图1示出了示例分布式网络环境,其可用于处理程序代码。网络环境100包括若 干电子设备102-106,其通过网络108与服务器110可通信地连接。服务器110包括处理设 备112和数据存储装置114。例如,处理设备112执行存储在数据存储装置114中的计算机 指令以作为应用(例如网站)的主机。用户可使用电子设备102-106中的任一设备通过网 络108与应用互动。 在实例方面,可在运行时访问程序代码,其中程序代码对应动态编程语言。例如, 程序代码可被任一电子设备102-106访问。用于添加、更新或删除阵列的一个或多个元素 的指令在程序代码中(例如,在电子设备中)被检测,其中阵列与第一类元素相关,第一类 元素包括第一表达形式和第一打包形式。基于指令或一个或多个元素中的至少一种确定第 二类元素,第二类元素包括第二表达形式或第二打包形式中的至少一个。基于第一与第二 表达形式或第一和第二打包形式之间的不一致性确定第一类元素与第二类元素不一致。变 换阵列使得第一类元素与第二类元素一致(例如,在本文档来自技高网...
动态型阵列的表达和变换

【技术保护点】
一种用于表达运行时的动态型程序代码中的阵列的机器实现的方法,所述方法包括:在运行时访问程序代码,所述程序代码对应动态型编程语言;在所述程序代码内,检测用于添加、更新或删除阵列的一个或多个元素的指令,其中所述阵列与第一类元素相关,所述第一类元素包括第一表达形式和第一打包形式;基于指令或一个或多个元素中的至少一种确定第二类型元素,所述第二类元素型包括第二表达形式或第二打包形式中的至少一个;基于所述第一表达形式和所述第二表达形式或所述第一打包形式和所述第二打包形式之间的不一致性,确定所述第一类元素与所述第二类元素不一致;变换所述阵列,使得所述第一类元素与所述第二类元素一致;以及基于所述指令添加、更新或删除变换的阵列的一个或多个元素。

【技术特征摘要】
【国外来华专利技术】2012.06.01 US 13/487,0901. 一种用于表达运行时的动态型程序代码中的阵列的机器实现的方法,所述方法包 括: 在运行时访问程序代码,所述程序代码对应动态型编程语言; 在所述程序代码内,检测用于添加、更新或删除阵列的一个或多个元素的指令,其中所 述阵列与第一类元素相关,所述第一类元素包括第一表达形式和第一打包形式; 基于指令或一个或多个元素中的至少一种确定第二类型元素,所述第二类元素型包括 第二表达形式或第二打包形式中的至少一个; 基于所述第一表达形式和所述第二表达形式或所述第一打包形式和所述第二打包形 式之间的不一致性,确定所述第一类元素与所述第二类元素不一致; 变换所述阵列,使得所述第一类元素与所述第二类元素一致;以及 基于所述指令添加、更新或删除变换的阵列的一个或多个元素。2. 根据权利要求1所述的方法,其中所述第一表达形式和所述第二表达形式中的每个 是小整型、双精度值型或标记值型中的一种。3. 根据权利要求2所述的方法,其中所述标记值型对应于对象指针、小整数或堆数。4. 根据权利要求3所述的方法,其中所述指令用于添加或更新所述阵列的一个或多个 元素,且其中所述第二表达形式基于所述一个或多个元素的数据类型。5. 根据权利要求4所述的方法,其中所述变换包括变换所述阵列,使得所述第一表达 形式从小整型变为双精度值型,从小整型变为标记值型,或从双精度值型变为标记值型。6. 根据权利要求1所述的方法,其中所述第一和第二打包形式中的每个对应于不具 有空位的阵列的已打包形式,或对应于可能具有至少一个空位的阵列的非打包形式中的一 种。7. 根据权利要求6所述的方法,其中所述指令用于删除所述阵列的一个或多个元素, 或用于在所述阵列结尾处之后添加一个或多个元素,且其中所述第二打包形式是非打包形 式。8. 根据权利要求7所述的方法,其中所述变换包括将所述第一打包形式从已打包形式 变为非打包形式,以标记所述阵列,使得访问所述阵列的指令预先将空位作为可能的元素。9. 根据权利要求1所述的方法,其中所述阵列包括隐藏类数值,所述隐藏类数值表示 与所述阵列相关的所述第一类元素。10. 根据权利要求1所述的方法,进一步包括: 确定所述变换与所述程序代码中的循环相关;以及 提供将所述变换吊出所述循环,使得与所述循环关联的变换不会重复发生。11. 根据权利要求1所述的方法,进一步包括: 访问关于与所述阵列相关的元素类别的信息,所述信息对应所述程序代码之前的运 行; 减少基于被访问的信息执行确定或变换中的至少一个的次数。12. 根据权利要求1所述的方法,进一步包括: 对应于所述阵列中的空位在所述阵列中存储第一位模式的值;以及 在所述阵列中存储第二位模式的值,所述第二位模式的值是非数字的(NaN), 其中所述第一位模式不同于所述第二位模式。13. 根据权利要求1所述的方法,其中所述指令与第三类元素相关,所述第三类元素与 第三表达形式相关,所述第三表达形式基于用于添加或更新一个或多个阵列的一个或多...

【专利技术属性】
技术研发人员:丹尼尔·肯尼思·克利福德雅各布·马丁·鲁迪格·库梅罗扬·郭
申请(专利权)人:谷歌有限公司
类型:发明
国别省市:美国;US

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

1