JP2017204201A - 情報処理装置、コンパイル方法、およびコンパイルプログラム - Google Patents
情報処理装置、コンパイル方法、およびコンパイルプログラム Download PDFInfo
- Publication number
- JP2017204201A JP2017204201A JP2016096559A JP2016096559A JP2017204201A JP 2017204201 A JP2017204201 A JP 2017204201A JP 2016096559 A JP2016096559 A JP 2016096559A JP 2016096559 A JP2016096559 A JP 2016096559A JP 2017204201 A JP2017204201 A JP 2017204201A
- Authority
- JP
- Japan
- Prior art keywords
- argument
- function
- dummy
- actual
- arguments
- 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/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/311—Functional or applicative languages; Rewrite 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/447—Target code generation
-
- 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/4434—Reducing the memory space required by the program code
- G06F8/4435—Detection or removal of dead or redundant code
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】情報処理装置101は、図1の(1)で示すように、関数func()の処理を、関数func()の関数の演算子「...」に基づき定義されたいずれかの仮引数に対応する関数func()の呼び出し元の実引数列に含まれる実引数の数分複製する。次に、情報処理装置101は、図1の(2)で示すように、複製した数分の処理の各処理内における関数func()の仮引数のうちの仮引数args以外の他の仮引数を、各作成仮引数に置換する。そして、情報処理装置101は、図1の(3)で示すように、関数func()の処理内の再帰呼び出し部分に、置換した数分の処理のうちの実引数列の先頭の実引数を受け入れる作成仮引数に置換した処理を挿入する。
【選択図】図1
Description
void func(TH head,Args... args)
{
…
}
図3は、情報処理装置101のハードウェア構成例を示す説明図である。図3において、情報処理装置101は、CPU(Central Processing Unit)301と、ROM(Read−Only Memory)302と、RAM(Random Access Memory)303と、を含む。また、情報処理装置101は、ディスクドライブ304およびディスク305と、通信インターフェース306と、を含む。また、CPU301〜ディスクドライブ304、通信インターフェース306はバス307によってそれぞれ接続される。
図4は、情報処理装置101の機能構成例を示す説明図である。情報処理装置101は、制御部400を有する。制御部400は、構文・意味解析部401と、関数パラメタパック展開部402と、中間言語変換部403と、最適化・コード生成部404と、を含む。制御部400は、記憶装置に記憶されたプログラムをCPU301が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図3に示したROM302、RAM303、ディスク305などである。また、各部の処理結果は、RAM303や、CPU301のレジスタ、CPU301のキャッシュメモリ等に格納される。
400 制御部
401 構文・意味解析部
402 パラメタパック展開部
403 中間言語変換部
404 最適化・コード生成部
411 複製部
412 置換部
413 挿入部
Claims (6)
- ソースコードに含まれる可変個の引数を有する対象のテンプレート関数の処理を、前記対象のテンプレート関数の可変個の引数をまとめる演算子に基づき定義されたいずれかの仮引数に対応する前記対象のテンプレート関数の呼び出し元の実引数列に含まれる実引数の数分複製し、
複製した前記数分の処理の各処理内における前記対象のテンプレート関数の仮引数のうちの前記いずれかの仮引数以外の他の仮引数を、前記実引数列に含まれる各実引数を受け入れるために作成した各作成仮引数に置換し、
前記各処理内における前記他の仮引数が前記対象のテンプレート関数とは異なる他の関数の実引数である場合、前記他の仮引数の型に合致する関数を検索する検索処理または前記ソースコードに含まれるテンプレート関数に基づき前記他の仮引数の型に合致する関数を生成する生成処理を実行し、前記他の関数の呼び出しを前記検索処理または前記生成処理で得られた関数の呼び出しに置換し、
前記対象のテンプレート関数の処理内の再帰呼び出し部分に、置換した前記数分の処理のうちの前記実引数列の先頭の実引数を受け入れる作成仮引数に置換した処理を挿入し、前記各処理内の再帰呼び出し部分に、前記各処理の作成仮引数に受け入れられる実引数の次の位置の実引数を受け入れる作成仮引数に置換した処理を挿入する、
制御部を有することを特徴とする情報処理装置。 - 前記ソースコードは、仮引数がなく前記対象のテンプレート関数と同一名称の関数を含み、
前記制御部は、
置換した前記数分の処理のうちの前記実引数列の末尾の実引数を受け入れる作成仮引数に置換した処理の再帰呼び出し部分に、前記同一名称の関数の処理を挿入する、
ことを特徴とする請求項1に記載の情報処理装置。 - 前記制御部は、
前記各処理内における前記他の仮引数を前記各作成仮引数に置換するとともに、前記各処理内における前記いずれかの仮引数と前記演算子とが結合した文字列を、前記各作成仮引数に受け入れられる実引数より後ろ全ての実引数のそれぞれを受け入れる作成仮引数に置換する、
ことを特徴とする請求項1または2に記載の情報処理装置。 - 前記ソースコードは、仮引数がなく前記対象のテンプレート関数と同一名称の第1の関数と、仮引数が1つであり前記対象のテンプレート関数と同一名称の第2の関数とを含み、
前記制御部は、
置換した前記数分の処理のうちの前記実引数列の末尾の実引数を受け入れる作成仮引数に置換した処理の再帰呼び出し部分に、前記第1の関数または前記第2の関数のうちの当該再帰呼び出し部分の実引数に応じた関数の処理を挿入する、
ことを特徴とする請求項3に記載の情報処理装置。 - コンピュータが、
ソースコードに含まれる可変個の引数を有する対象のテンプレート関数の処理を、前記対象のテンプレート関数の可変個の引数をまとめる演算子に基づき定義されたいずれかの仮引数に対応する前記対象のテンプレート関数の呼び出し元の実引数列に含まれる実引数の数分複製し、
複製した前記数分の処理の各処理内における前記対象のテンプレート関数の仮引数のうちの前記いずれかの仮引数以外の他の仮引数を、前記実引数列に含まれる各実引数を受け入れるために作成した各作成仮引数に置換し、
前記各処理内における前記他の仮引数が前記対象のテンプレート関数とは異なる他の関数の実引数である場合、前記他の仮引数の型に合致する関数を検索する検索処理または前記ソースコードに含まれるテンプレート関数に基づき前記他の仮引数の型に合致する関数を生成する生成処理を実行し、前記他の関数の呼び出しを前記検索処理または前記生成処理で得られた関数の呼び出しに置換し、
前記対象のテンプレート関数の処理内の再帰呼び出し部分に、置換した前記数分の処理のうちの前記実引数列の先頭の実引数を受け入れる作成仮引数に置換した処理を挿入し、前記各処理内の再帰呼び出し部分に、前記各処理の作成仮引数に受け入れられる実引数の次の位置の実引数を受け入れる作成仮引数に置換した処理を挿入する、
処理を実行することを特徴とするコンパイル方法。 - コンピュータに、
ソースコードに含まれる可変個の引数を有する対象のテンプレート関数の処理を、前記対象のテンプレート関数の可変個の引数をまとめる演算子に基づき定義されたいずれかの仮引数に対応する前記対象のテンプレート関数の呼び出し元の実引数列に含まれる実引数の数分複製し、
複製した前記数分の処理の各処理内における前記対象のテンプレート関数の仮引数のうちの前記いずれかの仮引数以外の他の仮引数を、前記実引数列に含まれる各実引数を受け入れるために作成した各作成仮引数に置換し、
前記各処理内における前記他の仮引数が前記対象のテンプレート関数とは異なる他の関数の実引数である場合、前記他の仮引数の型に合致する関数を検索する検索処理または前記ソースコードに含まれるテンプレート関数に基づき前記他の仮引数の型に合致する関数を生成する生成処理を実行し、前記他の関数の呼び出しを前記検索処理または前記生成処理で得られた関数の呼び出しに置換し、
前記対象のテンプレート関数の処理内の再帰呼び出し部分に、置換した前記数分の処理のうちの前記実引数列の先頭の実引数を受け入れる作成仮引数に置換した処理を挿入し、前記各処理内の再帰呼び出し部分に、前記各処理の作成仮引数に受け入れられる実引数の次の位置の実引数を受け入れる作成仮引数に置換した処理を挿入する、
処理を実行させることを特徴とするコンパイルプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016096559A JP6651977B2 (ja) | 2016-05-12 | 2016-05-12 | 情報処理装置、コンパイル方法、およびコンパイルプログラム |
US15/485,852 US10013244B2 (en) | 2016-05-12 | 2017-04-12 | Apparatus and method to compile a variadic template function |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016096559A JP6651977B2 (ja) | 2016-05-12 | 2016-05-12 | 情報処理装置、コンパイル方法、およびコンパイルプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017204201A true JP2017204201A (ja) | 2017-11-16 |
JP6651977B2 JP6651977B2 (ja) | 2020-02-19 |
Family
ID=60294623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016096559A Active JP6651977B2 (ja) | 2016-05-12 | 2016-05-12 | 情報処理装置、コンパイル方法、およびコンパイルプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10013244B2 (ja) |
JP (1) | JP6651977B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10114624B1 (en) * | 2017-10-12 | 2018-10-30 | Devfactory Fz-Llc | Blackbox matching engine |
CN108446122B (zh) * | 2018-03-22 | 2021-10-29 | 中国银行股份有限公司 | 一种参数一致性验证方法及装置 |
CN109035037A (zh) * | 2018-06-29 | 2018-12-18 | 渤海人寿保险股份有限公司 | 保险产品可视化配置方法、装置、存储介质及终端 |
US11416224B1 (en) * | 2021-03-02 | 2022-08-16 | Capital One Services, Llc | Augmented intelligence for creating software development artifacts |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002140198A (ja) | 2000-11-02 | 2002-05-17 | Hitachi Ltd | インライン展開方法 |
JP2005141380A (ja) | 2003-11-05 | 2005-06-02 | Matsushita Electric Ind Co Ltd | テンプレートコンパイル方法 |
US8645248B2 (en) * | 2010-10-27 | 2014-02-04 | Hsbc Technology & Services (Usa) Inc. | Integrated customer communications computer system and process for implementing same |
-
2016
- 2016-05-12 JP JP2016096559A patent/JP6651977B2/ja active Active
-
2017
- 2017-04-12 US US15/485,852 patent/US10013244B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP6651977B2 (ja) | 2020-02-19 |
US20170329585A1 (en) | 2017-11-16 |
US10013244B2 (en) | 2018-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7571427B2 (en) | Methods for comparing versions of a program | |
US9645803B2 (en) | Methods and systems for forming an adjusted perform range | |
JP6651977B2 (ja) | 情報処理装置、コンパイル方法、およびコンパイルプログラム | |
JP2004362249A (ja) | 翻訳知識最適化装置、翻訳知識最適化のためのコンピュータプログラム、コンピュータ及び記憶媒体 | |
JP4638484B2 (ja) | データ処理装置におけるデータ整合性 | |
JP4041248B2 (ja) | コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法 | |
US11960867B1 (en) | Using natural language latent representation in automated conversion of source code from base programming language to target programming language | |
US11487522B1 (en) | Training and/or using neural network model to generate target source code from lower-level representation | |
JP2018510445A (ja) | プログラム性能を向上させる領域特化システムおよび方法 | |
US11556317B2 (en) | Instruction translation support method and information processing apparatus | |
JP6651974B2 (ja) | 情報処理装置、コンパイル方法及びコンパイラプログラム | |
JP6481515B2 (ja) | 情報処理装置、コンパイル方法、及びコンパイラプログラム | |
US20170344351A1 (en) | Information processing apparatus, compiling management method, and recording medium | |
GB2420638A (en) | Method of substituting code fragments in Internal Representation | |
JP5932707B2 (ja) | 計算機、プログラム及びデータ生成方法 | |
JP3551352B2 (ja) | ループ分割方法 | |
JP7333889B2 (ja) | ソフトウェア設計支援システム、ソフトウェア設計支援方法およびソフトウェア設計支援プログラム | |
JP2008071065A (ja) | インライン展開を行うコンパイル装置、方法、プログラム、記憶媒体 | |
US20240202522A1 (en) | Device and method for generating deep learning model graph and abstract syntax tree for integrated compiler | |
JP2002082811A (ja) | コンパイル方法および記録媒体 | |
Cséri et al. | Rule-based assignment of comments to AST nodes in C++ programs | |
JP2008015665A (ja) | プログラム解析方法及びプログラム解析装置 | |
Sumimoto et al. | MPI-Adapter2: An Automatic ABI Translation Library Builder for MPI Application Binary Portability | |
JP2008123249A (ja) | コンパイル装置、および、ループの高速化方法 | |
JP6447358B2 (ja) | ソースコード生成プログラム、ソースコード生成方法およびコンピュータ |
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: 6651977 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |