[發明專利]編譯方法和編譯裝置有效
| 申請號: | 201710197392.9 | 申請日: | 2017-03-29 |
| 公開(公告)號: | CN108920149B | 公開(公告)日: | 2020-12-08 |
| 發明(設計)人: | 張輝;周志德;陳永健 | 申請(專利權)人: | 華為技術有限公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41 |
| 代理公司: | 北京龍雙利達知識產權代理有限公司 11329 | 代理人: | 蘭春娥;毛威 |
| 地址: | 518129 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 編譯 方法 裝置 | ||
本申請實施例提供了一種編譯方法和編譯裝置,該方法包括:獲取待編譯的第一動態語言程序;利用靜態單一賦值轉換處理,對所述第一動態語言程序中的至少一個變量進行類型推導,確定所述至少一個變量中每個變量的類型推導結果;根據所述每個變量的類型推導結果,對所述至少一個變量中能夠推導出靜態類型的變量進行靜態化處理。本申請實施例的編譯方法和編譯裝置,能夠在編譯階段對動態語言程序中變量的類型進行推導,從而有利于提高動態語言程序的運行效率。
技術領域
本申請實施例涉及計算機領域,并且更具體地,涉及計算機領域中的編譯方法和編譯裝置。
背景技術
動態語言程序對變量的類型要求并不十分嚴格,代碼簡潔自由,相對于靜態語言程序,動態語言程序在快速開發部署方面有明顯優勢,因此,開發者們開始在更多領域使用動態語言程序。
動態語言程序在給程序開發者帶來便利的同時,也給程序運行的效率帶來了負面影響。由于動態語言程序中的變量的類型不確定,在程序運行時需要對動態語言程序的變量的類型進行判斷,這樣會增大運行程序的開銷。例如,計算a+b,對于靜態語言程序而言,只需要一條加法add或者字符串的鏈接操作就可以了,但是,對于動態語言程序來說,需要在程序運行的時候首先去分別判斷a和b的類型,然后再根據a和b的類型進行計算,這無疑會使程序的運行效率大大降低。隨著動態語言的廣泛應用,提高動態語言程序的運行效率已經成為一項亟待解決的問題。
發明內容
本申請實施例提供一種編譯方法和編譯裝置,能夠在編譯階段對動態語言程序中變量的類型進行推導,從而有利于提高動態語言程序的運行效率。
第一方面,提供了一種編譯方法,包括:獲取待編譯的第一動態語言程序;利用靜態單一賦值轉換處理,對所述第一動態語言程序中的至少一個變量進行類型推導,確定所述至少一個變量中每個變量的類型推導結果;根據所述每個變量的類型推導結果,對所述至少一個變量中能夠推導出靜態類型的變量進行靜態化處理。
本申請實施例的編譯方法可以由任何合適的裝置執行,本文稱為編譯裝置,本申請實施例對此不作限定。在一種具體的實現中,上述編譯方法可以由編譯器執行。
應理解,上述類型推導結果分為可推導和不可推導兩種情況,其中,可推導是指變量的類型推導結果為確定的靜態類型,例如整型integer、浮點型float或字符型char等等,不可推導是指變量的類型推導結果無法推導,即該類變量的類型在編譯階段無法確定。在本申請實施例中,編譯裝置僅需要根據每個變量的類型推導結果,將類型推導結果為可推導的變量進行靜態化處理。
還應理解,編譯裝置可以在獲取了該至少一個變量中的所有變量的類型推導結果之后,再對所有類型推導結果為可推導的變量進行靜態化處理,也可以在獲取了一個類型推導結果為可推導的變量之后,就對該變量進行靜態化處理,同時去進行其他變量的推導,本申請實施例對此不作限定。
本申請實施例的編譯方法,能夠在編譯階段直接利用SSA技術,對動態語言程序中變量的類型進行推導,確定出該動態語言程序中變量的類型推導結果,將類型推導結果為可推導的變量進行靜態化處理,無需在運行階段對這部分變量進行類型推導,有利于減少運行時的類型推導的開銷,從而有利于提高動態語言程序的運行效率。
在第一方面的第一種可能的實現方式中,所述利用靜態單一賦值轉換處理,對所述第一動態語言程序中的至少一個變量進行類型推導,確定所述至少一個變量中每個變量的類型推導結果,包括:利用所述靜態單一賦值轉換處理,確定可推導變量集合和/或不可推導變量集合,所述可推導變量集合包括所述至少一個變量中的一個或多個變量,所述可推導變量集合中的變量的類型推導結果為確定的靜態類型,所述不可推導變量集合包括所述至少一個變量中的一個或多個變量,所述不可推導變量集合中的變量的類型推導結果為無法推導;根據所述可推導變量集合中的變量的類型推導結果和/或所述不可推導變量集合,確定所述至少一個變量中第一變量的類型推導結果,其中,所述第一變量既不屬于所述可推導變量集合也不屬于所述不可推導變量集合。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為技術有限公司,未經華為技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710197392.9/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:用戶界面的動態調整方法、可讀存儲介質及設備
- 下一篇:一種事件管理方法及裝置





