JP7060801B2 - 情報処理装置、コンパイラプログラム及びコンパイル方法 - Google Patents
情報処理装置、コンパイラプログラム及びコンパイル方法 Download PDFInfo
- Publication number
- JP7060801B2 JP7060801B2 JP2018108560A JP2018108560A JP7060801B2 JP 7060801 B2 JP7060801 B2 JP 7060801B2 JP 2018108560 A JP2018108560 A JP 2018108560A JP 2018108560 A JP2018108560 A JP 2018108560A JP 7060801 B2 JP7060801 B2 JP 7060801B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- source code
- functions
- determined
- code
- 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
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Description
図1から図3は、情報処理システム10の構成を示す図である。図1から図3に示す情報処理システム10は、情報処理装置1と、操作端末3とを有する。
次に、情報処理システム10のハードウエア構成について説明する。図4は、情報処理装置1のハードウエア構成を説明する図である。
次に、情報処理システム10の機能について説明を行う。図5は、情報処理装置1の機能のブロック図である。
次に、第1の実施の形態の概略について説明する。図6及び図7は、第1の実施の形態におけるコンパイル処理の概略を説明するフローチャート図である。また、図8及び図9は、第1の実施の形態におけるコンパイル処理の概略を説明する図である。
次に、第1の実施の形態の詳細について説明する。図10から図19は、第1の実施の形態におけるコンパイル処理の詳細を説明するフローチャート図である。また、図20から図23は、第1の実施の形態におけるコンパイル処理の詳細を説明する図である。
初めに、ライブラリのソースコード131(ソースコード131a)についてのコンパイル処理の具体例について説明を行う。
図20は、ソースコード131aの具体例について説明する図である。
図21は、関数情報136の具体例について説明する図である。
次に、アプリケーションのソースコード131(ソースコード131b)についてのコンパイル処理の具体例について説明を行う。
図22は、ソースコード131bの具体例について説明する図である。
図23は、ソースコード131aのヘッダの具体例について説明する図である。
第1ソースコードのコンパイルの実行に応じて、前記第1ソースコードに含まれる関数のそれぞれが例外の送出を行う第1関数であるか否かを示す関数情報を記憶する記憶部と、
前記第1ソースコードと異なる第2ソースコードのコンパイルの実行に応じて、前記第2ソースコードに含まれる関数のそれぞれが前記第1ソースコードに含まれる関数を呼び出すか否かを判定する第1判定部と、
前記第1ソースコードに含まれる関数を呼び出す関数が前記第2ソースコードに含まれると判定した場合、前記関数情報を記憶した記憶部を参照し、前記第2ソースコードに含まれる関数のうち、前記第1ソースコードに含まれる関数を呼び出すと判定された関数のそれぞれが、前記第1関数を呼び出す関数であるか否かを判定する第2判定部と、
前記第2ソースコードに含まれる関数のうち、前記第1関数を呼び出すと判定された関数のそれぞれについて、各関数が呼び出す前記第1関数から例外が送出された場合に実行される後続処理を、前記第2ソースコードのコンパイルを実行することによって生成されるオブジェクトコードに追加するコード生成部と、を有する、
ことを特徴とする情報処理装置。
付記1において、
前記コード生成部は、前記第2ソースコードに含まれる関数のうち、前記第1関数を呼び出さないと判定された関数のそれぞれについては、前記後続処理の追加を行わない、
ことを特徴とする情報処理装置。
付記1において、
前記後続処理は、各関数が呼び出す前記第1関数から送出された例外を受け付ける処理である、
ことを特徴とする情報処理装置。
付記1において、
前記コード生成部は、前記第2ソースコードに含まれる関数であって前記第1関数を呼び出すと判定された関数のうち、前記後続処理を実行する旨の記述が前記第2ソースコードに含まれていない関数のそれぞれについて、前記後続処理の追加を行う、
ことを特徴とする情報処理装置。
付記1において、
前記第2判定部は、
前記第1ソースコードに含まれる関数を呼び出す関数が前記第2ソースコードに含まれると判定した場合、前記第2ソースコードに含まれると判定された関数によって呼び出される関数のそれぞれが前記第1関数であるか否かを示す情報が、前記第1ソースコードまたは前記第2ソースコードに含まれているか否かを判定し、
前記第2ソースコードに含まれる関数によって呼び出される関数のうち、前記第1関数であるか否かを示す情報が前記第1ソースコードまたは前記ソースコードに含まれていないと判定された関数のそれぞれが、前記第1関数を呼び出す関数であるか否かを判定する、
ことを特徴とする情報処理装置。
付記1において、
前記第1ソースコード及び前記第2ソースコードは、C++言語によって記述されたソースコードである、
ことを特徴とする情報処理装置。
第1ソースコードのコンパイルの実行に応じて、前記第1ソースコードに含まれる関数のそれぞれが例外の送出を行う第1関数であるか否かを示す関数情報を記憶部に記憶し、
前記第1ソースコードと異なる第2ソースコードのコンパイルの実行に応じて、前記第2ソースコードに含まれる関数のそれぞれが前記第1ソースコードに含まれる関数を呼び出すか否かを判定し、
前記第1ソースコードに含まれる関数を呼び出す関数が前記第2ソースコードに含まれると判定した場合、前記関数情報を記憶した記憶部を参照し、前記第2ソースコードに含まれる関数のうち、前記第1ソースコードに含まれる関数を呼び出すと判定された関数のそれぞれが、前記第1関数を呼び出す関数であるか否かを判定し、
前記第2ソースコードに含まれる関数のうち、前記第1関数を呼び出すと判定された関数のそれぞれについて、各関数が呼び出す前記第1関数から例外が送出された場合に実行される後続処理を、前記第2ソースコードのコンパイルを実行することによって生成されるオブジェクトコードに追加する、
処理をコンピュータに実行させることを特徴とするコンパイラプログラム。
付記7において、
前記追加する処理では、前記第2ソースコードに含まれる関数のうち、前記第1関数を呼び出さないと判定された関数のそれぞれについては、前記後続処理の追加を行わない、
ことを特徴とするコンパイラプログラム。
第1ソースコードのコンパイルの実行に応じて、前記第1ソースコードに含まれる関数のそれぞれが例外の送出を行う第1関数であるか否かを示す関数情報を記憶部に記憶し、
前記第1ソースコードと異なる第2ソースコードのコンパイルの実行に応じて、前記第2ソースコードに含まれる関数のそれぞれが前記第1ソースコードに含まれる関数を呼び出すか否かを判定し、
前記第1ソースコードに含まれる関数を呼び出す関数が前記第2ソースコードに含まれると判定した場合、前記関数情報を記憶した記憶部を参照し、前記第2ソースコードに含まれる関数のうち、前記第1ソースコードに含まれる関数を呼び出すと判定された関数のそれぞれが、前記第1関数を呼び出す関数であるか否かを判定し、
前記第2ソースコードに含まれる関数のうち、前記第1関数を呼び出すと判定された関数のそれぞれについて、各関数が呼び出す前記第1関数から例外が送出された場合に実行される後続処理を、前記第2ソースコードのコンパイルを実行することによって生成されるオブジェクトコードに追加する、
ことを特徴とするコンパイル方法。
付記9において、
前記追加する工程では、前記第2ソースコードに含まれる関数のうち、前記第1関数を呼び出さないと判定された関数のそれぞれについては、前記後続処理の追加を行わない、
ことを特徴とするコンパイル方法。
11:コンパイラ 11a:解析部
11b:最適化部 11c:コード生成部
12:LTO 13:リンカ
130:情報格納領域 131:ソースコード
132:中間言語 133:オブジェクトコード
134:最適化後コード 135:実行ファイル
Claims (7)
- 第1ソースコードのコンパイルの実行に応じて、前記第1ソースコードに含まれる関数のそれぞれが例外の送出を行う第1関数であるか否かを示す関数情報を記憶する記憶部と、
前記第1ソースコードと異なる第2ソースコードのコンパイルの実行に応じて、前記第2ソースコードに含まれる関数のそれぞれが前記第1ソースコードに含まれる関数を呼び出すか否かを判定する第1判定部と、
前記第1ソースコードに含まれる関数を呼び出す関数が前記第2ソースコードに含まれると判定した場合、前記関数情報を記憶した記憶部を参照し、前記第2ソースコードに含まれる関数のうち、前記第1ソースコードに含まれる関数を呼び出すと判定された関数のそれぞれが、前記第1関数を呼び出す関数であるか否かを判定する第2判定部と、
前記第2ソースコードに含まれる関数のうち、前記第1関数を呼び出すと判定された関数のそれぞれについて、各関数が呼び出す前記第1関数から例外が送出された場合に実行される後続処理を、前記第2ソースコードのコンパイルを実行することによって生成されるオブジェクトコードに追加するコード生成部と、を有する、
ことを特徴とする情報処理装置。 - 請求項1において、
前記コード生成部は、前記第2ソースコードに含まれる関数のうち、前記第1関数を呼び出さないと判定された関数のそれぞれについては、前記後続処理の追加を行わない、
ことを特徴とする情報処理装置。 - 請求項1において、
前記後続処理は、各関数が呼び出す前記第1関数から送出された例外を受け付ける処理である、
ことを特徴とする情報処理装置。 - 請求項1において、
前記コード生成部は、前記第2ソースコードに含まれる関数であって前記第1関数を呼び出すと判定された関数のうち、前記後続処理を実行する旨の記述が前記第2ソースコードに含まれていない関数のそれぞれについて、前記後続処理の追加を行う、
ことを特徴とする情報処理装置。 - 請求項1において、
前記第2判定部は、
前記第1ソースコードに含まれる関数を呼び出す関数が前記第2ソースコードに含まれると判定した場合、前記第2ソースコードに含まれると判定された関数によって呼び出される関数のそれぞれが前記第1関数であるか否かを示す情報が、前記第1ソースコードまたは前記第2ソースコードに含まれているか否かを判定し、
前記第2ソースコードに含まれる関数によって呼び出される関数のうち、前記第1関数であるか否かを示す情報が前記第1ソースコードまたは前記ソースコードに含まれていないと判定された関数のそれぞれが、前記第1関数を呼び出す関数であるか否かを判定する、
ことを特徴とする情報処理装置。 - 第1ソースコードのコンパイルの実行に応じて、前記第1ソースコードに含まれる関数のそれぞれが例外の送出を行う第1関数であるか否かを示す関数情報を記憶部に記憶し、
前記第1ソースコードと異なる第2ソースコードのコンパイルの実行に応じて、前記第2ソースコードに含まれる関数のそれぞれが前記第1ソースコードに含まれる関数を呼び出すか否かを判定し、
前記第1ソースコードに含まれる関数を呼び出す関数が前記第2ソースコードに含まれると判定した場合、前記関数情報を記憶した記憶部を参照し、前記第2ソースコードに含まれる関数のうち、前記第1ソースコードに含まれる関数を呼び出すと判定された関数のそれぞれが、前記第1関数を呼び出す関数であるか否かを判定し、
前記第2ソースコードに含まれる関数のうち、前記第1関数を呼び出すと判定された関数のそれぞれについて、各関数が呼び出す前記第1関数から例外が送出された場合に実行される後続処理を、前記第2ソースコードのコンパイルを実行することによって生成されるオブジェクトコードに追加する、
処理をコンピュータに実行させることを特徴とするコンパイラプログラム。 - 第1ソースコードのコンパイルの実行に応じて、前記第1ソースコードに含まれる関数のそれぞれが例外の送出を行う第1関数であるか否かを示す関数情報を記憶部に記憶し、
前記第1ソースコードと異なる第2ソースコードのコンパイルの実行に応じて、前記第2ソースコードに含まれる関数のそれぞれが前記第1ソースコードに含まれる関数を呼び出すか否かを判定し、
前記第1ソースコードに含まれる関数を呼び出す関数が前記第2ソースコードに含まれると判定した場合、前記関数情報を記憶した記憶部を参照し、前記第2ソースコードに含まれる関数のうち、前記第1ソースコードに含まれる関数を呼び出すと判定された関数のそれぞれが、前記第1関数を呼び出す関数であるか否かを判定し、
前記第2ソースコードに含まれる関数のうち、前記第1関数を呼び出すと判定された関数のそれぞれについて、各関数が呼び出す前記第1関数から例外が送出された場合に実行される後続処理を、前記第2ソースコードのコンパイルを実行することによって生成されるオブジェクトコードに追加する、
ことを特徴とするコンパイル方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018108560A JP7060801B2 (ja) | 2018-06-06 | 2018-06-06 | 情報処理装置、コンパイラプログラム及びコンパイル方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018108560A JP7060801B2 (ja) | 2018-06-06 | 2018-06-06 | 情報処理装置、コンパイラプログラム及びコンパイル方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019212100A JP2019212100A (ja) | 2019-12-12 |
JP7060801B2 true JP7060801B2 (ja) | 2022-04-27 |
Family
ID=68845321
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018108560A Active JP7060801B2 (ja) | 2018-06-06 | 2018-06-06 | 情報処理装置、コンパイラプログラム及びコンパイル方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7060801B2 (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002229801A (ja) | 2001-02-02 | 2002-08-16 | Hitachi Ltd | 関数のリンク方法 |
JP2003131886A (ja) | 2001-10-25 | 2003-05-09 | Hitachi Ltd | 例外処理の翻訳方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002073347A (ja) * | 2000-09-04 | 2002-03-12 | Hitachi Ltd | 例外処理方法及びコンパイラ |
-
2018
- 2018-06-06 JP JP2018108560A patent/JP7060801B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002229801A (ja) | 2001-02-02 | 2002-08-16 | Hitachi Ltd | 関数のリンク方法 |
JP2003131886A (ja) | 2001-10-25 | 2003-05-09 | Hitachi Ltd | 例外処理の翻訳方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2019212100A (ja) | 2019-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102059705B1 (ko) | 적응식 이식가능 라이브러리 | |
US11216258B2 (en) | Direct function call substitution using preprocessor | |
US7472375B2 (en) | Creating managed code from native code | |
US10133560B2 (en) | Link time program optimization in presence of a linker script | |
CN111124550B (zh) | 一种程序动态加载方法、装置及存储介质 | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
EP3244306B1 (en) | A computer-implemented method for allowing modification of a region of original code | |
US8141035B2 (en) | Method for accessing internal states of objects in object oriented programming | |
US10061571B2 (en) | System and method for link time optimization | |
WO2005083565A2 (en) | Method and system for performing link-time code optimization without additional code analysis | |
KR102414250B1 (ko) | 전자 장치, 컴파일링 방법 및 컴퓨터 판독가능 기록매체 | |
CN112882718B (zh) | 编译处理方法、装置、设备及存储介质 | |
KR20010086159A (ko) | 자바 프로그램들 및 이를 위한 소프트웨어 프러덕트의플랫폼 특정 효율 강화를 위한 방법 | |
CN113342323A (zh) | 软件在线开发的方法及装置 | |
CN110851168A (zh) | 数据处理方法及其装置、计算机可读存储介质 | |
JP6500626B2 (ja) | 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法 | |
US20090187897A1 (en) | Compiling method and compiling program | |
JP7060801B2 (ja) | 情報処理装置、コンパイラプログラム及びコンパイル方法 | |
EP3432138B1 (en) | A computer-implemented method and system for comparing the results on a plurality of target machines of modification of a region of original code | |
CN110018831B (zh) | 程序处理方法、装置及计算机可读存储介质 | |
JP2007226589A (ja) | プログラム変換システム | |
JP2015122018A (ja) | アプリケーション開発支援プログラム及びアプリケーション開発支援システム | |
KR100478463B1 (ko) | 응용 프로그램의 동적링크 방법 | |
CN113721899A (zh) | 面向gpdsp的轻量级高效汇编代码编程方法及系统 | |
JP2005346407A (ja) | 動的コンパイルにおけるインライン展開実施方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210310 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220224 |
|
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: 20220315 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220328 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7060801 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |