JP5460430B2 - 動的コンパイラプログラム、動的コンパイル方法及び動的コンパイル装置 - Google Patents
動的コンパイラプログラム、動的コンパイル方法及び動的コンパイル装置 Download PDFInfo
- Publication number
- JP5460430B2 JP5460430B2 JP2010087038A JP2010087038A JP5460430B2 JP 5460430 B2 JP5460430 B2 JP 5460430B2 JP 2010087038 A JP2010087038 A JP 2010087038A JP 2010087038 A JP2010087038 A JP 2010087038A JP 5460430 B2 JP5460430 B2 JP 5460430B2
- Authority
- JP
- Japan
- Prior art keywords
- execution
- state information
- instruction sequence
- program
- list
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 66
- 238000005457 optimization Methods 0.000 claims description 148
- 230000000694 effects Effects 0.000 claims description 48
- 230000006870 function Effects 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 30
- 230000003044 adaptive effect Effects 0.000 description 17
- 238000012545 processing Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
Description
得られることを示すか否かを判定する(ステップ620)。最適化による効果が得られると判断された場合(ステップ620:YES)、動的コンパイラは、該最適化の適用の検討に関して参照した実行状態情報の一覧と、最適化による効果を得るために各実行状態情報が満たすべき条件のリストとを、条件付実行命令列130に渡すために一旦保存する(ステップ625)。
Claims (14)
- プログラムの実行中に、プログラムに含まれる複数の部分プログラムのうち実行すべき部分プログラムを順次コンピュータにコンパイルさせる動的コンパイラプログラムであって、
前記コンピュータは、該コンピュータが実行するプログラムの1以上の部分プログラムの各々について、該部分プログラムをコンパイルして生成された実行命令列を、前記部分プログラムに適用された1以上の最適化の各々に関して参照された実行環境の状態情報である実行状態情報のリストと、該リスト内の各実行状態情報の値が対応する最適化の効果を得るために満たすべきとされた条件のリストとに関係付けて保存する共有プールを有し、
前記動的コンパイラプログラムは前記コンピュータを、
現在の1以上の実行状態情報の各値を取得する実行状態取得部と、
前記共有プールから、コンパイル対象の部分プログラムと同じ部分プログラムをコンパイルして生成された実行命令列に関係付けられた前記条件のリストを読み出し、各条件を対応する現在の実行状態情報の値が満たすか否かを判定する判定部と、
前記判定部による判定結果が否定的である場合に、前記コンパイル対象の部分プログラムをコンパイルして実行命令列を生成する動的コンパイル部として機能させ、
前記コンパイラプログラムは、前記コンピュータに、前記判定部による判定が肯定的である場合は、前記条件のリストに関連付けられて前記共有プールに保存される前記実行命令列を再利用させる、動的コンパイラプログラム。 - 前記動的コンパイル部は、前記コンパイル対象の部分プログラムに適用可能な1以上の最適化のうち、前記現在の1以上の実行状態情報の各値を参照してその効果が得られると判断した最適化を適用して前記コンパイル対象の部分プログラムをコンパイルして実行命令列を生成し、前記動的コンパイラプログラムは、前記コンピュータを、前記部分プログラムに適用された1以上の最適化の各々に関して参照された実行状態情報のリストと、該リスト内の各実行状態情報に関して対応する最適化による効果が得られると判断するために利用された、前記各実行状態情報が満たすべき条件のリストとに関連付けて、前記動的コンパイル部により生成された実行命令列を前記共有プールに記録する条件付実行命令列記録部として更に機能させる、請求項1に記載の動的コンパイラプログラム。
- 前記共有プールは、前記コンピュータのメモリの一部であり、前記条件付実行命令列記録部は、前記部分プログラムに適用された前記1以上の最適化のすべてが、前記共有プールにアクセス可能な他のコンパイル装置における値との差が少ない実行状態情報のみを参照する最適化である場合にのみ、各最適化に関して参照された実行状態情報のリストと、該リスト内の各実行状態情報に関して対応する最適化による効果が得られると判断するために利用された、前記各実行状態情報が満たすべき条件のリストとに関連付けて、前記動的コンパイル部により生成された実行命令列を前記共有プールに記録する、請求項2に記載の動的コンパイラプログラム。
- 前記動的コンパイラプログラムは、前記コンピュータを、前記判定部による判定結果が肯定的である場合は、前記コンピュータのメモリ上に前記プログラムの作業領域として割り当てられた記憶領域に、前記共有プールから前記条件のリストに関連付けられた前記実行命令列を読み出して記録し、前記判定部による判定結果が否定的である場合は、前記記憶領域に、前記動的コンパイル部により生成された前記実行命令列を記録する実行命令列記録部として更に機能させる、請求項2に記載の動的コンパイラプログラム。
- 前記判定部は、前記コンパイル対象の部分プログラムに対応する実行命令列であって、かつ前記現在の1以上の実行状態情報の各値が満し得る前記条件のリストに関連付けられた前記実行命令列が、前記共有プール内に複数存在する場合、前記条件のリスト内の条件の数の合計が最大である前記実行命令列を再利用すべき前記実行命令列として決定する、請求項2に記載の動的コンパイラプログラム。
- 前記条件の数の合計は、最適化の種類ごとに予め設定された重み付けの値を用いて計算される、請求項5に記載の動的コンパイラプログラム。
- 前記判定部は、前記コンパイル対象の部分プログラムに対応する実行命令列であって、かつ前記現在の1以上の実行状態情報の各値が満し得る前記条件のリストに関連付けられた前記実行命令列が、前記共有プール内に複数存在する場合、前記実行命令列に適用された最適化の数の合計が最大である前記実行命令列を再利用すべき前記実行命令列として決定する、請求項2に記載の動的コンパイラプログラム。
- 前記最適化の数の合計は、最適化の種類ごとに予め設定された重み付けの値を用いて計算される、請求項7に記載の動的コンパイラプログラム。
- 前記条件付実行命令列記録部は、前記動的コンパイル部が生成した前記実行命令列内にオペランドとしてアドレスが含まれる場合に、前記アドレスの前記実行命令列内での位置情報と、該アドレスが指すデータを識別する識別情報とに更に関連付けて、前記実行命令列を前記共有プールに記録する、請求項2に記載の動的コンパイラプログラム。
- 前記共有プールは、前記コンピュータがアクセス可能な記憶装置であり、前記条件付実行命令列記録部は、前記部分プログラムに適用された前記1以上の最適化のすべてが、前記実行状態取得部による取得ごとの値の変化が少ない実行状態情報のみを参照して適用された最適化である場合にのみ、各最適化に関して参照された実行状態情報のリストと、該リスト内の各実行状態情報に関して対応する最適化による効果が得られると判断するために利用された、前記各実行状態情報が満たすべき条件のリストとに関連付けて、前記動的コンパイル部により生成された実行命令列を前記共有プールに記録する、請求項2に記載の動的コンパイラプログラム。
- コンピュータにおいて、プログラムの実行中に、プログラムに含まれる複数の部分プログラムのうち実行すべき部分プログラムを順次コンパイルする動的コンパイル方法であって、
前記コンピュータは、該コンピュータが実行するプログラムの1以上部分プログラムの各々について、該部分プログラムをコンパイルして生成された実行命令列を、前記部分プログラムに適用された1以上の最適化の各々に関して参照された実行環境の状態情報である実行状態情報のリストと、該リスト内の各実行状態情報の値が対応する最適化の効果を得るために満たすべきとされた条件のリストとに関係付けて保存する共有プールを有し、
前記コンピュータのプロセッサが、現在の1以上の実行状態情報の各値を取得するステップと、
前記コンピュータのプロセッサが、前記共有プールから、コンパイル対象の部分プログラムと同じ部分プログラムをコンパイルして生成された実行命令列に関係付けられた前記条件のリストを読み出し、各条件を対応する現在の実行状態情報の値が満たすか否かを判定するステップと、
前記コンピュータのプロセッサが、判定の結果が否定的であることに応じて、前記コンパイル対象の部分プログラムをコンパイルして実行命令列を生成するステップとを含み、
前記判定が肯定的である場合は、前記条件のリストに関連付けられて前記共有プールに保存される前記実行命令列が再利用される、動的コンパイル方法。 - 前記実行命令列を生成するステップは、前記コンパイル対象の部分プログラムに適用可能な1以上の最適化のうち、前記現在の1以上の実行状態情報の各値を参照してその効果が得られると判断した最適化を適用して前記コンパイル対象の部分プログラムをコンパイルするステップを含み、前記コンピュータのプロセッサが、前記部分プログラムに適用された1以上の最適化のすべてが低い最適化レベルの最適化である場合にのみ、該最適化に関して参照された実行状態情報のリストと、該リスト内の各実行状態情報に関して最適化による効果が得られると判断するために利用された、前記各実行状態情報が満たすべき条件のリストとに関連付けて、生成された実行命令列を前記共有プールに記録するステップを更に含む、請求項11に記載の動的コンパイル方法。
- プログラムの実行中に、プログラムに含まれる複数の部分プログラムのうち実行すべき部分プログラムを順次コンパイルする動的コンパイル装置であって、
該コンピュータが実行するプログラムの1以上の部分プログラムの各々について、該部分プログラムをコンパイルして生成された実行命令列を、前記部分プログラムに適用された1以上の最適化の各々に関して参照された実行環境の状態情報である実行状態情報のリストと、該リスト内の各実行状態情報の値が対応する最適化の効果を得るために満たすべきとされた条件のリストとに関係付けて保存する共有プールと、
現在の1以上の実行状態情報の各値を取得する実行情報取得部と、
前記共有プールから、コンパイル対象の部分プログラムと同じ部分プログラムをコンパイルして生成された実行命令列に関係付けられた前記条件のリストを読み出し、各条件を対応する現在の実行状態情報の値が満たすか否かを判定する判定部と、
判定の結果が否定的であることに応答して、前記コンパイル対象の部分プログラムをコンパイルして実行命令列を生成する動的コンパイル部とを含み、
前記判定が肯定的である場合は、前記条件のリストに関連付けられて前記共有プールに保存される前記実行命令列を再利用する、動的コンパイル装置。 - 前記動的コンパイル部は、前記コンパイル対象の部分プログラムに適用可能な1以上の最適化のうち、前記現在の1以上の実行状態情報の各値を参照してその効果が得られると判断した最適化を適用して前記コンパイル対象の部分プログラムをコンパイルし、前記部分プログラムに適用された1以上の最適化のすべてが低い最適化レベルの最適化である場合にのみ、該最適化に関して参照された実行状態情報のリストと、該リスト内の各実行状態情報に関して最適化による効果が得られると判断するために利用された、前記各実行状態情報が満たすべき条件のリストとに関連付けて、生成された実行命令列を前記共有プールに記録する条件付実行命令列記録部を更に含む、請求項13に記載の動的コンパイル装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010087038A JP5460430B2 (ja) | 2010-04-05 | 2010-04-05 | 動的コンパイラプログラム、動的コンパイル方法及び動的コンパイル装置 |
US13/076,853 US8612948B2 (en) | 2010-04-05 | 2011-03-31 | Dynamic compiler program, dynamic compiling method and dynamic compiling device |
US14/096,700 US8938728B2 (en) | 2010-04-05 | 2013-12-04 | Dynamic compiler program, dynamic compiling method and dynamic compiling device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010087038A JP5460430B2 (ja) | 2010-04-05 | 2010-04-05 | 動的コンパイラプログラム、動的コンパイル方法及び動的コンパイル装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011221609A JP2011221609A (ja) | 2011-11-04 |
JP5460430B2 true JP5460430B2 (ja) | 2014-04-02 |
Family
ID=44711129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010087038A Expired - Fee Related JP5460430B2 (ja) | 2010-04-05 | 2010-04-05 | 動的コンパイラプログラム、動的コンパイル方法及び動的コンパイル装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8612948B2 (ja) |
JP (1) | JP5460430B2 (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8843906B1 (en) * | 2006-10-16 | 2014-09-23 | The Mathworks, Inc. | Inferring data types from compiler call site |
US8959495B2 (en) * | 2012-09-14 | 2015-02-17 | Oracle International Corporation | Unifying static and dynamic compiler optimizations in source-code bases |
US9778917B2 (en) | 2012-09-26 | 2017-10-03 | International Business Machines Corporation | Dynamically building subsections of locale objects at run-time |
US9116680B2 (en) | 2012-09-26 | 2015-08-25 | International Business Machines Corporation | Dynamically building locale objects or subsections of locale objects based on historical data |
US9141352B2 (en) * | 2012-09-26 | 2015-09-22 | International Business Machines Corporation | Dynamically building locale objects at run-time |
US8881123B2 (en) | 2012-11-30 | 2014-11-04 | Oracle International Corporation | Enabling symbol resolution of private symbols in legacy programs and optimizing access to the private symbols |
US8972975B1 (en) | 2013-04-01 | 2015-03-03 | Google Inc. | Bounded installation time optimization of applications |
KR20150047940A (ko) * | 2013-10-25 | 2015-05-06 | 삼성전자주식회사 | 어플리케이션 분석 방법 및 장치 |
US9411664B1 (en) | 2015-12-03 | 2016-08-09 | International Business Machines Corporation | Fingerprint-based processor parameter management |
US9495138B1 (en) * | 2016-01-04 | 2016-11-15 | International Business Machines Corporation | Scheme for verifying the effects of program optimizations |
US10108442B1 (en) * | 2017-09-18 | 2018-10-23 | International Business Machines Corporation | Optimization and affinity for hypervisor-based just-in-time translator |
CN110119274A (zh) * | 2018-02-05 | 2019-08-13 | 北京智明星通科技股份有限公司 | 一种数据编译的方法、装置以及电子终端、计算机可读存储介质 |
CN111949272B (zh) * | 2020-07-30 | 2023-12-22 | 百度在线网络技术(北京)有限公司 | 寄宿应用的编译优化方法、装置、电子设备及可读存储介质 |
US11379281B2 (en) * | 2020-11-18 | 2022-07-05 | Akamai Technologies, Inc. | Detection and optimization of content in the payloads of API messages |
CN115022375A (zh) * | 2022-06-28 | 2022-09-06 | 雷沃工程机械集团有限公司 | 一种挖掘机Tbox设备下行指令编译方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002259135A (ja) | 2001-02-28 | 2002-09-13 | Internatl Business Mach Corp <Ibm> | プログラムの最適化方法及びこれを用いたコンパイラ |
JP3808755B2 (ja) | 2001-11-07 | 2006-08-16 | 富士通株式会社 | Jitコンパイラを備えた仮想計算機 |
JP2004078751A (ja) * | 2002-08-21 | 2004-03-11 | Nippon Telegr & Teleph Corp <Ntt> | コンパイル済みプログラムコード再利用方法、装置およびプログラム |
US7237064B2 (en) * | 2003-10-10 | 2007-06-26 | Intel Corporation | Method and apparatus for feedback-based management of combined heap and compiled code caches |
JP4086791B2 (ja) * | 2004-01-28 | 2008-05-14 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラプログラム、動的コンパイラプログラム、再現コンパイラプログラム、再現コンパイラ、コンパイル方法、及び記録媒体 |
US7665075B1 (en) * | 2004-03-17 | 2010-02-16 | Sun Microsystems, Inc. | Methods for sharing of dynamically compiled code across class loaders by making the compiled code loader reentrant |
US7644402B1 (en) * | 2004-03-17 | 2010-01-05 | Sun Microsystems, Inc. | Method for sharing runtime representation of software components across component loaders |
US20060123398A1 (en) * | 2004-12-08 | 2006-06-08 | Mcguire James B | Apparatus and method for optimization of virtual machine operation |
US8381202B2 (en) * | 2006-06-20 | 2013-02-19 | Google Inc. | Runtime system for executing an application in a parallel-processing computer system |
US8413125B2 (en) * | 2007-01-26 | 2013-04-02 | Oracle International Corporation | Asynchronous dynamic compilation based on multi-session profiling to produce shared native code |
US9361078B2 (en) * | 2007-03-19 | 2016-06-07 | International Business Machines Corporation | Compiler method of exploiting data value locality for computation reuse |
US8321850B2 (en) * | 2008-06-06 | 2012-11-27 | Vmware, Inc. | Sharing and persisting code caches |
US9117071B2 (en) * | 2009-06-03 | 2015-08-25 | Apple Inc. | Methods and apparatuses for secure compilation |
-
2010
- 2010-04-05 JP JP2010087038A patent/JP5460430B2/ja not_active Expired - Fee Related
-
2011
- 2011-03-31 US US13/076,853 patent/US8612948B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20110246974A1 (en) | 2011-10-06 |
US8612948B2 (en) | 2013-12-17 |
JP2011221609A (ja) | 2011-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5460430B2 (ja) | 動的コンパイラプログラム、動的コンパイル方法及び動的コンパイル装置 | |
US8286152B2 (en) | Systems, methods, and computer products for just-in-time compilation for virtual machine environments for fast application startup and maximal run-time performance | |
US8832672B2 (en) | Ensuring register availability for dynamic binary optimization | |
US8281291B2 (en) | System and method for embedded java memory footprint performance improvement | |
JP5583514B2 (ja) | バイナリコードを最適化するコンパイル方法、及びそのコンパイラシステム、並びにコンピュータ・プログラム | |
US9323508B2 (en) | Method and system for compiler optimization | |
EP3455736B1 (en) | Dynamically sized locals with precise garbage collection reporting | |
US20040255279A1 (en) | Block translation optimizations for program code conversation | |
JP2010532530A (ja) | メモリトランザクションのグループ化 | |
US9424004B2 (en) | Execution guards in dynamic programming | |
JP2013235386A (ja) | 最適化装置、最適化方法、及び最適化プログラム | |
JP2009528589A (ja) | 適応コンパイルコード | |
JP5719278B2 (ja) | 情報処理装置、プロファイル対象決定プログラム及び方法 | |
US10572275B2 (en) | Compatible dictionary layout | |
US8938728B2 (en) | Dynamic compiler program, dynamic compiling method and dynamic compiling device | |
US20120005460A1 (en) | Instruction execution apparatus, instruction execution method, and instruction execution program | |
US20050183077A1 (en) | System and method for JIT memory footprint improvement for embedded java devices | |
US11210193B2 (en) | Evaluating performance improvement of executing instructions in a first processor over execution on a second processor before compilation | |
CN104166633B (zh) | 用于存储器访问保护的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20121003 |
|
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: 20131217 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140114 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5460430 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |