JP6398725B2 - コンパイルプログラム、コンパイル方法およびコンパイラ装置 - Google Patents
コンパイルプログラム、コンパイル方法およびコンパイラ装置 Download PDFInfo
- Publication number
- JP6398725B2 JP6398725B2 JP2015000280A JP2015000280A JP6398725B2 JP 6398725 B2 JP6398725 B2 JP 6398725B2 JP 2015000280 A JP2015000280 A JP 2015000280A JP 2015000280 A JP2015000280 A JP 2015000280A JP 6398725 B2 JP6398725 B2 JP 6398725B2
- Authority
- JP
- Japan
- Prior art keywords
- branch
- code
- instruction
- unit
- thread
- 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
- 238000000034 method Methods 0.000 title claims description 68
- 238000005457 optimization Methods 0.000 description 105
- 230000006870 function Effects 0.000 description 50
- 230000015654 memory Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 17
- 238000004458 analytical method Methods 0.000 description 16
- 238000006243 chemical reaction Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 6
- 230000010365 information processing Effects 0.000 description 3
- 230000009191 jumping Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005401 electroluminescence Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Description
また、1つの態様では、記憶部と変換部とを有するコンパイラ装置が提供される。記憶部は、分岐命令を含む第1のコードを記憶する。変換部は、第1のコードに含まれる分岐命令をコピーして複数の分岐命令に変換する。変換部は、分岐予測に用いられる情報を記憶する記憶領域を共用する複数のスレッドを実行可能なプロセッサにおいて、使用するスレッドに応じて複数の分岐命令の中から異なる分岐命令が実行されるよう制御する制御命令を生成する。変換部は、複数の分岐命令と制御命令とを含む第2のコードを生成する。
[第1の実施の形態]
図1は、第1の実施の形態のコンパイラ装置の例を示す図である。
変換部12は、コード13に含まれる条件分岐を示す分岐命令15について、分岐予測の最適化を行う場合、分岐命令15をコピーする。これにより、分岐命令15に対応する(通常は、分岐命令15と同じ)条件分岐を示す複数の分岐命令が得られる。図1では、分岐命令15,16が得られる。コピー後の分岐命令の数は、プロセッサ20で実行されるスレッドの数と同じでもよいし、異なっていてもよい。
第2の実施の形態のコンパイラ装置100は、高級言語で記述されたソースコードをコンパイルし、機械可読なオブジェクトコードを生成する。コンパイラ装置100は、ユーザが操作する端末装置でもよいし、端末装置からアクセスされるサーバ装置でもよい。コンパイラ装置100は、例えば、コンピュータを用いて実装される。その場合、コンパイラ装置100は、ソフトウェアとしてのコンパイラを実行する。
コンパイラ装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。上記ユニットはバス108に接続される。CPU101は第1の実施の形態の変換部12の一例であり、RAM102は第1の実施の形態の記憶部11の一例である。
コンパイラ装置100が生成するオブジェクトコードは、上記のCPU101が実行してもよいし、他のCPUが実行してもよい。他のCPUは、コンパイラ装置100が備えるものでもよいし、他のコンピュータが備えるものでもよい。第2の実施の形態では、オブジェクトコードを実行するターゲットのCPUとして、CPU200を想定する。
ハードウェアスレッド212,212aでは、同一のプログラムAが実行されているとする。また、分岐予測部216の履歴メモリ217には、命令アドレスに対してエントリが対応付けられる履歴テーブル218が記憶されているとする。
(S1)コンパイラ装置100は、一次コンパイルとして、ソースコードをオブジェクトコードに変換する。このとき、コンパイラ装置100は、オブジェクトコードの中に、このオブジェクトコードをCPU200に実行させたときに実行状況を示す実行時情報が収集されるように命令を挿入しておく。収集する実行時情報には、各命令の実行回数、各命令の実行時間、各分岐命令の予測ミス回数などが含まれる。
上記の最適化が行われたプログラムBは、スレッドIDがスレッド#0であるハードウェアスレッドでのみ実行される分岐命令b1と、スレッドIDがスレッド#1であるハードウェアスレッドでのみ実行される分岐命令b2とを含む。この2つの分岐命令は、最適化前の1つの分岐命令をコピーして得られたものであり、同一の処理内容を示している。
図7は、コンパイラ装置の機能例を示すブロック図である。
コンパイラ装置100は、ソースコード記憶部121、中間コード記憶部122、オブジェクトコード記憶部123および実行時情報記憶部124を有する。これらのユニットは、例えば、RAM102またはHDD103に確保した記憶領域として実現できる。また、コンパイラ装置100は、ソースコード解析部131、最適化部132およびコード生成部134を有する。これらのユニットは、例えば、CPU101に実行させるコンパイルプログラムのモジュールとして実装することができる。
ソースコード141は、ソースコード記憶部121に記憶される。ソースコード141には、関数sub_parentと関数sub_childが定義されている。
ソースコード142は、ソースコード141と同様の処理を記述したものである。ただし、二重ループの中で、if−else文に代えてswitch−case文が用いられている。このswitch−case文では、変数chの値が判定され、値がAのときは「処理1」が実行され、値がBのときは「処理2」が実行され、それ以外のときは既定の処理として「処理3」が実行される。switch−case文は、内部的には、中間コードに変換されるときにソースコード141のようなif−else文に置き換えられる。よって、if−else文とswitch−case文からは、同じ条件分岐を示す中間コードが生成されることになる。
ソースコード141は、ソースコード解析部131による構文解析を通じて、図10に示すような構造をもつプログラムとして認識される。プログラムは、1または2以上の処理単位を含む。1つの処理単位は、1つの関数や1つのループなど、ソースコード上で区切ることができる1つの纏まった命令範囲である。処理単位は、1または2以上の基本ブロックを含む。1つの基本ブロックは、開始点の命令が1つのみであり、終了点の命令以外では他の基本ブロックへ分岐することのない最小の命令列である。
コンパイルコマンド143は、一次コンパイル時、すなわち、実行時情報の収集機能をもつオブジェクトコードを生成するときに入力されるコンパイルコマンドの例である。コンパイルコマンド144は、二次コンパイル時、すなわち、実行時情報を用いて最適化されたオブジェクトコードを生成するときに入力されるコンパイルコマンドの例である。
実行時情報記憶部124には、例えば、ソフトウェア情報145,146とハードウェア情報147,148が格納される。ソフトウェア情報145はハードウェアスレッド212が出力したソフトウェア情報であり、ソフトウェア情報146はハードウェアスレッド212aが出力したソフトウェア情報である。ハードウェア情報147はハードウェアスレッド212が出力したハードウェア情報であり、ハードウェア情報148はハードウェアスレッド212aが出力したハードウェア情報である。
図13は、コンパイルの手順例を示すフローチャートである。
(S10)ソースコード解析部131は、コンパイルコマンドで指定されたソースファイルからソースコードを読み出し、字句解析、構文解析、意味解析などのフロントエンド処理を行う。そして、ソースコード解析部131は、ソースコードを中間コードに変換し、中間コードを中間コード記憶部122に格納する。
この分岐予測最適化は、上記のステップS16において実行される。
(S30)最適化部132は、全ての処理単位の中で最後に実行される基本ブロックを選択する。ここで選択した基本ブロックをcurr_blkとおく。
(S35)最適化部132は、pre_blkからcurr_blkの間に、IFブロック群(IFブロックまたはIF−ELSEブロック)に含まれる分岐命令が存在するか判断する。この分岐命令は、条件分岐を示す命令である。該当する分岐命令が存在する場合はステップS36に処理が進み、存在しない場合はステップS39に処理が進む。
(S38)最適化部132は、ハードウェア情報に基づいて、ステップS37で抽出した多重化範囲の候補の予測ミスポイントと実行コストポイントを算出する。予測ミスポイントは、その範囲に含まれる分岐命令の予測ミスの発生頻度を示す値であり、例えば、予測ミス数÷分岐命令の実行回数×100と算出できる。実行コストポイントは、その範囲に含まれる命令の実行頻度を示す値であり、例えば、その範囲の命令の合計サイクル数÷オブジェクトコード全体の合計サイクル数×100と算出できる。
(S40)最適化部132は、全ての処理単位の中で残りの基本ブロックが存在するか判断する。残りの基本ブロックがある場合はステップS31に処理が進み、残りの基本ブロックがない場合はステップS41に処理が進む。
(S41)最適化部132は、多重化範囲の候補を1つ選択する。ここで選択した多重化範囲の候補をcurr_regionとおく。
(S45)最適化部132は、拡大したcurr_region、すなわち、par_regionの予測ミスポイントを算出する。例えば、最適化部132は、par_regionに含まれる分岐命令について、予測ミス数÷分岐命令の実行回数×100を算出する。最適化部132は、拡大したcurr_regionの予測ミスポイントおよび実行コストポイントを、par_regionの予測ミスポイントおよび実行コストポイントに更新する。そして、ステップS42に処理が進む。
(S48)最適化部132は、curr_regionの実行コストポイントが閾値以上であるか判断する。このとき、最適化部132は、中間コード記憶部122に記憶されたコンパイルオプションの内容を参照し、ユーザからコスト閾値が指定されている場合はそのコスト閾値を使用する。指定されていない場合、最適化部132は、所定の値(例えば、7)を閾値として使用する。実行コストポイントが閾値以上の場合はステップS50に処理が進み、閾値未満の場合はステップS49に処理が進む。
(S50)最適化部132は、ステップS41で選択されていない残りの多重化範囲の候補があるか判断する。残りの多重化範囲の候補がある場合はステップS41に処理が進み、全ての多重化範囲の候補が選択された場合はステップS51に処理が進む。
(S51)最適化部132は、多重化範囲の候補を1つ選択する。ここで選択した多重化範囲の候補をcurr_regionとおく。
(S53)最適化部132は、ステップS52で算出した影響度が閾値以上であるか判断する。影響度の閾値は、コスト閾値×予測ミス閾値である。ユーザからコスト閾値および予測ミス閾値が指定された場合、最適化部132は、この2つの閾値から影響度の閾値を算出する。ユーザからコスト閾値および予測ミス閾値が指定されなかった場合、所定の値を影響度の閾値として使用する。例えば、コスト閾値の既定値が8であり、予測ミス閾値の既定値が7である場合、影響度の閾値の既定値は56になる。影響度が閾値以上の場合はステップS54に処理が進み、閾値未満の場合はステップS56に処理が進む。
最適化コード151は、図8に示したソースコード141に対して分岐予測の最適化を行ったものである。分岐予測の最適化は中間コードに対して行われるものであるが、ここでは理解を容易にするためソースコード形式で最適化結果を示している。
最適化コード152には、関数sub_parentと関数sub_childが定義されている。関数sub_parentには、ループkが含まれる。関数sub_childには、ループiが含まれる。以上の処理単位の構造は、ソースコード141と同じである。ただし、最適化コード152では、ループjが多重化範囲として選択されている。ループiには、コピーされた複数のループjが含まれる。ループiは、多重化結果としてコード部分152a,152b,152cを含む。
最適化コード153では、ソースコード141の関数sub_childが多重化範囲として選択されている。最適化コード153は、関数sub_child[0](コード部分153b)と関数sub_child[1](コード部分153c)を含む。また、最適化コード153には、関数sub_parentが定義されている。関数sub_parentには、ループkが含まれる。ループkは、コード部分153aを含む。
11 記憶部
12 変換部
13,14 コード
15,16 分岐命令
17 制御命令
20 プロセッサ
21,22 スレッド
23 記憶領域
Claims (6)
- コンピュータに、
第1のコードに含まれる一の分岐命令をコピーして複数の分岐命令に変換し、
分岐予測に用いられる情報を記憶する記憶領域を共用する複数のスレッドを実行可能なプロセッサにおいて、使用するスレッドに応じて前記複数の分岐命令の中から異なる分岐命令が実行されるよう制御する制御命令を生成し、
前記複数の分岐命令と前記制御命令とを含む第2のコードを生成する、
処理を実行させるコンパイルプログラム。 - 前記プロセッサに前記第1のコードに応じた処理を実行させたときの前記第1のコードに含まれる各分岐命令の実行状況を示す実行時情報を取得し、
前記実行時情報に基づいて、前記第1のコードの中から前記一の分岐命令を選択する、
請求項1記載のコンパイルプログラム。 - 前記実行時情報は、前記第1のコードに含まれる各分岐命令について、前記プロセッサによる分岐予測の失敗状況を示す予測ミス情報を含み、
前記予測ミス情報に基づいて前記一の分岐命令を選択する、
請求項2記載のコンパイルプログラム。 - 前記プロセッサに前記第1のコードに応じた処理を実行させたときの前記第1のコードに含まれる命令の実行状況を示す実行時情報を取得し、
前記実行時情報に基づいて、前記第1のコードの中から前記一の分岐命令を含む命令群の範囲を選択し、前記選択した範囲の命令群をコピーする、
請求項1記載のコンパイルプログラム。 - コンピュータが実行するコンパイル方法であって、
第1のコードに含まれる一の分岐命令をコピーして複数の分岐命令に変換し、
分岐予測に用いられる情報を記憶する記憶領域を共用する複数のスレッドを実行可能なプロセッサにおいて、使用するスレッドに応じて前記複数の分岐命令の中から異なる分岐命令が実行されるよう制御する制御命令を生成し、
前記複数の分岐命令と前記制御命令とを含む第2のコードを生成する、
コンパイル方法。 - 分岐命令を含む第1のコードを記憶する記憶部と、
前記第1のコードに含まれる前記分岐命令をコピーして複数の分岐命令に変換し、
分岐予測に用いられる情報を記憶する記憶領域を共用する複数のスレッドを実行可能なプロセッサにおいて、使用するスレッドに応じて前記複数の分岐命令の中から異なる分岐命令が実行されるよう制御する制御命令を生成し、
前記複数の分岐命令と前記制御命令とを含む第2のコードを生成する、変換部と、
を有するコンパイラ装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/511,251 | 2014-10-10 | ||
US14/511,251 US9658855B2 (en) | 2014-10-10 | 2014-10-10 | Compile method and compiler apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016081501A JP2016081501A (ja) | 2016-05-16 |
JP6398725B2 true JP6398725B2 (ja) | 2018-10-03 |
Family
ID=55655497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015000280A Active JP6398725B2 (ja) | 2014-10-10 | 2015-01-05 | コンパイルプログラム、コンパイル方法およびコンパイラ装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9658855B2 (ja) |
JP (1) | JP6398725B2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9886317B2 (en) * | 2015-02-02 | 2018-02-06 | Oracle International Corporation | Fine-grained scheduling of work in runtime systems |
US9916164B2 (en) * | 2015-06-11 | 2018-03-13 | Intel Corporation | Methods and apparatus to optimize instructions for execution by a processor |
US9715377B1 (en) * | 2016-01-04 | 2017-07-25 | International Business Machines Corporation | Behavior based code recompilation triggering scheme |
US10747878B1 (en) * | 2016-10-07 | 2020-08-18 | Rightquestion, Llc | Rapid verification of executing processes |
CN110147250B (zh) * | 2018-02-13 | 2021-11-12 | 龙芯中科技术股份有限公司 | 一种转移预测电路及其控制方法 |
US11095495B2 (en) * | 2019-04-05 | 2021-08-17 | Arista Networks, Inc. | Multi-result lookups |
CN112540764A (zh) * | 2019-09-23 | 2021-03-23 | 无锡江南计算技术研究所 | 条件转移预测方向变换的编译优化方法 |
US11200038B1 (en) * | 2020-06-25 | 2021-12-14 | Paypal, Inc. | Fast compiling source code without dependencies |
US11314496B2 (en) | 2020-06-25 | 2022-04-26 | Paypal, Inc. | Ultra-fast install and update of an operating system |
KR102397340B1 (ko) * | 2020-07-30 | 2022-05-12 | 경북대학교 산학협력단 | 마이크로컨트롤러 업데이트 관리방법 및 관리시스템 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3007340B1 (ja) | 1998-11-17 | 2000-02-07 | 株式会社ディジタル・ビジョン・ラボラトリーズ | 機能呼び出し方法、並列分散処理システムおよびコンピュータ |
US7013454B2 (en) * | 1999-02-22 | 2006-03-14 | Sun Microsystems, Inc. | Thread suspension system and method using trapping instructions |
US6721875B1 (en) * | 2000-02-22 | 2004-04-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing a single-syllable IP-relative branch instruction and a long IP-relative branch instruction in a processor which fetches instructions in bundle form |
US20030135719A1 (en) * | 2002-01-14 | 2003-07-17 | International Business Machines Corporation | Method and system using hardware assistance for tracing instruction disposition information |
US20030135718A1 (en) * | 2002-01-14 | 2003-07-17 | International Business Machines Corporation | Method and system using hardware assistance for instruction tracing by revealing executed opcode or instruction |
US7120784B2 (en) | 2003-04-28 | 2006-10-10 | International Business Machines Corporation | Thread-specific branch prediction by logically splitting branch history tables and predicted target address cache in a simultaneous multithreading processing environment |
JP4287799B2 (ja) | 2004-07-29 | 2009-07-01 | 富士通株式会社 | プロセッサシステムおよびスレッド切り替え制御方法 |
JP4923240B2 (ja) | 2006-01-17 | 2012-04-25 | 国立大学法人東京工業大学 | プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム |
JP2008107913A (ja) * | 2006-10-23 | 2008-05-08 | Toshiba Corp | プログラム、ソフトウェア変換装置及びコンピュータ |
JP2010039536A (ja) * | 2008-07-31 | 2010-02-18 | Panasonic Corp | プログラム変換装置、プログラム変換方法およびプログラム変換プログラム |
US7664942B1 (en) * | 2008-08-25 | 2010-02-16 | Sun Microsystems, Inc. | Recovering a subordinate strand from a branch misprediction using state information from a primary strand |
US8667476B1 (en) * | 2009-01-20 | 2014-03-04 | Adaptmicrosys LLC | Instruction grouping and ungrouping apparatus and method for an adaptive microprocessor system |
JP4621786B2 (ja) | 2009-04-28 | 2011-01-26 | 株式会社東芝 | 情報処理装置、並列処理最適化方法およびプログラム |
US9477481B2 (en) * | 2014-06-27 | 2016-10-25 | International Business Machines Corporation | Accurate tracking of transactional read and write sets with speculation |
-
2014
- 2014-10-10 US US14/511,251 patent/US9658855B2/en active Active
-
2015
- 2015-01-05 JP JP2015000280A patent/JP6398725B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
US20160103683A1 (en) | 2016-04-14 |
US9658855B2 (en) | 2017-05-23 |
JP2016081501A (ja) | 2016-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6398725B2 (ja) | コンパイルプログラム、コンパイル方法およびコンパイラ装置 | |
US10387157B2 (en) | System and method for instruction set conversion based on mapping of both block address and block offset | |
Lu et al. | Design and implementation of a lightweight dynamic optimization system | |
US20110119660A1 (en) | Program conversion apparatus and program conversion method | |
JP6572610B2 (ja) | 情報処理装置、コンパイル方法およびコンパイルプログラム | |
US8799881B2 (en) | Program parallelization device and program product | |
US9395986B2 (en) | Compiling method and compiling apparatus | |
JP6245031B2 (ja) | コンパイルプログラム、コンパイル方法およびコンパイル装置 | |
JP2009110299A (ja) | プログラムを最適化するコンパイラ | |
JP6432450B2 (ja) | 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム | |
JP5966509B2 (ja) | プログラム、コード生成方法および情報処理装置 | |
US20100095102A1 (en) | Indirect branch processing program and indirect branch processing method | |
US8510529B2 (en) | Method for generating program and method for operating system | |
US7228528B2 (en) | Building inter-block streams from a dynamic execution trace for a program | |
US9335990B2 (en) | Method, a system, and a non-transitory computer-readable medium for supporting application development | |
JP5278538B2 (ja) | コンパイルシステム、コンパイル方法およびコンパイルプログラム | |
JP6536266B2 (ja) | コンパイル装置、コンパイル方法およびコンパイルプログラム | |
US9417872B2 (en) | Recording medium storing address management program, address management method, and apparatus | |
JP5240200B2 (ja) | データ処理装置および方法 | |
JP2004240953A (ja) | コンピュータシステム、その同時多重スレッディング方法およびキャッシュコントローラシステム。 | |
JP2022140995A (ja) | 情報処理装置、コンパイルプログラムおよびコンパイル方法 | |
JP2019144857A (ja) | 情報処理装置、コンパイル方法およびコンパイルプログラム | |
JP2024030940A (ja) | ソースコード変換プログラムおよびソースコード変換方法 | |
JP6066031B2 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
CN113094092A (zh) | 用于经由编程者注释执行异构数据结构选择的方法、系统和制品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171215 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180731 |
|
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: 20180807 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180820 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6398725 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |