[發明專利]動態型陣列的表達和變換有效
| 申請號: | 201380032776.5 | 申請日: | 2013-03-14 |
| 公開(公告)號: | CN104395881B | 公開(公告)日: | 2017-11-28 |
| 發明(設計)人: | 丹尼爾·肯尼思·克利福德;雅各布·馬丁·魯迪格·庫梅羅;揚·郭 | 申請(專利權)人: | 谷歌公司 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 中原信達知識產權代理有限責任公司11219 | 代理人: | 周亞榮,安翔 |
| 地址: | 美國加*** | 國省代碼: | 暫無信息 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 動態 陣列 表達 變換 | ||
1.一種用于表達運行時的動態型程序代碼中的陣列的機器實現的方法,所述方法包括:
在運行時訪問程序代碼,所述程序代碼對應動態型編程語言;
在所述程序代碼內,檢測用于添加、更新或刪除陣列的一個或多個元素的指令,其中所述陣列與第一類元素相關,所述第一類元素包括第一表達形式和第一打包形式;
基于指令或一個或多個元素中的至少一種確定第二類元素,所述第二類元素包括第二表達形式和第二打包形式中的至少一個;
基于所述第一表達形式和所述第二表達形式或所述第一打包形式和所述第二打包形式之間的不一致性,確定所述第一類元素與所述第二類元素不一致;
變換所述陣列,使得所述第一類元素與所述第二類元素一致;
以及基于所述指令添加、更新或刪除變換的陣列的一個或多個元素,
其中所述第一打包形式和所述第二打包形式中的每一個與指示符值相對應,所述指示符值指示所述陣列是已打包形式還是非打包形式,在所述已打包形式下所述陣列不具有被刪除的或未初始化的元素,在所述非打包形式下所述陣列具有至少一個被刪除的或未初始化的元素,所述第一打包形式與所述第二打包形式不同。
2.根據權利要求1所述的方法,其中所述第一表達形式和所述第二表達形式中的每個是小整型、雙精度值型或標記值型中的一種。
3.根據權利要求2所述的方法,其中所述標記值型對應于對象指針、小整數或堆數。
4.根據權利要求3所述的方法,其中所述指令用于添加或更新所述陣列的一個或多個元素,且其中所述第二表達形式基于所述一個或多個元素的數據類型。
5.根據權利要求4所述的方法,其中所述變換包括變換所述陣列,使得所述第一表達形式從小整型變為雙精度值型,從小整型變為標記值型,或從雙精度值型變為標記值型。
6.根據權利要求1所述的方法,其中所述指令用于刪除所述陣列的一個或多個元素,或用于在所述陣列結尾處之后添加一個或多個元素,且其中所述第二打包形式是非打包形式。
7.根據權利要求6所述的方法,其中所述變換包括將所述第一打包形式從已打包形式變為非打包形式,以標記所述陣列,使得訪問所述陣列的指令預先將被刪除的或未初始化的元素作為可能的元素。
8.根據權利要求1所述的方法,其中所述陣列包括隱藏類數值,所述隱藏類數值表示與所述陣列相關的所述第一類元素。
9.根據權利要求1所述的方法,進一步包括:
確定所述變換與所述程序代碼中的循環相關;以及
提供將所述變換吊出所述循環,使得與所述循環關聯的變換不會重復發生。
10.根據權利要求1所述的方法,進一步包括:
訪問關于與所述陣列相關的元素類別的信息,所述信息對應所述程序代碼之前的運行;以及
減少基于被訪問的信息執行確定或變換中的至少一個的次數。
11.根據權利要求1所述的方法,進一步包括:
對應于所述陣列中的空位在所述陣列中存儲第一位模式的值;以及
在所述陣列中存儲第二位模式的值,所述第二位模式的值是非數字的(NaN),其中所述第一位模式不同于所述第二位模式。
12.根據權利要求1所述的方法,其中所述指令與第三類元素相關,所述第三類元素與第三表達形式相關,所述第三表達形式基于用于添加或更新一個或多個陣列的一個或多個元素的之前的指令,且其中基于所述第三類元素確定所述第二類元素。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于谷歌公司,未經谷歌公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201380032776.5/1.html,轉載請聲明來源鉆瓜專利網。





