JP6127639B2 - プログラム実行制御プログラム、プログラム実行制御方法 - Google Patents
プログラム実行制御プログラム、プログラム実行制御方法 Download PDFInfo
- Publication number
- JP6127639B2 JP6127639B2 JP2013065039A JP2013065039A JP6127639B2 JP 6127639 B2 JP6127639 B2 JP 6127639B2 JP 2013065039 A JP2013065039 A JP 2013065039A JP 2013065039 A JP2013065039 A JP 2013065039A JP 6127639 B2 JP6127639 B2 JP 6127639B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- code
- execution
- profile
- execution control
- 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
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
図19は、本実施の形態例におけるプログラム実行制御プログラムが動作する装置100の構成の一例を示す図である。同図の実行制御装置100は、例えば、一般的なコンピュータであって、例えば、プロセッサ21、表示部22、入力部23、通信部24、メモリ25を有する。各部は、バス26を介して相互に接続される。
図1は、本実施の形態例におけるプログラム実行制御装置100のブロック図の一例を示す図である。JavaVM101は、コンピュータ上で動作するOS80の制御下において実行される。
バイトコード104は、Java言語で記述されたソースコード111が変換されることによって生成される。バイトコード104は、実行形式のプログラムであって、特定のOS80やハードウェアに依存することなく定義された命令の集合によって記述される。つまり、バイトコード104は、JavaVM101が動作する環境であれば、様々なOS80、ハードウェアで実行可能であって、OS80やハードウェアに依存することなく同一の処理を行う。
図3は、JavaVM101のブロック図の詳細について説明する例図である。同図のJavaVM101は、図1に示したインタプリタ105、JITコンパイラ107に加え、プログラム実行制御部106、共有バイトコード群110、プログラムプロファイル参照・更新部103を有する。プログラム実行制御部106は、プログラムの実行に係る制御、JITコンパイラ107へコンパイル指示、プログラムプロファイル参照・更新部103への指示等を行う。共有バイトコード群110は、共通ライブラリや共通の宣言等であって、バイトコードによって記述される。プログラムプロファイル参照・更新部103は、プログラム実行制御部106の指示に基づいて、プログラムプロファイル102の参照処理、及び、更新処理を行う。
図4は、一般的なJavaVM101a、101bにおけるプログラムの処理の概要について説明する図である。この例において、JavaVM101a、101bは、例えば、一回以上実行するバイトコード104を対象としてネイティブコード108に変換する。また、同図では、共通のOS80において、2つのJavaVM101a、101bのプロセスが動作する場合が例示される。また、以下、実行対象のプログラムをメソッドと称する。
図5は、本実施の形態例のJavaVM101c、101dにおけるプログラムの処理の概要について説明する図である。図4の例と同様にして、JavaVM101c、101dは、一回以上実行するバイトコード104を対象としてネイティブコード108に変換する。また、この例では、共通のOS80において2つのJavaVM101c、101dのプロセスが動作する場合が例示される。
図6は、Java言語で記述されたプログラムのソースコード111の一例を示す図である。同図のソースコード111が変換されることによって、バイトコード104が生成される。例えば、同図のソースコード111には、普通預金クラスにおける、残高照会メソッド(関数)M1及び入金メソッド(関数)M2の処理が記述される。残高照会メソッドM1は、パラメータidを入力として、パラメータidに示される普通口座の残高を照会するメソッドである。また、入金メソッドM2は、パラメータid、パラメータdepositAmountを入力として、パラメータidに示される普通口座に、パラメータdepositAmountの金額を入金するメソッドである。
図7は、図6のプログラムにおいて、ネイティブコード化されるコードの一例について説明する図である。同図において、破線で囲まれたコードについてブロック化され、各コードブロックに対して番号が付与される。そして、同図において、太線で囲まれたコードブロック内のコードは、JITコンパイラ107によってネイティブコード化されたコードである。この例において、メソッドM1にコードにおいて、ブロックB2〜B3、ブロックB6〜B8、ブロックB16、ブロックB18〜B19に対応するコードがネイティブコードに変換されている。
図8は、図7のプログラムに対応するプログラムプロファイル102−1の一例を示す図である。同図のプログラムプロファイル102−1は、例えば、メソッド識別子、実行回数、バイトコードサイズ、ネイティブコードサイズ、最適化ブロック情報、最適化完了フラグを有する。
図9は、JavaVM101の全体の処理について説明するフローチャート図である。JavaVM101のプログラム実行制御部106は、起動時に、JavaVM101の起動処理を行うと共に(S31)、起動初期処理制御を行う(S32)。具体的に、javaVM101は、起動初期処理制御として、プログラムプロファイル102に基づいて、実行対象のメソッドの最適化状態へ変換を行う。起動初期処理制御の詳細については、別のフローチャート図に基づいて後述する。続いて、プログラム実行制御部106は、プログラムプロファイル制御を行う(S33)。プログラム実行制御部106は、プログラムプロファイル制御として、実行対象のメソッドを実行すると共に、実行後のメソッドの情報に基づいて、プログラムプロファイル102を更新する。プログラムプロファイル制御の詳細についても、別のフローチャート図に基づいて後述する。
図10は、起動初期処理制御工程の処理について説明するフローチャート図である。この処理は、図9のフローチャート図における工程S32の処理に対応する。
図11は、プログラムプロファイル制御工程の処理について説明するフローチャート図である。この処理は、図9のフローチャート図における工程S33の処理に対応する。プログラム実行制御部106は、起動後、実行対象のメソッドが、プログラムプロファイル102に基づいて最適化状態に変換済みであるか否かを判定する(S51)。最適化状態に変換済みではない場合(S51のNO)、続いて、プログラム実行制御部106は、実行対象のメソッドの実行制御処理を行う(S52)。実行制御処理工程については、別のフローチャート図において後述する。
図12は、メソッドの実行制御処理工程の処理を説明するフローチャート図である。この処理は、図11のフローチャート図における工程S52に対応する。
図13は、実行制御処理工程によってネイティブコード化がさらに進められた図7のプログラムの例を示す図である。同図において、点線で囲まれたコードブロックは、新たに、ネイティブコードに変換されたコードブロックを示す。具体的に、この例において、ブロックB2〜B3、ブロックB6〜B8、ブロックB16、ブロックB18〜B19に加えて、新たに、ブロックB9〜B12に対応するコードがネイティブコードに変換されている。このように、メソッドが繰り返し実行されることによって、ネイティブコードへの変換状態が変移する。
図14は、図13のメソッドに対応して更新されたプログラムプロファイル102−2の一例を示す図である。同図のプログラムプロファイル102−2は、図8のプログラムプロファイル102−1に対して、各メソッドの実行に伴って更新されている。
なお、本実施の形態例におけるjavaVM101は、プログラムプロファイル102を共有する複数のjavaVM101間で異なるメソッドが実行される場合についても有効である。
図16は、プログラムプロファイル102の共有形態の例について説明する図である。同図には、プログラムプロファイル102が共有される3つの事例が示される。同図の(A)は、同一のコンピュータ100XのOS上で動作する2つのJavaVM101a、101bのうち、1つのJavaVM101bが再起動される例を示す。この例において、再起動されたJavaVM101bは、起動時に、前回使用した共有のプログラムプロファイル102を参照することができる。つまり、JavaVM101bは、起動と終了を跨いで、プログラムプロファイル102を使用することができる。これにより、JavaVM101bは、実行対象のメソッドのうち、JavaVM101aの実行時、及び、javaVM101bの前回の実行時に最適化状態に変換された実績を有するメソッドについて、起動時に、最適化状態に変換することができる。
また、本実施の形態例におけるjavaVM101は、メソッドの実行を繰り返すことによってプログラムプロファイル102を自動的に生成することができる。このため、ユーザは、プログラムプロファイル102の情報を一から生成する必要がない。例えば、開発環境において生成されたプログラムプロファイル102が、運用環境において使用されることにより、高精度なプログラムプロファイル102が生成される。
図18は、本実施の形態例におけるJavaVM101によるメソッドの実行速度について説明する図である。同図は、一般的なJavaVMによるメソッドの実行速度を表すグラフG1と、本実施の形態例におけるJavaVM101によるメソッドの実行速度を表すグラフG2を有する。各グラフG1、G2における横軸はメソッドの実行回数、縦軸はメソッドの実行時間(ms)を示す。グラフG1、G2は、JavaVMを起動し、同一のメソッドを連続して実行した場合における実行回数と実行時間との対応関係を示す。
バイトコードのプログラムについて、少なくとも一部をネイティブコードに変換して実行するプログラム実行制御処理を行うプログラム実行制御プログラムであって、
前記プログラム実行制御処理は、
実行対象である実行対象プログラムの実行時に、所定の条件に基づいて、当該実行対象プログラムにおける前記バイトコードを前記ネイティブコードに変換する第1の変換工程と、
起動時に、同じまたは別の前記プログラム実行制御プログラムの実行時におけるプロファイルであって、最適化状態に変換された実績を有する最適化完了プログラムの識別情報と、当該最適化完了プログラムのネイティブコードに変換済みの最適化コード情報とを有するプロファイルを参照して、前記実行対象プログラムの前記識別情報に基づいて、当該実行対象プログラムが前記最適化完了プログラムに該当するか否かを判定する判定工程と、
前記最適化完了プログラムに該当する場合、前記起動時に、前記実行対象プログラムのバイトコードのうち前記最適化コード情報に対応するバイトコードを前記ネイティブコードに変換する第2の変換工程と、を有するプログラム実行制御プログラム。
付記1において、
前記第1の変換工程では、前記実行対象プログラムが前記最適化状態に変換されたとき、当該実行対象プログラムの前記識別情報と前記最適化コード情報とを、前記プロファイルに記録するプログラム実行制御プログラム。
付記1または2において、
前記同じまたは別の前記プログラム実行制御プログラムの実行時は、同時に実行される前記プログラム実行制御プログラムの実行時、または、異なる時間帯に実行された前記プログラム実行制御プログラムの実行時のいずれかまたは両方であるプログラム実行制御プログラム。
付記1乃至3のいずれかにおいて、
前記同じまたは別の前記プログラム実行制御プログラムの実行時は、共通のオペレーションシステムで動作する前記プログラム実行制御プログラムの実行時、または、異なるオペレーションシステムで動作する前記プログラム実行制御プログラムの実行時のいずれかまたは両方であるプログラム実行制御プログラム。
付記1乃至4のいずれかにおいて、
前記第1の変換工程では、前記実行対象プログラムのコードサイズが収束したとき、前記実行対象プログラムが前記最適化状態に変換されたとみなすプログラム実行制御プログラム。
付記5において、
前記第1の変換工程では、基準実行回数、前記実行対象プログラムの実行の前後で前記コードサイズが変化しない場合に、前記実行対象プログラムの前記コードサイズが収束したことを示すプログラム実行制御プログラム。
付記1乃至6のいずれかにおいて、
前記第1の変換工程における前記所定の条件は、基準回以上実行される前記バイトコードの前記ネイティブコードへの変換であるプログラム実行制御プログラム。
バイトコードのプログラムについて、少なくとも一部をネイティブコードに変換して実行するプログラム実行制御方法であって、
実行対象である実行対象プログラムの実行時に、所定の条件に基づいて、当該実行対象プログラムにおける前記バイトコードを前記ネイティブコードに変換する第1の変換工程と、
起動時に、同じまたは別の前記プログラム実行制御プログラムの実行時におけるプロファイルであって、最適化状態に変換された実績を有する最適化完了プログラムの識別情報と、当該最適化完了プログラムのネイティブコードに変換済みの最適化コード情報とを有するプロファイルを参照して、前記実行対象プログラムの前記識別情報に基づいて、当該実行対象プログラムが前記最適化完了プログラムに該当するか否かを判定する判定工程と、
前記最適化完了プログラムに該当する場合、前記起動時に、前記実行対象プログラムのバイトコードのうち前記最適化コード情報に対応するバイトコードを前記ネイティブコードに変換する第2の変換工程と、を有するプログラム実行制御方法。
Claims (8)
- 実行対象のプログラムの実行時に、該プログラムに含まれる少なくとも一部のバイトコードをネイティブコードに変換するプログラム実行制御プログラムにおいて、
前記実行対象のプログラムを起動する際に、プログラムの識別情報と、該プログラムの、ネイティブコードに変換されたバイトコードの識別情報とを含むプロファイルを参照して、前記実行対象のプログラムの識別情報が、前記プロファイルに含まれる前記プログラムの識別情報と一致するか否かの判定を行い、
一致する場合、前記実行対象のプログラムに含まれるバイトコードのうち、前記プロファイルに含まれる前記バイトコードの識別情報に対応するバイトコードをネイティブコードに変換し、
変換した前記ネイティブコードを実行する
処理をコンピュータに実行させるプログラム実行制御プログラム。 - 請求項1において、
前記実行対象のプログラムの実行時に、所定の条件に基づいて、前記実行対象のプログラムの一部のバイトコードをネイティブコードに変換し、前記実行対象のプログラムが最適化状態に変換されたとき、当該実行対象のプログラムの前記識別情報と前記変換した前記バイトコードの識別情報とを、前記プロファイルに記録するプログラム実行制御プログラム。 - 請求項1または2において、
前記プロファイルは、同時に実行される前記プログラム実行制御プログラム、または、異なる時間帯に実行される前記プログラム実行制御プログラムのプロファイルのいずれかまたは両方であるプログラム実行制御プログラム。 - 請求項1乃至3のいずれかにおいて、
前記プロファイルは、共通のオペレーションシステムで動作する前記プログラム実行制御プログラム、または、異なるオペレーションシステムで動作する前記プログラム実行制御プログラムのプロファイルのいずれかまたは両方であるプログラム実行制御プログラム。 - 請求項2において、
前記記録は、前記実行対象のプログラムのコードサイズが収束したとき、前記実行対象のプログラムが前記最適化状態に変換されたとみなすプログラム実行制御プログラム。 - 請求項5において、
前記記録は、基準実行回数、前記実行対象のプログラムの実行の前後で前記コードサイズが変化しない場合に、前記実行対象のプログラムの前記コードサイズが収束したことを示すプログラム実行制御プログラム。 - 請求項2において、
前記所定の条件は、基準回以上実行される場合であるプログラム実行制御プログラム。 - 実行対象のプログラムの実行時に、該プログラムに含まれる少なくとも一部のバイトコードをネイティブコードに変換するプログラム実行制御方法において、
前記実行対象のプログラムを起動する際に、プログラムの識別情報と、該プログラムの、ネイティブコードに変換されたバイトコードの識別情報とを含むプロファイルを参照して、前記実行対象のプログラムの識別情報が、前記プロファイルに含まれる前記プログラムの識別情報と一致するか否かの判定を行い、
一致する場合、前記実行対象のプログラムに含まれるバイトコードのうち、前記プロファイルに含まれる前記バイトコードの識別情報に対応するバイトコードをネイティブコードに変換し、
変換した前記ネイティブコードを実行する、
プログラム実行制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013065039A JP6127639B2 (ja) | 2013-03-26 | 2013-03-26 | プログラム実行制御プログラム、プログラム実行制御方法 |
US14/156,748 US9170830B2 (en) | 2013-03-26 | 2014-01-16 | Method for controlling program execution |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013065039A JP6127639B2 (ja) | 2013-03-26 | 2013-03-26 | プログラム実行制御プログラム、プログラム実行制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014191493A JP2014191493A (ja) | 2014-10-06 |
JP6127639B2 true JP6127639B2 (ja) | 2017-05-17 |
Family
ID=51622155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013065039A Active JP6127639B2 (ja) | 2013-03-26 | 2013-03-26 | プログラム実行制御プログラム、プログラム実行制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9170830B2 (ja) |
JP (1) | JP6127639B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101569142B1 (ko) * | 2014-11-18 | 2015-11-13 | 성균관대학교산학협력단 | 프로그램의 최적화 실행을 위한 장치 및 방법 |
CN106557350B (zh) * | 2015-09-30 | 2019-12-13 | 北京金山安全软件有限公司 | 应用程序安装包中java字节码转换方法、装置及设备 |
JP6954256B2 (ja) * | 2018-11-02 | 2021-10-27 | 横河電機株式会社 | エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム |
CN112445487B (zh) * | 2019-09-02 | 2024-11-22 | 深圳Tcl新技术有限公司 | 一种dex优化方法、系统、智能终端及存储介质 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5970249A (en) | 1997-10-06 | 1999-10-19 | Sun Microsystems, Inc. | Method and apparatus for performing byte-code optimization during pauses |
JP2000330792A (ja) * | 1999-05-18 | 2000-11-30 | Matsushita Electric Ind Co Ltd | バイトコードプログラム実行制御システム |
US20010042241A1 (en) * | 2000-01-21 | 2001-11-15 | Fujitsu Limited | Apparatus and method for executing program using just-in time-compiler system |
US7039910B2 (en) * | 2001-11-28 | 2006-05-02 | Sun Microsystems, Inc. | Technique for associating execution characteristics with instructions or operations of program code |
US7146607B2 (en) * | 2002-09-17 | 2006-12-05 | International Business Machines Corporation | Method and system for transparent dynamic optimization in a multiprocessing environment |
KR100506522B1 (ko) | 2003-02-24 | 2005-08-03 | 삼성전자주식회사 | 자바 프로그램에서 바이트 코드의 컴파일 시간 단축시스템 및 방법 |
US7624387B2 (en) | 2003-04-10 | 2009-11-24 | Panasonic Corporation | Compiler, program product, compilation device, communication terminal device, and compilation method |
JP4473626B2 (ja) | 2003-04-10 | 2010-06-02 | パナソニック株式会社 | コンパイラ、記録媒体、コンパイル装置、通信端末装置及びコンパイル方法 |
JP4713820B2 (ja) | 2003-05-28 | 2011-06-29 | パナソニック株式会社 | プログラム実行制御装置、プログラム実行制御方法 |
US7770157B2 (en) * | 2005-08-08 | 2010-08-03 | International Business Machines Corporation | System and method for improving virtual machine performance using an offline profile repository |
JP2007334643A (ja) | 2006-06-15 | 2007-12-27 | Renesas Technology Corp | プログラム実行方法、プログラム、およびプログラム実行システム |
US7814486B2 (en) * | 2006-06-20 | 2010-10-12 | Google Inc. | Multi-thread runtime system |
US7934208B2 (en) * | 2006-10-13 | 2011-04-26 | International Business Machines Corporation | Method for transparent on-line dynamic binary optimization |
US8370823B2 (en) * | 2007-08-27 | 2013-02-05 | International Business Machines Corporation | Device, system, and method of computer program optimization |
US8453129B2 (en) * | 2008-04-24 | 2013-05-28 | International Business Machines Corporation | Using hardware interrupts to drive dynamic binary code recompilation |
JP2011002976A (ja) | 2009-06-18 | 2011-01-06 | Panasonic Corp | プログラム実行制御装置 |
CA2672337C (en) * | 2009-07-15 | 2017-01-03 | Ibm Canada Limited - Ibm Canada Limitee | Compiler instrumentation infrastructure to facilitate multiple pass and multiple purpose dynamic analysis |
US8359435B2 (en) * | 2009-12-16 | 2013-01-22 | International Business Machines Corporation | Optimization of software instruction cache by line re-ordering |
US8826249B2 (en) * | 2010-02-18 | 2014-09-02 | Oracle International Corporation | Method and system for optimizing code for a multi-threaded application |
US9256410B2 (en) * | 2012-08-09 | 2016-02-09 | Apple Inc. | Failure profiling for continued code optimization |
-
2013
- 2013-03-26 JP JP2013065039A patent/JP6127639B2/ja active Active
-
2014
- 2014-01-16 US US14/156,748 patent/US9170830B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2014191493A (ja) | 2014-10-06 |
US9170830B2 (en) | 2015-10-27 |
US20140298305A1 (en) | 2014-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9104433B2 (en) | Trace generation method, trace generation device, trace generation program product, and multi-level compilation using trace generation method | |
JP5460430B2 (ja) | 動的コンパイラプログラム、動的コンパイル方法及び動的コンパイル装置 | |
US8984497B2 (en) | Source code converting, method program, and systems for first programming language to a code in a second programming language | |
US9684493B2 (en) | R-language integration with a declarative machine learning language | |
CN103729235A (zh) | Java虚拟机的编译方法和Java虚拟机 | |
JP2023539594A (ja) | コンパイラの最適化のためのプロファイルデータの導出 | |
JP6127639B2 (ja) | プログラム実行制御プログラム、プログラム実行制御方法 | |
JP2015519646A (ja) | マルチテナント型アプリケーション・ドメイン及びメモリの管理を伴う修正されたjvm | |
US7765527B2 (en) | Per thread buffering for storing profiling data | |
CN111768183A (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
US9027008B2 (en) | Method, computer, and computer program for speculatively optimizing code | |
US10684873B2 (en) | Efficient data decoding using runtime specialization | |
Aslam et al. | Optimized java binary and virtual machine for tiny motes | |
US9870240B2 (en) | Dynamic code injection | |
US20240338365A1 (en) | Processing a user query | |
US9141414B2 (en) | Preferred compilation | |
WO2022046198A1 (en) | Thread-local return structure for asynchronous state machine | |
WO2017206302A1 (zh) | 一种应用程序的运行方法和运行装置 | |
CN107817972B (zh) | 缓存代码处理方法、装置、存储介质及电子设备 | |
CN111190693A (zh) | 一种基于鲲鹏平台搭建云平台的方法及装置 | |
US9495274B1 (en) | Adaptive runtime for a multiprocessing API | |
Wen et al. | Wasmslim: Optimizing webassembly binary distribution via automatic module splitting | |
US11669312B2 (en) | Profiling and optimization of compiler-generated code | |
US11157252B2 (en) | Assessment of the benefit of post-inlining program transformation in inlining decisions | |
You et al. | A static region‐based compiler for the Dalvik virtual machine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20151106 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160713 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160719 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160916 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170221 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170227 |
|
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: 20170314 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170327 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6127639 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |