JP2017204080A - 情報処理装置、コンパイル方法及びコンパイラプログラム - Google Patents
情報処理装置、コンパイル方法及びコンパイラプログラム Download PDFInfo
- Publication number
- JP2017204080A JP2017204080A JP2016094763A JP2016094763A JP2017204080A JP 2017204080 A JP2017204080 A JP 2017204080A JP 2016094763 A JP2016094763 A JP 2016094763A JP 2016094763 A JP2016094763 A JP 2016094763A JP 2017204080 A JP2017204080 A JP 2017204080A
- Authority
- JP
- Japan
- Prior art keywords
- copy
- call
- class
- constructor
- unit
- 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.)
- Granted
Links
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/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】周辺探索部23が、最適化対象クラスのコピーコンストラクタ及び代入演算の呼び出し及び該呼び出しの周辺を探索し、該呼び出しにより実行されるコピー処理のコピー元及びコピー先のメンバ変数へのアクセス回数を算出する。そして、生成部24が、デフォルトのコピー処理を行った場合の該呼び出し及び該呼び出しの周辺のコピー元及びコピー先に関するメモリアクセス回数と周辺探索部23により算出されたアクセス回数とを比較する。そして、生成部24は、周辺探索部23により算出されたアクセス回数が小さい場合に、コピーコンストラクタ及び代入演算子についてメンバ変数単位でコピー処理を行う定義をAST3に追加する。そして、生成部24は、該呼び出しについて追加した定義を用いるようにAST3を修正する。
【選択図】図3
Description
CLASS& A(const CLASS& src){
M(src);
return * this;
}
C(const CLASS& src,
const CLASS* dummy){
M(src);
}
private:
void M(const CLASS& src){
/* COPY STATEMENT PLACE */
}
v=src.v;
1a コンパイル部
2 ソースファイル
3 AST
4 修正AST
5 対象クラス
6 変更箇所リスト
7 実行コード
10 フロントエンド部
20 最適化処理部
21 取得部
22 特定部
23 周辺探索部
24 生成部
30 バックエンド部
60 コンピュータ
61 メモリ
62 CPU
63 LANインタフェース
64 HDD
65 スーパーIO
66 DVI
67 ODD
Claims (5)
- ソースコード上の暗黙のコピーコンストラクタ及び暗黙の代入演算子の少なくともいずれかを用いるクラスを抽出する抽出部と、
前記抽出部により抽出されたクラスに含まれるクラスのコピーコンストラクタ及び代入演算の少なくともいずれかの呼び出しを特定する特定部と、
前記特定部により特定された呼び出し及び該呼び出しの周辺における、該呼び出しにより実行されるコピー処理のコピー元及びコピー先のメンバ変数へのアクセス回数を算出する算出部と、
前記呼び出しにより実行されるデフォルトのコピー処理を行った場合の該呼び出し及び該呼び出しの周辺のコピー元及びコピー先に関するメモリアクセス数と前記算出部により算出されたアクセス回数を比較し、前記算出部により算出されたアクセス回数が小さいと判定した場合に、前記コピーコンストラクタ及び前記代入演算子の少なくともいずれかについてメンバ変数単位でコピー処理を行う定義を追加する中間コードを生成すると共に、前記呼び出しについて追加した定義を用いる中間コードを生成する生成部と
を有することを特徴とする情報処理装置。 - 前記算出部は、前記特定部により特定された呼び出しより前においては、前記コピー処理のコピー元のメンバ変数を対象とし、前記特定部により特定された呼び出しより後においては、前記コピー処理のコピー元及びコピー先のメンバ変数を対象としてアクセス回数を算出することを特徴とする請求項1に記載の情報処理装置。
- 前記抽出部は、他のクラスを継承していないクラスであり、メンバ変数の型が全て基本型であり、かつ、メンバ変数の数が所定の上限値以下であるクラスを抽出することを特徴とする請求項1又は2に記載の情報処理装置。
- コンピュータが、
ソースコード上の暗黙のコピーコンストラクタ及び暗黙の代入演算子の少なくともいずれかを用いるクラスを抽出し、
抽出したクラスに含まれるクラスのコピーコンストラクタ及び代入演算の少なくともいずれかの呼び出しを特定し、
特定した呼び出し及び該呼び出しの周辺における、該呼び出しにより実行されるコピー処理のコピー元及びコピー先のメンバ変数へのアクセス回数を算出し、
前記呼び出しにより実行されるデフォルトのコピー処理を行った場合の該呼び出し及び該呼び出しの周辺のコピー元及びコピー先に関するメモリアクセス数と前記アクセス回数を比較し、前記アクセス回数が小さいと判定した場合に、前記コピーコンストラクタ及び前記代入演算子の少なくともいずれかについてメンバ変数単位でコピー処理を行う定義を追加する中間コードを生成すると共に、前記呼び出しについて追加した定義を用いる中間コードを生成する
処理を実行することを特徴とするコンパイル方法。 - コンピュータに、
ソースコード上の暗黙のコピーコンストラクタ及び暗黙の代入演算子の少なくともいずれかを用いるクラスを抽出し、
抽出したクラスに含まれるクラスのコピーコンストラクタ及び代入演算の少なくともいずれかの呼び出しを特定し、
特定した呼び出し及び該呼び出しの周辺における、該呼び出しにより実行されるコピー処理のコピー元及びコピー先のメンバ変数へのアクセス回数を算出し、
前記呼び出しにより実行されるデフォルトのコピー処理を行った場合の該呼び出し及び該呼び出しの周辺のコピー元及びコピー先に関するメモリアクセス数と前記アクセス回数を比較し、前記アクセス回数が小さいと判定した場合に、前記コピーコンストラクタ及び前記代入演算子の少なくともいずれかについてメンバ変数単位でコピー処理を行う定義を追加する中間コードを生成すると共に、前記呼び出しについて追加した定義を用いる中間コードを生成する
処理を実行させることを特徴とするコンパイラプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016094763A JP6651974B2 (ja) | 2016-05-10 | 2016-05-10 | 情報処理装置、コンパイル方法及びコンパイラプログラム |
US15/484,547 US10169008B2 (en) | 2016-05-10 | 2017-04-11 | Information processing device and compilation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016094763A JP6651974B2 (ja) | 2016-05-10 | 2016-05-10 | 情報処理装置、コンパイル方法及びコンパイラプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017204080A true JP2017204080A (ja) | 2017-11-16 |
JP6651974B2 JP6651974B2 (ja) | 2020-02-19 |
Family
ID=60297012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016094763A Active JP6651974B2 (ja) | 2016-05-10 | 2016-05-10 | 情報処理装置、コンパイル方法及びコンパイラプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10169008B2 (ja) |
JP (1) | JP6651974B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947430A (zh) * | 2019-03-26 | 2019-06-28 | 山东浪潮通软信息科技有限公司 | 一种基于动态编译的代码编译生成工具和一种动态编译方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111240772A (zh) * | 2020-01-22 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 一种基于区块链的数据处理方法、装置及存储介质 |
US11481201B2 (en) * | 2020-03-05 | 2022-10-25 | Intuit Inc. | Integrated development environment for developing and compiling query language schemas for application program interfaces |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06214800A (ja) | 1993-01-21 | 1994-08-05 | Hitachi Ltd | 目的プログラムの最適化処理システム |
US6158024A (en) * | 1998-03-31 | 2000-12-05 | International Business Machines Corporation | Method and apparatus for structured memory analysis of data processing systems and applications |
JP3918274B2 (ja) | 1998-01-27 | 2007-05-23 | 富士通株式会社 | コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体 |
US20020151334A1 (en) * | 2001-04-11 | 2002-10-17 | Motorola, Inc | Communications device with call frequency analyzer |
GB0314874D0 (en) * | 2003-06-26 | 2003-07-30 | Ibm | Generating a model of software in execution |
JP4652680B2 (ja) | 2003-12-22 | 2011-03-16 | パナソニック株式会社 | コンパイル方法および装置、ならびにコンパイラ |
US8789028B2 (en) * | 2006-06-30 | 2014-07-22 | International Business Machines Corporation | Memory access monitoring |
-
2016
- 2016-05-10 JP JP2016094763A patent/JP6651974B2/ja active Active
-
2017
- 2017-04-11 US US15/484,547 patent/US10169008B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947430A (zh) * | 2019-03-26 | 2019-06-28 | 山东浪潮通软信息科技有限公司 | 一种基于动态编译的代码编译生成工具和一种动态编译方法 |
Also Published As
Publication number | Publication date |
---|---|
US10169008B2 (en) | 2019-01-01 |
JP6651974B2 (ja) | 2020-02-19 |
US20170329584A1 (en) | 2017-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6662354B1 (en) | Determining destinations of a dynamic branch | |
Mulligan et al. | Lem: reusable engineering of real-world semantics | |
KR100334995B1 (ko) | 방향성 비사이클 그래프 내의 트리 패턴을 정합함으로써최적화 코드를 리타겟팅하는 프로그래밍 방법 및 장치 | |
KR101099212B1 (ko) | 예외 처리 구조물들을 포함하는 소프트웨어의 소스 언어 독립형 중간 표현을 처리하는 방법, 다수의 소스 코드 언어들에 대한 소스 언어 독립형 예외 처리 중간 표현들을 구현하기 위한 시스템 및 컴퓨터 판독가능 저장 매체 | |
CN108139891B (zh) | 用于生成建议以纠正未定义标记错误的方法和系统 | |
US8181171B2 (en) | Method and apparatus for analyzing large scale program and generation of code from degenerated program dependence graph | |
EP2829970A1 (en) | A method and apparatus for porting source code | |
JP6911059B2 (ja) | Cpu利用およびコードリファクタリングのためのクエリオプティマイザー | |
US11579856B2 (en) | Multi-chip compatible compiling method and device | |
JP2001166949A (ja) | シンボリック実行を用いてソースコードをコンパイルするための方法及び装置 | |
US20100185669A1 (en) | Efficient incremental parsing of context sensitive programming languages | |
US20140298290A1 (en) | Identification of code changes using language syntax and changeset data | |
JP6651974B2 (ja) | 情報処理装置、コンパイル方法及びコンパイラプログラム | |
CN115017516A (zh) | 一种基于符号执行的模糊测试方法 | |
KR20080038306A (ko) | 널가능과 후 바인딩 | |
Naik et al. | Sporq: An interactive environment for exploring code using query-by-example | |
JP2001166946A (ja) | 階層の平坦化によりソースコードをコンパイルする方法及び装置 | |
US8914782B2 (en) | Optimization of declarative queries | |
Nacke et al. | Learn LLVM 17: A beginner's guide to learning LLVM compiler tools and core libraries with C++ | |
US20230113783A1 (en) | Cross-platform code conversion method and device | |
KR102614967B1 (ko) | 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법 | |
JP5600301B2 (ja) | システム表現およびハンドリング技術 | |
JP5932707B2 (ja) | 計算機、プログラム及びデータ生成方法 | |
CN111796832A (zh) | 热补丁文件生成方法、装置、设备及存储介质 | |
Färber et al. | Metis-based Paramodulation Tactic for HOL Light. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190212 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20191216 |
|
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: 20191224 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200106 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6651974 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |