JP5536593B2 - 最適化装置、最適化方法およびコンパイラ・プログラム - Google Patents
最適化装置、最適化方法およびコンパイラ・プログラム Download PDFInfo
- Publication number
- JP5536593B2 JP5536593B2 JP2010195944A JP2010195944A JP5536593B2 JP 5536593 B2 JP5536593 B2 JP 5536593B2 JP 2010195944 A JP2010195944 A JP 2010195944A JP 2010195944 A JP2010195944 A JP 2010195944A JP 5536593 B2 JP5536593 B2 JP 5536593B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- symbol
- access
- address
- generated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
(1)実行時にコードを書き換え、例外発生が必要かどうかを確認する頻度を減少させる。
(2)実行時のメモリ・アクセスを契機として、例外発生のための処理を行う。
(3)例外発生の確認のため、実行コストが低い命令を利用する。
(4)特別な値を読み込んだ際、例外発生のための処理を行う。
Claims (22)
- 動的言語により記述されたプログラムを最適化するための最適化装置であって、
前記プログラムを解釈し、前記プログラムの中の同一変数(シンボル)をアクセスする命令群が含まれる範囲を、シンボルのアクセスを共通化できる範囲として特定する範囲特定部と、
シンボルを識別するためのキーとシンボルに格納される値オブジェクトのアドレスとを対応付けて格納するシンボル・テーブルに、特定された前記範囲に含まれる前記命令群がアクセスするシンボルを識別するためのキーを使用してアクセスし、前記キーに基づき対応するシンボルに格納される値オブジェクトのアドレスを保持するシンボルエントリのアドレスを取得してアドレス格納部に格納する命令を含む、前記特定された範囲に含まれる複数の命令に基づき最適化された複数の命令を生成する命令生成部と、
前記特定された範囲から命令を1つずつ取り出す命令抽出部と、
取り出した前記命令が前記シンボルへアクセスする命令に該当するか否かを判定する命令判定部とを含み、
前記命令生成部は、前記命令判定部が前記シンボルへアクセスする命令に該当すると判定した場合、前記命令に基づき、最適化された命令として、前記アドレス格納部に格納された前記シンボルエントリのアドレスを使用して該シンボルへアクセスする命令を生成する際、前記シンボルが存在するとき、前記シンボルが存在するか否かを確認することなく即座に該シンボルへのアクセスを可能にする命令を生成する、最適化装置。 - 前記プログラムを最適化する処理を、コンパイル時に行われるコード生成時、生成されたコードの実行時にシンボルが生成されたとき、前記実行時のシンボルが削除されたとき、前記実行時のシンボルに格納される値オブジェクトを読み出すとき、前記実行時のシンボルへ値オブジェクトを書き込むときの5つの操作が行われるときに実施する、請求項1に記載の最適化装置。
- 前記シンボルへアクセスする命令は、前記シンボルに格納される値オブジェクトを読み出す命令、もしくは前記シンボルへ値オブジェクトを書き込む命令、または前記シンボルを削除する命令のいずれかである、請求項1に記載の最適化装置。
- 前記シンボルが存在するか否かを判定するシンボル判定部をさらに含み、前記シンボル判定部が、前記シンボルが存在しないと判定した場合に、前記命令生成部が、前記シンボルが存在するか否かを確認する命令と、存在しない場合に例外を発生させる命令とを生成する、請求項1に記載の最適化装置。
- 前記命令生成部は、前記命令判定部が前記シンボルへアクセスする命令に該当する場合であって、前記命令が前記シンボルを削除する命令である場合、前記アドレス格納部に格納された前記シンボルエントリ内の値オブジェクトのアドレスを不正なアドレスに書き換える命令を生成する、請求項1に記載の最適化装置。
- 前記命令生成部は、前記命令判定部が前記シンボルへアクセスする命令に該当する場合であって、前記命令が前記シンボルの値オブジェクトを読み出す命令または書き込む命令である場合、前記アドレス格納部に格納された前記シンボルエントリのアドレスを使用して該シンボルへアクセスする命令を生成する際、アクセスして取得したシンボルに格納される値オブジェクトのアドレスを0と比較する命令も生成し、前記シンボルを削除する命令である場合、前記値オブジェクトのアドレスとして0を代入する命令を生成する、請求項1に記載の最適化装置。
- 前記命令生成部は、前記命令判定部が前記シンボルへアクセスする命令に該当する場合であって、前記命令が前記シンボルを削除する命令である場合、読み出されたときに例外を発生させるハンドラを実行する値を前記値オブジェクトのアドレスの値として代入する命令を生成する、請求項1に記載の最適化装置。
- 動的言語により記述されたプログラムを最適化するための最適化装置において行われる最適化方法であって、
前記プログラムを解釈し、前記プログラムの中の同一変数(シンボル)をアクセスする命令群が含まれる範囲を、シンボルのアクセスを共通化できる範囲として特定するステップと、
シンボルを識別するためのキーとシンボルに格納される値オブジェクトのアドレスとを対応付けて格納するシンボル・テーブルに、特定された前記範囲に含まれる前記命令群がアクセスするシンボルを識別するためのキーを使用してアクセスし、前記キーに基づき対応するシンボルに格納される値オブジェクトのアドレスを保持するシンボルエントリのアドレスを取得してアドレス格納部に格納する命令を生成するステップと、
前記特定された範囲から命令を1つずつ取り出すステップと、
取り出した前記命令が前記シンボルへアクセスする命令に該当するか否かを判定するステップと、
前記シンボルへアクセスする命令に該当すると判定された場合、前記命令に基づき、最適化された命令として、前記アドレス格納部に格納された前記シンボルエントリのアドレスを使用して該シンボルへアクセスする命令を生成する際、前記シンボルが存在するとき、前記シンボルが存在するか否かを確認することなく即座に該シンボルへのアクセスを可能にする命令を生成するステップとを含む、最適化方法。 - 前記最適化方法を、コンパイル時に行われるコード生成時、生成されたコードの実行時にシンボルが生成されたとき、前記実行時のシンボルが削除されたとき、前記実行時のシンボルに格納される値オブジェクトを読み出すとき、前記実行時のシンボルへ値オブジェクトを書き込むときの5つの操作が行われるときに実施する、請求項8に記載の最適化方法。
- 前記シンボルへアクセスする命令は、前記シンボルに格納される値オブジェクトを読み出す命令、もしくは前記シンボルへ値オブジェクトを書き込む命令、または前記シンボルを削除する命令のいずれかである、請求項8に記載の最適化方法。
- 前記シンボルが存在するか否かを判定するステップをさらに含み、前記シンボルへアクセスする命令に該当するか否かを判定するステップで、前記シンボルが存在しないと判定された場合に、前記アクセスを可能にする命令を生成するステップにおいて、前記シンボルが存在するか否かを確認する命令と、存在しない場合に例外を発生させる命令とを生成する、請求項8に記載の最適化方法。
- 前記シンボルへアクセスする命令に該当するか否かを判定するステップで、前記シンボルへアクセスする命令に該当する場合であって、前記命令が前記シンボルを削除する命令である場合、前記アクセスを可能にする命令を生成するステップにおいて、前記アドレス格納部に格納された前記シンボルエントリ内の値オブジェクトのアドレスを不正なアドレスに書き換える命令を生成する、請求項8に記載の最適化方法。
- 前記シンボルへアクセスする命令に該当するか否かを判定するステップで、前記シンボルへアクセスする命令に該当する場合であって、前記命令が前記シンボルの値オブジェクトを読み出す命令または書き込む命令である場合、前記アクセスを可能にする命令を生成するステップにおいて、前記アドレス格納部に格納された前記シンボルエントリのアドレスを使用して該シンボルへアクセスする命令を生成する際、アクセスして取得したシンボルに格納される値オブジェクトのアドレスを0と比較する命令も生成し、前記シンボルを削除する命令である場合、前記値オブジェクトのアドレスとして0を代入する命令を生成する、請求項8に記載の最適化方法。
- 前記シンボルへアクセスする命令に該当するか否かを判定するステップで、前記シンボルへアクセスする命令に該当する場合であって、前記命令が前記シンボルを削除する命令である場合、前記アクセスを可能にする命令を生成するステップにおいて、読み出されたときに例外を発生させるハンドラを実行する値を前記値オブジェクトのアドレスの値として代入する命令を生成する、請求項8に記載の最適化方法。
- 動的言語により記述されたプログラムを最適化する最適化方法を実行するためのコンピュータ可読なコンパイラ・プログラムであって、前記コンパイラ・プログラムは、コンピュータに、
前記プログラムを解釈し、前記プログラムの中の同一変数(シンボル)をアクセスする命令群が含まれる範囲を、シンボルのアクセスを共通化できる範囲として特定するステップと、
シンボルを識別するためのキーとシンボルに格納される値オブジェクトのアドレスとを対応付けて格納するシンボル・テーブルに、特定された前記範囲に含まれる前記命令群がアクセスするシンボルを識別するためのキーを使用してアクセスし、前記キーに基づき対応するシンボルに格納される値オブジェクトのアドレスを保持するシンボルエントリのアドレスを取得してアドレス格納部に格納する命令を生成するステップと、
前記特定された範囲から命令を1つずつ取り出すステップと、
取り出した前記命令が前記シンボルへアクセスする命令に該当するか否かを判定するステップと、
前記シンボルへアクセスする命令に該当すると判定された場合、前記命令に基づき、最適化された命令として、前記アドレス格納部に格納された前記シンボルエントリのアドレスを使用して該シンボルへアクセスする命令を生成する際、前記シンボルが存在するとき、前記シンボルが存在するか否かを確認することなく即座に該シンボルへのアクセスを可能にする命令を生成するステップとを実行させる、コンパイラ・プログラム。 - 前記最適化方法を、コンパイル時に行われるコード生成時、生成されたコードの実行時にシンボルが生成されたとき、前記実行時のシンボルが削除されたとき、前記実行時のシンボルに格納される値オブジェクトを読み出すとき、前記実行時のシンボルへ値オブジェクトを書き込むときの5つの操作が行われるときに実施させる、請求項15に記載のコンパイラ・プログラム。
- 前記シンボルへアクセスする命令は、前記シンボルに格納される値オブジェクトを読み出す命令、もしくは前記シンボルへ値オブジェクトを書き込む命令、または前記シンボルを削除する命令のいずれかである、請求項15に記載のコンパイラ・プログラム。
- 前記シンボルが存在するか否かを判定するステップをさらに実行させ、前記シンボルへアクセスする命令に該当するか否かを判定するステップで、前記シンボルが存在しないと判定された場合に、前記アクセスを可能にする命令を生成するステップにおいて、前記シンボルが存在するか否かを確認する命令と、存在しない場合に例外を発生させる命令とを生成する、請求項15に記載のコンパイラ・プログラム。
- 前記シンボルへアクセスする命令に該当するか否かを判定するステップで、前記シンボルへアクセスする命令に該当する場合であって、前記命令が前記シンボルを削除する命令である場合、前記アクセスを可能にする命令を生成するステップにおいて、前記アドレス格納部に格納された前記シンボルエントリ内の値オブジェクトのアドレスを不正なアドレスに書き換える命令を生成する、請求項15に記載のコンパイラ・プログラム。
- 前記シンボルへアクセスする命令に該当するか否かを判定するステップで、前記シンボルへアクセスする命令に該当する場合であって、前記命令が前記シンボルの値オブジェクトを読み出す命令または書き込む命令である場合、前記アクセスを可能にする命令を生成するステップにおいて、前記アドレス格納部に格納された前記シンボルエントリのアドレスを使用して該シンボルへアクセスする命令を生成する際、アクセスして取得したシンボルに格納される値オブジェクトのアドレスを0と比較する命令も生成し、前記シンボルを削除する命令である場合、前記値オブジェクトのアドレスとして0を代入する命令を生成する、請求項15に記載のコンパイラ・プログラム。
- 前記シンボルへアクセスする命令に該当するか否かを判定するステップで、前記シンボルへアクセスする命令に該当する場合であって、前記命令が前記シンボルを削除する命令である場合、前記アクセスを可能にする命令を生成するステップにおいて、読み出されたときに例外を発生させるハンドラを実行する値を前記値オブジェクトのアドレスの値として代入する命令を生成する、請求項15に記載のコンパイラ・プログラム。
- 請求項15〜請求項21のいずれか1項に記載のコンパイラ・プログラムが記録された記録媒体。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010195944A JP5536593B2 (ja) | 2010-09-01 | 2010-09-01 | 最適化装置、最適化方法およびコンパイラ・プログラム |
| US13/221,984 US8589899B2 (en) | 2010-09-01 | 2011-08-31 | Optimization system, optimization method, and compiler program |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010195944A JP5536593B2 (ja) | 2010-09-01 | 2010-09-01 | 最適化装置、最適化方法およびコンパイラ・プログラム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2012053679A JP2012053679A (ja) | 2012-03-15 |
| JP5536593B2 true JP5536593B2 (ja) | 2014-07-02 |
Family
ID=45698698
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2010195944A Active JP5536593B2 (ja) | 2010-09-01 | 2010-09-01 | 最適化装置、最適化方法およびコンパイラ・プログラム |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US8589899B2 (ja) |
| JP (1) | JP5536593B2 (ja) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP5404944B1 (ja) * | 2013-01-31 | 2014-02-05 | 株式会社 ディー・エヌ・エー | 情報処理装置およびコンパイラプログラム |
| US10025690B2 (en) * | 2016-02-23 | 2018-07-17 | International Business Machines Corporation | Method of reordering condition checks |
| WO2018182746A1 (en) * | 2017-04-01 | 2018-10-04 | Intel Corporation | Hotpluggable runtime |
| CN108829465B (zh) * | 2018-06-27 | 2021-01-08 | 北京计算机技术及应用研究所 | 一种基于直接读写flash的本地动态加载系统及方法 |
| CN112199217B (zh) * | 2020-10-23 | 2022-07-12 | 无锡江南计算技术研究所 | 一种软硬协同的线程私有数据访问优化方法 |
| US20250004732A1 (en) * | 2023-06-30 | 2025-01-02 | Bmc Software, Inc. | Optimization of attribute access in programming functions |
Family Cites Families (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5367685A (en) * | 1992-12-22 | 1994-11-22 | Firstperson, Inc. | Method and apparatus for resolving data references in generated code |
| US6289506B1 (en) * | 1998-06-30 | 2001-09-11 | Intel Corporation | Method for optimizing Java performance using precompiled code |
| US6973646B1 (en) * | 2000-07-21 | 2005-12-06 | International Business Machines Corporation | Method for compiling program components in a mixed static and dynamic environment |
| JP2002132521A (ja) | 2000-10-26 | 2002-05-10 | Matsushita Electric Ind Co Ltd | プログラムローディング装置及びプログラムローディング方法 |
| JP3900485B2 (ja) | 2002-07-29 | 2007-04-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 最適化装置、コンパイラプログラム、最適化方法、及び記録媒体 |
| US20050028132A1 (en) * | 2003-07-31 | 2005-02-03 | Srinivasamurthy Venugopal K. | Application specific optimization of interpreters for embedded systems |
| CA2453776A1 (en) * | 2003-12-19 | 2005-06-19 | Ibm Canada Limited-Ibm Canada Limitee | Compiler optimization |
| US20060123397A1 (en) * | 2004-12-08 | 2006-06-08 | Mcguire James B | Apparatus and method for optimization of virtual machine operation |
| US20090024986A1 (en) * | 2007-07-19 | 2009-01-22 | Microsoft Corporation | Runtime code modification |
| US8108848B2 (en) * | 2007-08-15 | 2012-01-31 | Microsoft Corporation | Automatic and transparent memoization |
| US7493610B1 (en) * | 2008-03-27 | 2009-02-17 | International Business Machines Corporation | Versioning optimization for dynamically-typed languages |
| US8612950B2 (en) * | 2008-06-19 | 2013-12-17 | Intel Corporation | Dynamic optimization for removal of strong atomicity barriers |
| US10210018B2 (en) * | 2008-12-24 | 2019-02-19 | Intel Corporation | Optimizing quiescence in a software transactional memory (STM) system |
| US8245210B2 (en) * | 2009-05-22 | 2012-08-14 | Microsoft Corporation | Compile-time context for dynamically bound operations |
-
2010
- 2010-09-01 JP JP2010195944A patent/JP5536593B2/ja active Active
-
2011
- 2011-08-31 US US13/221,984 patent/US8589899B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| US20120054470A1 (en) | 2012-03-01 |
| JP2012053679A (ja) | 2012-03-15 |
| US8589899B2 (en) | 2013-11-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5681473B2 (ja) | プログラムの最適化装置、最適化方法および最適化プログラム | |
| US8627281B2 (en) | Method, computer program and computer system for converting source code written in dynamically typed language into target code written in statically typed language and executing target code | |
| KR102446063B1 (ko) | 자격 메타데이터에 대해 연산을 행하는 장치 및 방법 | |
| JP5602597B2 (ja) | 外来情報を区分けすることにより仮想マシン・コードをメモリ最適化する方法、コンピュータ・プログラム、およびシステム | |
| US6993754B2 (en) | Annotations to executable images for improved dynamic optimization functions | |
| US20250199785A1 (en) | Compilation methods, compilers, and wasm virtual machines | |
| JP5536593B2 (ja) | 最適化装置、最適化方法およびコンパイラ・プログラム | |
| US20200249925A1 (en) | On-demand loading of dynamic scripting language code for reduced memory usage | |
| US20240231864A9 (en) | Hybrid just in time load module compiler with performance optimizations | |
| US8332833B2 (en) | Procedure control descriptor-based code specialization for context sensitive memory disambiguation | |
| US11029924B2 (en) | Program optimization by converting code portions to directly reference internal data representations | |
| TWI743698B (zh) | 解譯執行位元組碼指令流的方法及裝置 | |
| US8959502B2 (en) | Processing table of content access overflow in an application | |
| CN101847096B (zh) | 包含栈变量函数的优化方法 | |
| CN114138281A (zh) | 软件工程的编译方法、装置、设备及介质 | |
| CN107077365B (zh) | 有选择地加载预编译的头部和/或其部分 | |
| CN101782860B (zh) | 一种程序链接方法及装置 | |
| JP4093484B2 (ja) | コンパイラ、コンパイル方法、コンパイルプログラム、及び記録媒体 | |
| CN113010207A (zh) | 资源配置方法、装置、电子设备及存储介质 | |
| CN111796832A (zh) | 热补丁文件生成方法、装置、设备及存储介质 | |
| CN117056300A (zh) | 对日志数据进行存储和解析的方法和装置 | |
| US11720468B1 (en) | Unwinding program call stacks for performance profiling | |
| WO2025227887A1 (zh) | 程序代码的编译方法、编译装置以及运行方法和运行装置 | |
| WO2024036517A1 (zh) | 一种交叉链接方法、装置,电子设备及存储介质 | |
| JP2024030940A (ja) | ソースコード変換プログラムおよびソースコード変換方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130501 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140318 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140408 |
|
| RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20140408 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140424 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5536593 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |