JP2000035893A - Method for statically initializing arrangement of data processing system, data processing method, data processing system and computer readable storage medium storing program making computer execute its control procedure - Google Patents
Method for statically initializing arrangement of data processing system, data processing method, data processing system and computer readable storage medium storing program making computer execute its control procedureInfo
- Publication number
- JP2000035893A JP2000035893A JP11098306A JP9830699A JP2000035893A JP 2000035893 A JP2000035893 A JP 2000035893A JP 11098306 A JP11098306 A JP 11098306A JP 9830699 A JP9830699 A JP 9830699A JP 2000035893 A JP2000035893 A JP 2000035893A
- Authority
- JP
- Japan
- Prior art keywords
- data processing
- array
- code
- processing system
- initialization
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Image Processing (AREA)
Abstract
Description
【0001】[0001]
【発明の属する技術分野】本発明は、データ処理システ
ムに関し、更に詳しくは、静的初期化方法及びそのシス
テムに関するものである。[0001] 1. Field of the Invention [0002] The present invention relates to a data processing system, and more particularly to a static initialization method and system.
【0002】[0002]
【従来の技術】JavaTMは、プラットフォーム独立のコー
ドの生成・実行を行うためにプログラミング言語及びプ
ログラミング環境の両者を記述するものである。このプ
ラットフォーム独立のコードは、JavaTM仮想マシン上で
実行される。このJavaTM仮想マシンは、プラットフォー
ム独立のコードを解釈する抽象コンピュータマシンであ
る。JavaTM仮想マシンの詳細については、ティム・リン
ドホルム及びフランク・イェリン著:アジソンウェスレイ
出版(1997年版)"The JavaTM 仮想マシン仕様"に記載さ
れているのでそちらを参照されたい。JavaTM仮想マシン
は、JavaTMプログラミング言語その他のプログラミング
言語を特定して認識するものではないが、その代わりに
Java仮想マシンは、特定のファイルフォーマット、即ち
クラスファイルフォーマットを認識するものである。ク
ラスファイルは、プラットフォーム独立のコードを構成
するJava仮想マシンの命令(又はバイトコード)を保持し
たものである。2. Description of the Related Art Java ™ describes both a programming language and a programming environment in order to generate and execute platform-independent code. This platform-independent code runs on a Java ™ virtual machine. The Java ™ virtual machine is an abstract computer machine that interprets platform-independent code. For more information on the Java ™ virtual machine, see Tim Lindholm and Frank Yellin: Addison Wesley Publishing (1997) “The Java ™ Virtual Machine Specification”. The Java ™ virtual machine does not specifically identify the Java ™ programming language or any other programming language, but instead
The Java virtual machine recognizes a specific file format, that is, a class file format. The class file holds the instructions (or bytecode) of the Java virtual machine that constitutes the platform-independent code.
【0003】Javaプログラムの実行に際し、開発者は、
図1に示した工程で作業を進める。まず、開発者は、コ
ンピュータプログラムのコンパイルを行う(ステップ10
2)。Javaプログラミング言語等の高級言語においては、
開発者は、ソースコードを保持したコンピュータプログ
ラムを開発し、JavaTMコンパイラを起動させ、そのコー
ドのコンパイルを行っている。Javaコンパイラは、カリ
フォルニア州マウンテンビューのサンマイクロシステム
ズから入手可能なJavaTMソフトウエア開発者キットの一
部である。Javaコンパイラは、Java仮想マシン上で実行
するのに適したバイトコードを含む1又は複数のクラス
ファイルを出力する。各クラスファイルは、クラスやイ
ンタフェースのいずれか1つの型を保持している。クラ
スファイルフォーマットの詳細については、"The Java
TM 仮想マシン仕様"の83-137頁に説明されている。これ
によれば、クラスファイルフォーマットは、強固なファ
イルフォーマットである。When executing a Java program, a developer
The work proceeds in the process shown in FIG. First, the developer compiles the computer program (step 10
2). In high-level languages such as the Java programming language,
The developer develops a computer program holding the source code, activates a Java ™ compiler, and compiles the code. The Java compiler is part of the Java ™ software developer kit available from Sun Microsystems of Mountain View, California. The Java compiler outputs one or more class files containing bytecode suitable for execution on a Java virtual machine. Each class file holds one type of class or interface. For more information on the class file format, see "The Java
According to the TM Virtual Machine Specification, pages 83-137. According to this, the class file format is a robust file format.
【0004】[0004]
【発明が解決しようとする課題】しかしながら、このク
ラスファイルフォーマットは、仮想マシンに対して効率
的に配列の静的初期化を行うように命令することができ
ない。以下この欠点に関し詳細に説明する。プログラム
をコンパイルした後、開発者は、ステップ102における
クラスファイルの出力をプリローダを用いて.mクラスフ
ァイルと称される単一ファイルに統合する(ステップ10
4)。サンマイクロシステムズから入手可能なプリローダ
は、クラスファイルを結合させ、そのクラスファイルの
実行を容易にする予備処理を行う。クラスファイルを統
合した後、開発者は、.mクラスファイルの仮想マシンへ
のロードを行う(ステップ106)。このステップにおいて
は、Java仮想マシンは、メモリ中に.mクラスファイルを
保存する。そして、Java仮想マシンは、そのバイトコー
ドを読み出して、.mクラスファイルが保持するバイトコ
ードを解釈した後、それらを処理し実行する。バイトコ
ードの解釈が完了するまで、.mクラスファイルは、メモ
リ中に保存される。Java仮想マシンにより認識されるバ
イトコードの詳細については、"The JavaTM仮想マシン
仕様"の151-338頁に説明されている。However, this class file format cannot instruct a virtual machine to efficiently perform static initialization of arrays. Hereinafter, this disadvantage will be described in detail. After compiling the program, the developer integrates the output of the class file in step 102 into a single file called an .m class file using a preloader (step 10).
Four). A preloader, available from Sun Microsystems, combines the class files and performs preprocessing that facilitates the execution of the class files. After integrating the class files, the developer loads the .m class file into the virtual machine (step 106). In this step, the Java virtual machine saves the .m class file in memory. Then, the Java virtual machine reads the bytecodes, interprets the bytecodes held in the .m class file, and processes and executes them. Until the bytecode interpretation is complete, the .m class file is stored in memory. Details of bytecodes recognized by the Java virtual machine are described in "The Java ™ Virtual Machine Specification", pp. 151-338.
【0005】[仕様]上述したように、クラスファイル
フォーマットは、仮想マシンに配列の静的初期化を行う
ように命令することができない。この問題を解決するた
めに、JavaTMコンパイラは、静的配列の初期化メソッド
を含む特別メソッドである<clinit>を生成してクラスの
初期化を行う。静的配列の初期化の一例を表1のコード
テーブル#1に示す。[Specifications] As described above, the class file format cannot instruct a virtual machine to perform static initialization of an array. In order to solve this problem, the Java ™ compiler generates a special method <clinit> including a method for initializing a static array and initializes the class. An example of the initialization of the static array is shown in code table # 1 of Table 1.
【0006】[0006]
【表1】 [Table 1]
【0007】この例においては、配列"setup"は、静的
初期化がなされた4つの整数−1, 2,3, 4を保持する。こ
の所定の静的初期化がなされると、JavaTMコンパイラ
は、静的初期化を行う<特別>メソッドを生成する。この
静的初期化は、仮コードで関数的に記述され、その一例
を表2のコードテーブル#2に示す。In this example, the array "setup" holds the four statically initialized integers -1, 2, 3, 4. When the predetermined static initialization is performed, the Java ™ compiler generates a <special> method for performing static initialization. This static initialization is functionally described by provisional code, and an example is shown in Code Table # 2 of Table 2.
【0008】[0008]
【表2】 [Table 2]
【0009】上述のコードテーブルが示すように、<特
別>メソッドを関数的に記述する場合、いくつかのステ
ートメントを必要とする。しかしながら、バイトコード
によって行われる<特別>メソッドの実際の処理は、より
多くのステートメントを必要とする。これらのバイトコ
ードは、スタックを処理することにより、要求された静
的初期化を行うものである。スタックは、Javaプログラ
ミング環境の多くのメソッドにより使用されるメモリの
一部である。上述したスタック初期化の一例に使用され
る<特別>メソッドにより行われる各ステップを表3のコ
ードテーブル#3に示す。As described in the above code table, when a <special> method is described functionally, several statements are required. However, the actual processing of the <special> method performed by the bytecode requires more statements. These bytecodes perform the required static initialization by processing the stack. A stack is a piece of memory used by many methods in the Java programming environment. Each step performed by the <special> method used in an example of the stack initialization described above is shown in a code table # 3 of Table 3.
【0010】[0010]
【表3】 [Table 3]
【0011】<特別>メソッドの使用は、Java仮想マシン
に静的配列の初期化を行うように命令する方法を提供す
るが、その配列の初期化に必要なコード量は、そのサイ
ズの配列を何度も行うと相当量のメモリを必要とするこ
とになる。従って、静的初期化の手法を改善する必要が
ある。The use of the <special> method provides a way to instruct the Java virtual machine to initialize a static array, but the amount of code required to initialize the array is Doing so many times will require a significant amount of memory. Therefore, it is necessary to improve the method of static initialization.
【0012】本発明の解決しようとする課題は、配列の
静的初期化に必要なメモリ使用量を節約することができ
るデータ処理システムの配列の静的初期化方法、データ
処理方法並びにデータ処理システム及びその制御手順を
コンピュータに実行させるプログラムを記憶したコンピ
ュータ読み取り可能な記憶媒体を提供することにある。An object of the present invention is to provide a method for statically initializing an array, a data processing method, and a data processing system for a data processing system capable of saving a memory usage required for statically initializing an array. And a computer-readable storage medium storing a program for causing a computer to execute the control procedure.
【0013】[0013]
【課題を解決するための手段】上記課題を解決するため
に、本発明に係る請求項1に記載のデータ処理システム
の配列の静的初期化方法は、配列の静的初期化により当
該配列を静的値とするバイトコードを保持する特別メソ
ッド付きのクラスファイルを生成するために、当該静的
配列を保持するソースコードをコンパイルするコンパイ
ル工程と、前記クラスファイルをプリローダにより受信
する受信工程と、前記プリローダによって前記配列の静
的初期化を識別するために、メモリに対して前記特別メ
ソッドのバイトコードを擬似実行する擬似実行工程と、
前記配列の静的初期化を要求する命令を出力ファイルに
保存する保存工程と、前記配列の静的初期化を行うため
に仮想マシンに前記命令を解釈させる解釈工程とを備え
たことを要旨とするものである。According to a first aspect of the present invention, there is provided a method for statically initializing an array of a data processing system, comprising the steps of: A compiling step of compiling a source code holding the static array to generate a class file with a special method that holds a bytecode to be a static value; and a receiving step of receiving the class file by a preloader. A pseudo-execution step of pseudo-executing the bytecode of the special method on a memory to identify static initialization of the array by the preloader;
A gist comprising a saving step of saving an instruction requesting static initialization of the array in an output file, and an interpreting step of causing a virtual machine to interpret the instruction in order to perform static initialization of the array. Is what you do.
【0014】この場合に、前記保存工程は、請求項2に
記載されるように、コンスタント・プール・エントリをコ
ンスタント・プールに保存する保存工程を含むようにす
るとよい。[0014] In this case, the storing step may include a storing step of storing a constant pool entry in a constant pool.
【0015】また、前記擬似実行工程は、請求項3に記
載されるように、スタック割当工程と、前記スタックを
処理する特別メソッドからバイトコードを読み出す読出
工程と、前記割当スタック上でスタックを処理するスタ
ック処理工程とを含むようにするとよい。或いは、前記
擬似実行工程は、請求項4に記載されるように、変数割
当工程と、前記特別メソッドのローカル変数を処理する
当該特別メソッドからバイトコードを読み出す読出工程
と、前記割当変数上でローカル変数を処理するローカル
変数処理工程とを含むようにしてもよい。更に、これに
代えて、前記擬似実行工程は、請求項5に記載されるよ
うに、前記特別メソッドのコンスタント・プールへの参
照を取得する取得工程と、前記コンスタント・プールを
処理する特別メソッドからバイトコードを読み出す読出
工程と、前記コンスタント・プールを処理するコンスタ
ント・プール処理工程とを含めてもよい。The pseudo execution step may include a stack allocating step, a reading step of reading a bytecode from a special method for processing the stack, and a processing of the stack on the allocated stack. And a stack processing step. Alternatively, the pseudo execution step includes, as described in claim 4, a variable assignment step, a reading step of reading a bytecode from the special method for processing a local variable of the special method, and a local step on the assignment variable. A local variable processing step of processing a variable. Further alternatively, the pseudo-execution step may include, as described in claim 5, an acquisition step of acquiring a reference to a constant pool of the special method, and a special method of processing the constant pool. The method may include a reading step of reading a bytecode and a constant pool processing step of processing the constant pool.
【0016】次に、本発明に係る請求項6に記載のデー
タ処理方法は、オペレーションを行うために処理コンポ
ーネント上で実行されるコードを受信する受信工程と、
前記コードが前記処理コンポーネントにより実行された
とした場合の当該オペレーションを識別するために、当
該処理コンポーネント上で当該コードを実行することな
く当該コードを擬似実行する擬似実行工程と、前記オペ
レーションを行うために前記処理コンポーネントに対す
る命令を作成する作成工程とを備えたことを要旨とする
ものである。Next, a data processing method according to claim 6 of the present invention includes a receiving step of receiving a code executed on a processing component to perform an operation;
A pseudo-execution step of pseudo-executing the code without executing the code on the processing component to identify the operation when the code is executed by the processing component; and And a creating step of creating an instruction for the processing component.
【0017】上記構成を有する請求項6に記載のデータ
処理方法によれば、まず、オペレーションを行う処理コ
ンポーネント上で、実行されるべきコードが受信され
る。次に、このコードは、メモリ上で擬似実行される
が、この擬似実行は、当該処理コンポーネント上で当該
コードを実行することなくなされ、これにより、当該コ
ードが前記処理コンポーネントにより実行されたとした
場合の当該オペレーションが識別されることになる。そ
の後、当該処理コンポーネント用の指令が作成され、当
該オペレーションが行われることになる。According to the data processing method of the sixth aspect having the above configuration, first, a code to be executed is received on a processing component that performs an operation. Next, the code is simulated on the memory, but the simulated execution is performed without executing the code on the processing component, and thus, the code is executed by the processing component. Will be identified. Thereafter, a command for the processing component is created, and the operation is performed.
【0018】当該オペレーションがデータ構造を初期化
するものである場合には、請求項7に記載されるよう
に、前記擬似実行工程は、当該データ構造の初期化を識
別するために前記コードを擬似実行するものであるとよ
い。或いは、当該オペレーションが配列の静的初期化を
行うものである場合には、請求項8に記載されるよう
に、前記擬似実行工程は、当該配列の静的初期化を識別
するために前記コードを実行するものであるとよい。If the operation is to initialize a data structure, the simulated execution step may include simulating the code to identify initialization of the data structure. It is good to execute. Alternatively, if the operation is to perform a static initialization of the array, the pseudo-execution step may include executing the code to identify the static initialization of the array, as described in claim 8. Should be executed.
【0019】更に、請求項9に記載されるように、前記
オペレーション(データ構造の初期化や配列の静的初期
化等)を行うために前記処理コンポーネント上で、その
作成済命令を実行させる実行工程を含めるとよい。Further, as described in claim 9, execution for executing the created instruction on the processing component for performing the operation (initialization of a data structure, static initialization of an array, and the like). Steps may be included.
【0020】更に、請求項10に記載されるように、前
記オペレーション(データ構造の初期化や配列の静的初
期化等)を行うために仮想マシンにその作成済命令を解
釈させる解釈工程を含めるとよい。Further, the present invention includes an interpretation step for causing the virtual machine to interpret the created instruction in order to perform the operation (initialization of a data structure, static initialization of an array, and the like). Good.
【0021】また、前記オペレーション(データ構造の
初期化や配列の静的初期化)がメモリ効果を有する場合
には、請求項11に記載されるように、前記擬似実行工
程は、当該メモリ効果を識別するために、前記コードを
擬似実行するものであるとよい。In the case where the operation (initialization of a data structure or static initialization of an array) has a memory effect, the pseudo-execution step may include the memory effect. Preferably, the code is simulated for identification.
【0022】次に、本発明に係る請求項12に記載のデ
ータ処理システムは、記憶デバイスとメモリとを備え、
当該記憶デバイスは、データ構造の静的初期化を行うソ
ースコードを含むプログラムと、前記データ構造の静的
初期化を行う特別メソッドを保持するクラスファイルを
少なくとも1つ含むクラスファイルとを保持し、当該メ
モリは、前記プログラムをコンパイルして前記クラスフ
ァイルを生成するコンパイラと、前記クラスファイルを
統合し、前記特別メソッドが行う静的初期化を決定する
ために当該特別メソッドを擬似実行し、当該静的初期化
を行う命令を作成するプリローダと、前記コンパイラと
前記プリローダとを作動させるプロセッサとを備えたこ
とを要旨とするものである。Next, a data processing system according to a twelfth aspect of the present invention includes a storage device and a memory,
The storage device holds a program including a source code for performing static initialization of a data structure, and a class file including at least one class file holding a special method for performing static initialization of the data structure, The memory integrates the class file with a compiler that compiles the program to generate the class file, and simulates the special method to determine static initialization performed by the special method. The present invention comprises a preloader for creating an instruction for performing dynamic initialization, and a processor for operating the compiler and the preloader.
【0023】上記構成を有するデータ処理システムによ
れば、クラスファイルが統合される際に、プリローダに
より全ての<特別>メソッドが識別され、これらのメソッ
ドが擬似実行される。これにより、それらのメソッドに
より行われる静的初期化が決定される。次に、<特別>メ
ソッドにより行われる静的初期化を示す表現式が当該プ
リローダにより作成され、この表現式が.mクラスファイ
ルへ保存され、その<特別>メソッドと置き換えられる。
このようにして、多くの命令を保持する<特別>メソッド
のコードは、仮想マシンに対して静的初期化を行うよう
に命令する単一の表現式に置き換えられる。これによ
り、メモリの相当量が節約され、仮想マシンにより実行
されるコード量を減少させることができる。この場合、
仮想マシンは、この表現式を認識するように修正され、
適切な配列の静的初期化がこの仮想マシンにより行われ
ることになる。According to the data processing system having the above configuration, when the class files are integrated, all the <special> methods are identified by the preloader, and these methods are pseudo-executed. This determines the static initialization performed by those methods. Next, an expression indicating the static initialization performed by the <special> method is created by the preloader, and the expression is stored in the .m class file and replaced with the <special> method.
In this way, the code for the <special> method, which holds many instructions, is replaced by a single expression that instructs the virtual machine to perform static initialization. This saves a significant amount of memory and reduces the amount of code executed by the virtual machine. in this case,
The virtual machine has been modified to recognize this expression,
The appropriate array static initialization will be performed by this virtual machine.
【0024】この場合に、当該プリローダは、請求項1
3に記載されるように、その作成済命令を含む出力ファ
イルを生成するメカニズムを含むとよく、更に、当該メ
モリは、請求項14に記載されるように、その静的初期
化を行うために、当該作成済命令を解釈する仮想マシン
を含むとよい。[0024] In this case, the preloader is provided in claim 1.
Preferably, the memory comprises a mechanism for generating an output file containing the generated instructions, as described in claim 3, and the memory for performing its static initialization, as described in claim 14. And a virtual machine that interprets the created instruction.
【0025】また、前記データ構造は、請求項15に記
載されるように、配列であってもよい。そして、前記特
別メソッドは、請求項16に記載されるように、前記デ
ータ構造の静的初期化を行うバイトコードを有するとよ
い。また、前記作成済命令は、請求項17に記載される
ように、コンスタント・プールへのエントリを含むとよ
い。Further, the data structure may be an array. The special method may include a bytecode for performing static initialization of the data structure. Further, the created instruction may include an entry to a constant pool, as described in claim 17.
【0026】[0026]
【発明の実施の形態】本発明に係るシステム及び方法
は、<特別>メソッドを、当該<特別>メソッドと同一の静
的初期化を仮想マシンに行わせる1又は複数の指令(その
仮想マシンにより読み出された際に)に置き換えること
により、Javaプログラミング環境における配列の静的初
期化を行う改良システム及び方法を提供するものであ
る。この改良システム及び方法によれば、必要なメモリ
容量が少なくて済み且つ必要な時間も短くて済むもので
ある。その結果、配列の静的初期化を行う際のメモリの
除去が可能となり、メモリの有効利用が図られることに
なる。BEST MODE FOR CARRYING OUT THE INVENTION A system and method according to the present invention includes a <special> method and one or a plurality of instructions (by the virtual machine) for causing a virtual machine to perform the same static initialization as the <special> method. (When read) to provide an improved system and method for performing static initialization of arrays in the Java programming environment. The improved system and method requires less memory and requires less time. As a result, the memory can be removed when performing the static initialization of the array, and the memory can be effectively used.
【0027】[概略]本発明に係るシステム及び方法
は、プリローダにおいて所定の予備処理を行うことによ
り<特別>メソッドに対する必要性を除去するものであ
る。特に、プリローダは、統合用クラスファイルを受信
し、<特別>メソッドを検索しながらそれらをスキャンす
るものである。プリローダが<特別>メソッドを見つける
際、メモリに対して<特別>メソッド実行のシミュレーシ
ョン(即ち、"擬似実行")を行う。これは、Java仮想マシ
ンによって解釈されたとした場合のその<特別>メソッド
が有するメモリ効果を決定するためである。即ち、その
プリローダは、Java仮想マシンにより実行される<特別>
メソッドの結果となるであろう静的初期化を識別するた
めにその<特別>メソッド実行のシミュレーションを行う
ものである。この静的初期化を識別した後、プリローダ
は、その<特別>メソッドと同一の静的初期化を行わせる
ために1又は複数の指令(又は命令)を生成し、これらの
指令をJava仮想マシンに出力し、当該<特別>メソッドと
置き換えるものである。次に、これらの指令は、ランタ
イム時にJava仮想マシンによって読み出され、そのJava
仮想マシンにその<特別>メソッドにより行われたのと同
一の静的初期化を行わせる。その指令は、その<特別>メ
ソッドよりも、必要とするメモリスペースが相当量少な
くて済む。例えば、上述のコードテーブル#3に記述した
バイトコードは、.mクラスファイルに保持される次の指
令へ縮小されることになる。その.mクラスは、4つの整
数からなる配列で、初期値1, 2, 3, 4を保持している。 CONSTANT_Array T_INT 4 1 2 3 4 本実施形態である仮想マシンは、この表現式を認識し、
その配列の静的初期化を行い、その配列を所定値とす
る。その結果、その形態に係る仮想マシンは、従来の仮
想マシンに較べて、静的配列の初期化時に必要なメモリ
消費を除去することができる。[Overview] The system and method according to the present invention eliminates the need for a <special> method by performing a predetermined preprocessing in a preloader. In particular, the preloader receives the integration class files and scans them while searching for <special> methods. When the preloader finds the <special> method, it performs a simulation of the <special> method execution (ie, "pseudo execution") on the memory. This is to determine the memory effect of the <special> method if interpreted by the Java virtual machine. That is, the preloader is executed by the Java virtual machine <special>
It simulates the execution of the <special> method to identify any static initialization that might result in the method. After identifying this static initialization, the preloader generates one or more directives (or instructions) to perform the same static initialization as its <special> method and And replace it with the <special> method. These directives are then read by the Java virtual machine at run time,
Causes the virtual machine to perform the same static initialization done by the <special> method. The directive requires significantly less memory space than the <special> method. For example, the bytecode described in the above code table # 3 is reduced to the next command held in the .m class file. The .m class is an array of four integers, holding initial values 1, 2, 3, and 4. CONSTANT_Array T_INT 4 1 2 3 4 The virtual machine of this embodiment recognizes this expression and
The array is statically initialized, and the array is set to a predetermined value. As a result, the virtual machine according to the embodiment can eliminate the memory consumption required at the time of initialization of the static array as compared with the conventional virtual machine.
【0028】[実装の詳細]図2は、本発明に係るデー
タ処理システム200の構成を示したものである。データ
処理システム200は、コンピュータシステム202を備え、
このコンピュータシステム202は、インターネット204に
接続されている。コンピュータシステム202は、メモリ2
06、補助記憶デバイス208、中央処理ユニット(CPU)21
0、入力デバイス212、及びビデオディスプレイ214を含
むものである。メモリ206は、更に、JavaTMコンパイラ2
18、JavaTMプリローダ220、及びJavaTMランタイムシス
テム221を含むものである。JavaTMランタイムシステム2
21は、JavaTM仮想マシン222を含むものである。補助記
憶デバイス208は、ソースコード形態のプログラム224、
種々のクラスファイル226、及び.mクラスファイル228を
含むものである。JavaTMコンパイラ218は、プログラム2
24を1又は複数のクラスファイル226にコンパイルするも
のである。次に、プリローダ220は、クラスファイル226
を受信して.mクラスファイル228を生成する。その.mク
ラスファイルは、全てのクラスファイルを統合したもの
である。この統合により、その.mクラスファイル228
は、仮想マシン222上で実行可能となる。[Details of Implementation] FIG. 2 shows a configuration of a data processing system 200 according to the present invention. The data processing system 200 includes a computer system 202,
This computer system 202 is connected to the Internet 204. Computer system 202 has memory 2
06, auxiliary storage device 208, central processing unit (CPU) 21
0, an input device 212, and a video display 214. The memory 206 further includes a Java ™ compiler 2
18, including a Java ™ preloader 220 and a Java ™ runtime system 221. Java TM runtime system 2
21 includes a Java ™ virtual machine 222. The auxiliary storage device 208 includes a program 224 in the form of a source code,
Various class files 226 and .m class files 228 are included. Java TM Compiler 218
24 is compiled into one or more class files 226. Next, the preloader 220
And generates an .m class file 228. The .m class file is the union of all the class files. With this integration, the .m class file 228
Can be executed on the virtual machine 222.
【0029】本発明に係る処理は、プリローダ220によ
り行われるものであり、プリローダ220は、<特別>メソ
ッドを検索する。そして、その<特別>メソッドが見つか
った際に、プリローダ200は、(1)その<特別>メソッドが
仮想マシン222により解釈されたとした場合の当該<特別
>メソッドによるメモリ効果を決定するために当該<特別
>メソッドの実行をシミュレートし、(2)これらのメモリ
効果を複製する静的初期化指令を生成し、(3)その<特別
>メソッドと置き換えるために、.mクラスファイルにこ
れらの指令を出力するものである。これにより、相当量
のメモリが節約されることになる。The processing according to the present invention is performed by the preloader 220, and the preloader 220 searches for a <special> method. Then, when the <special> method is found, the preloader 200 performs (1) the <special> method when the <special> method is interpreted by the virtual machine 222.
> To determine the memory effect of the method
> Simulate the execution of a method, (2) generate static initialization directives that duplicate these memory effects, and (3)
> Output these directives to a .m class file to replace the methods. This will save a considerable amount of memory.
【0030】加えて、本発明に係る処理は、仮想マシン
222によって行われるものであるが、これは、プリロー
ダ200の静的初期化指令を認識するように仮想マシン222
を修正するためである。本発明の好適な実施形態は、メ
モリ206に記憶されているものとして説明されている
が、いわゆる当業者に自明であるように、その他のコン
ピュータ読み取り可能な媒体、例えば、補助記憶デバイ
ス(ハードディスク、フロッピーディスク、又はCD-ROM
等)、インターネット204からのキャリアウエイブ、又は
RAMやROM等のその他の形態の記憶デバイスに記憶させる
ようにしてもよい。更に、いわゆる当業者に自明である
ように、コンピュータ202が追加の又は異なるコンポー
ネントを含むものであってもよい。In addition, the processing according to the present invention is a virtual machine
This is performed by the virtual machine 222 so as to recognize the static initialization command of the preloader 200.
Is to correct. Although the preferred embodiment of the present invention is described as being stored in memory 206, as will be apparent to those skilled in the art, other computer readable media, such as auxiliary storage devices (hard disks, Floppy disk or CD-ROM
Etc.), carrier wave from the Internet 204, or
You may make it memorize | store in other forms of storage devices, such as RAM and ROM. Further, computer 202 may include additional or different components, as will be apparent to those skilled in the art.
【0031】[プリローダ]図3は、静的配列の初期化
を行うために本発明に係るプリローダ220によって行わ
れる工程のフローチャートを示したものである。プリロ
ーダ220により行われる第1の工程では、プリローダ220
は、<特別>メソッドを取得するために、クラスファイル
を読み出す(ステップ302)。<特別>メソッドを取得した
後、プリローダ220は、擬似実行中に使用する種々の変
数を割り当てる(ステップ304)。擬似実行に際しては、
以下に述べるように、プリローダ220は、<特別>メソッ
ドに保持されるバイトコードの仮想マシンによる実行を
シミュレートする。これらのバイトコードは、その<特
別>メソッドに関連付けられる種々のデータ構造を処理
するものであある。種々のデータ構造には、コンスタン
ト・プール、スタック又はローカル変数(又はレジスタ)
が含まれる。[Preloader] FIG. 3 is a flowchart showing the steps performed by the preloader 220 according to the present invention to initialize the static array. In the first step performed by the preloader 220, the preloader 220
Reads a class file to obtain a <special> method (step 302). After obtaining the <special> method, the preloader 220 assigns various variables to be used during the pseudo execution (step 304). At the time of pseudo execution,
As described below, the preloader 220 simulates execution of the bytecode held in the <special> method by the virtual machine. These bytecodes handle the various data structures associated with the <special> method. Various data structures include constant pools, stacks or local variables (or registers)
Is included.
【0032】コンスタント・プールは、可変長構造のテ
ーブルであり、種々のストリング定数、クラス名、フィ
ールド名、及びクラスファイル内で参照されるその他の
定数を表現するものである。スタックは、そのメソッド
の実行中にオペランドを記憶するのに使用するメモリの
一部である。従って、スタックサイズは、このメソッド
の実行中においては常にそのオペランドにより占有され
る最大スペースとなる。ローカル変数は、このメソッド
により使用される変数である。The constant pool is a table of variable length structure, and represents various string constants, class names, field names, and other constants referred to in the class file. The stack is the portion of memory used to store operands during the execution of the method. Therefore, the stack size is always the maximum space occupied by the operand during execution of this method. Local variables are the variables used by this method.
【0033】変数割当の際、プリローダ220は、<特別>
メソッドのコンスタント・プールに対するポインタを取
得し、スタックに適当なサイズを割り当て、配列を割り
当てる。その配列割当は、各配列の各エントリが各ロー
カル変数に対応するようになされる。以下に述べるよう
に擬似実行は、これらの変数を操作するものである。At the time of variable assignment, the preloader 220
Get a pointer to the method's constant pool, allocate an appropriate size for the stack, and allocate an array. The array assignment is made such that each entry of each array corresponds to each local variable. Pseudo execution operates on these variables as described below.
【0034】変数を割当た後、プリローダ220は、<特別
>メソッドからバイトコードを読み出す(ステップ306)。
次に、プリローダ220は、そのバイトコードを認識する
か否かを決定する(ステップ308)。このステップにおい
ては、プリローダ220は、全てのバイトコードのサブセ
ットを認識する。ここで、このサブセットは、配列の静
的初期化を行うのに通常用いられるバイトコードのみを
保持するものである。以下に示すものは、好適な実施形
態に係るプリローダ220により認識されるバイトコード
のリストを示したものである。After assigning the variables, the preloader 220
> Read the bytecode from the method (step 306).
Next, the preloader 220 determines whether to recognize the bytecode (step 308). In this step, the preloader 220 recognizes a subset of all bytecodes. Here, this subset holds only byte codes that are normally used for performing static initialization of the array. The following is a list of bytecodes recognized by the preloader 220 according to the preferred embodiment.
【0035】[0035]
【表4】 [Table 4]
【0036】上記にリストしたバイトコード以外のバイ
トコードは、認識されない。上述した以外のその他のバ
イトコードは、<特別>メソッドが配列の静的初期化に対
して追加機能を行うものであることを示している。この
場合、<特別>メソッドは、最適化され得ない。バイトコ
ードが認識されないと、プリローダ220は、最適化(擬似
実行)に不適であると判断し、処理は、ステップ316へ続
く。Bytecodes other than those listed above are not recognized. Other bytecodes other than those described above indicate that the <special> method performs an additional function for static initialization of the array. In this case, the <special> method cannot be optimized. If the bytecode is not recognized, the preloader 220 determines that the bytecode is not suitable for optimization (pseudo execution), and the processing continues to step 316.
【0037】プリローダ220がバイトコードを認識する
場合には、プリローダ220は、そのバイトコードにより
反映されるオペレーションを擬似実行する(ステップ31
0)。このステップにおいては、プリローダ220は、ステ
ップ304において割り当てた変数に基づいてそのバイト
コードを擬似実行する。その結果、ある値がスタックか
らポップされ、ローカル変数は更新され、あるいは、コ
ンスタント・プールからある値が取り出されることにな
る。加えて、プリローダ220は、特定の静的変数が特定
の手法で初期化されるべきことを示す"put static"バイ
トコードに出くわすことになる。プリローダ220がこの
ようなバイトコードを受信する場合、プリローダ220
は、後で使用するハッシュテーブルへ要求された初期化
指示を保存する。ハッシュテーブルは、次の通りであ
る。Setup: =Array(1,2,3,4)If the preloader 220 recognizes the bytecode, the preloader 220 simulates the operation reflected by the bytecode (step 31).
0). In this step, the preloader 220 simulates the bytecode based on the variable assigned in step 304. As a result, a value is popped off the stack, a local variable is updated, or a value is retrieved from the constant pool. In addition, the preloader 220 will encounter a "put static" bytecode indicating that a particular static variable should be initialized in a particular manner. If the preloader 220 receives such a bytecode, the preloader 220
Saves the requested initialization instructions in a hash table for later use. The hash table is as follows. Setup: = Array (1,2,3,4)
【0038】そのバイトコードにより反映されたオペレ
ーションを行った後、プリローダ220は、<特別>メソッ
ド内に更にバイトコードがあるかどうか決定する(ステ
ップ314)。まだバイトコードがある場合、処理は、ステ
ップ306へ戻る。しかしながら、更なるバイトコードが
ない場合、プリローダ220は、配列の静的初期化を行う
ために指令を.mクラスファイルへ保存する(ステップ31
8)。このステップにおいては、プリローダ220は、コン
スタント・プール・エントリを次のようにして.mクラス
ファイルへ保存する。 After performing the operation reflected by the bytecode, the preloader 220 determines whether there are any more bytecodes in the <special> method (step 314). If there is still a bytecode, the process returns to step 306. However, if there are no more bytecodes, the preloader 220 saves the instructions in the .m class file to perform static initialization of the array (step 31).
8). In this step, the preloader 220 saves the constant pool entry in the .m class file as follows.
【0039】そのコンスタント・プールのこのエントリ
は、特定の配列が4つの整数−その初期値がそれぞれ1,
2,3,4である−を保持することを示す。実行時において
は、仮想マシンは、そのクラスファイルを.mクラスファ
イルに初期化する場合に、このコンスタント・プールへ
の参照に出くわし、適当な配列を生成する。その結果、
その<特別>メソッドに保持される多くの命令が除去さ
れ、1つの表現式として表されることになる。これによ
り、相当量のメモリが節約され、必要な時間が短縮され
ることになる。This entry in the constant pool contains a specific array of four integers-each having an initial value of 1,
2, 3, 4 indicates that-is retained. At run time, the virtual machine encounters a reference to this constant pool when it initializes its class file to a .m class file and creates the appropriate array. as a result,
Many instructions held in the <special> method have been removed and will be represented as a single expression. This saves a considerable amount of memory and reduces the required time.
【0040】[プリローダの実装例]以下の表5から表
7(コードテーブル#5)に示した仮コードは、好適な実施
形態に係るプリローダの処理の一例を説明したものであ
る。プリローダ220は、"Java TM仮想マシン仕様"104-106
頁に記載されているように、<特別>メソッドを定義する
メソッド情報のデータ構造をパラメータとして受信す
る。そして、プリローダ220は、この<特別>メソッドの
バイトコードを擬似実行する。尚、ここで説明するの
は、実施形態の一例についてであることに留意された
い。即ち、2, 3個のバイトコードがプリローダ220によ
り処理されるものとして以下説明を行うということであ
る。しかしながら、コードテーブル#4の全てのバイトコ
ードが本実施形態により処理可能なものであることは、
いわゆる当業者にとって自明のことである。[Example of implementation of preloader]
The temporary code shown in Table 7 (code table # 5)
FIG. 4 illustrates an example of a preloader process according to the embodiment.
You. Preloader 220, "Java TMVirtual machine specification "104-106
Define a <special> method as described on the page
Receive the data structure of method information as a parameter
You. Then, the preloader 220
Performs bytecode simulation. It ’s worth explaining here.
Was noted as an example of an embodiment.
No. That is, a few bytecodes are
In the following, it is assumed that
You. However, all byte codes in code table # 4
That the code can be processed by this embodiment,
It is obvious to those skilled in the art.
【0041】[0041]
【表5】 [Table 5]
【0042】[0042]
【表6】 [Table 6]
【0043】[0043]
【表7】 [Table 7]
【0044】[実施形態に係る仮想マシン]上述したよ
うに、Java仮想マシン222は、以下に説明する点につい
て修正が加えられる以外は、"JavaTM仮想マシン仕様"で
定義される標準のJava仮想マシンであればよい。従来の
仮想マシンは、種々のコンスタント・プール・エントリ、
例えば、CONSTANT_Integer, CONSTANT_String, 及びCON
STANT_Long等、を認識するものである。これらの型のコ
ンスタント・プール・エントリは、種々の変数情報を保持
するものであり、その初期値も含むものである。しかし
ながら、実施形態に係る仮想マシンは、更に、コンスタ
ント・プールのCONSTANT_Arrayエントリをも認識するも
のである。[Virtual Machine According to Embodiment] As described above, the Java virtual machine 222 is a standard Java virtual machine defined in the "Java TM virtual machine specification" except that the following points are modified. Any machine is acceptable. Traditional virtual machines have various constant pool entries,
For example, CONSTANT_Integer, CONSTANT_String, and CON
STANT_Long, etc. These types of constant pool entries hold various types of variable information and also include their initial values. However, the virtual machine according to the embodiment also recognizes the CONSTANT_Array entry of the constant pool.
【0045】クラスファイルフォーマットにおけるコン
スタント・プール・エントリのCONSTANT_Arrayのフォーマ
ットは、以下の通りである。The format of the constant pool entry CONSTANT_Array in the class file format is as follows.
【0046】[0046]
【表8】 [Table 8]
【0047】u1型フィールドは、表9に示したテーブル
にリストされた値のいずれかである。The u1 type field is one of the values listed in the table shown in Table 9.
【0048】[0048]
【表9】 [Table 9]
【0049】フィールドuxオブジェクト[長さ]は、値の
配列であり、その配列要素を提供するものである。その
配列中の要素数は、コンスタント・プール・エントリの長
さフィールドにより与えられるものである。これらの値
の実際のサイズは、次の表10に示す通りである。The field ux object [length] is an array of values and provides the array elements. The number of elements in the array is given by the length field of the constant pool entry. The actual sizes of these values are as shown in Table 10 below.
【0050】[0050]
【表10】 [Table 10]
【0051】表10に示したバイトは、T_CLASS以外の
型については、配列の要素に保存される実際の値であ
る。一方、T_CLASSについては、各u2は、それ自体がコ
ンスタント・プールのエントリに対するインデックスで
ある。参照されるコンスタント・プール・エントリは、CO
NSTANT_Array、CONSTANT_Object、又はNULL値を示す特
別コンスタント・プールエントリ0のいずれかでなければ
ならない。The bytes shown in Table 10 are the actual values stored in the array elements for types other than T_CLASS. On the other hand, for T_CLASS, each u2 is itself an index to a constant pool entry. The referenced constant pool entry is CO
Must be one of NSTANT_Array, CONSTANT_Object, or a special constant pool entry 0 indicating a null value.
【0052】例えば、配列 int[] = {10, 20, 30, 40}; を示すには、コンスタント・プール・エントリは、次のよ
うになる。 タグ 型 サイズ 初期値 CONSTANT_Array T_INT 4 10 20 30 40For example, to show the array int [] = {10, 20, 30, 40}; the constant pool entry would be as follows: Tag Type Size Initial value CONSTANT_Array T_INT 4 10 20 30 40
【0053】他の例としては、配列 new Foo[3] /*全てNULLに初期化済み*/ を示すには、コンスタント・プール・エントリは、次のよ
うになる。 タグ 型 サイズ 初期値 クラス CONSTANT_Array T_CLASS 3 0 0 0 xx ここで、"xx"は、コンスタント・プール内のクラスFooを
示すコンスタント・プールのインデックスである。As another example, to indicate the array new Foo [3] / * all have been initialized to NULL * /, the constant pool entry would be: Tag Type Size Initial value Class CONSTANT_Array T_CLASS 3 0 0 0 xx Here, “xx” is an index of the constant pool indicating the class Foo in the constant pool.
【0054】二次元配列は次の通りである。 new byte[][]={{1, 2, 3, 4}, {5, 6, 7, 8}}; この二次元配列は、副次的配列を符号化する2つのコン
スタント・プール・エントリを保持することにより、ま
た、その副次的配列間の関連を示す2つの追加エントリ
を保持することにより、符号化されるものである。この
符号化は、オブジェクトの型としてのJavaTMの配列概
念、及び配列の配列としての多次元配列に対応してい
る。上記の二次元配列のコンスタント・プール・エントリ
は、次の通りである。 Entry1: CONSTANT_Array T_BYTE 4 1 2 3 4 Entry2: CONSTANT_Array T_BYTE 4 5 6 7 8 Entry3: CONSTANT_Class with name "[[B" タグ 型 サイズ 初期値 クラス Entry 4: CONSTANT_Array T_CLASS 2 Entry1 Entry 2 Entry 3 ここで、Entry1, Entry2及びEntry3は、対応するコンス
タント・プール・エントリのインデックスの2バイトで符
号化したものである。The two-dimensional array is as follows. new byte [] [] = {{1, 2, 3, 4}, {5, 6, 7, 8}}; This two-dimensional array has two constant pool entries that encode the sub-arrays , And by holding two additional entries that indicate the association between the subsequences. This encoding corresponds to the array concept of Java ™ as an object type and a multidimensional array as an array of arrays. The constant pool entry of the above two-dimensional array is as follows. Entry1: CONSTANT_Array T_BYTE 4 1 2 3 4 Entry2: CONSTANT_Array T_BYTE 4 5 6 7 8 Entry3: CONSTANT_Class with name "[[B" Tag type Size Initial value Class Entry 4: CONSTANT_Array T_CLASS 2 Entry1 Entry2 Entry2 Entry3 where Entry1, Entry2 and Entry3 are coded with 2 bytes of the index of the corresponding constant pool entry.
【0055】以上、本発明に係るシステム及び方法につ
いて好適な実施の形態に基づいて説明したが、本発明が
この実施形態に限定されるものでないことは、いわゆる
当業者にとっては、自明である。種々の変形例が本発明
の趣旨に従って可能である。尚、本発明の範囲は、特許
請求の範囲によって定められる。Although the system and method according to the present invention have been described based on the preferred embodiments, it is obvious to those skilled in the art that the present invention is not limited to the embodiments. Various modifications are possible in accordance with the spirit of the invention. The scope of the present invention is defined by the appended claims.
【0056】[0056]
【発明の効果】以上説明したように、本発明に係る請求
項1に記載のデータ処理システムの配列の静的初期化方
法によれば、配列の静的初期化により当該配列を静的値
とするバイトコードを保持する特別メソッド付きのクラ
スファイルを生成するために、当該静的配列を保持する
ソースコードをコンパイルするコンパイル工程と、前記
クラスファイルをプリローダにより受信する受信工程
と、前記プリローダによって前記配列の静的初期化を識
別するために、メモリに対して前記特別メソッドのバイ
トコードを擬似実行する擬似実行工程と、前記配列の静
的初期化を要求する命令を出力ファイルに保存する保存
工程と、前記配列の静的初期化を行うために仮想マシン
に前記命令を解釈させる解釈工程とを備えたので、配列
の静的初期化に必要なメモリ使用量を節約することがで
きる。As described above, according to the method for statically initializing an array of the data processing system according to the first aspect of the present invention, the array is statically initialized by the static initialization of the array. A compiling step of compiling a source code holding the static array to generate a class file with a special method for holding a bytecode to be executed; a receiving step of receiving the class file by a preloader; A pseudo-execution step of pseudo-executing the bytecode of the special method on a memory to identify a static initialization of an array, and a storage step of storing an instruction requesting the static initialization of the array in an output file And an interpretation step for causing a virtual machine to interpret the instruction in order to perform static initialization of the array, which is necessary for static initialization of the array. It is possible to save the memory usage.
【0057】本発明に係る請求項6に記載のデータ処理
方法によれば、オペレーションを行うために処理コンポ
ーネント上で実行されるコードを受信する受信工程と、
前記コードが前記処理コンポーネントにより実行された
とした場合の当該オペレーションを識別するために、当
該処理コンポーネント上で当該コードを実行することな
く当該コードを擬似実行する擬似実行工程と、前記オペ
レーションを行うために前記処理コンポーネントに対す
る命令を作成する作成工程とを備えたので、配列の静的
初期化に必要なメモリ使用量を節約することができる。According to the data processing method of claim 6 of the present invention, a receiving step of receiving a code executed on a processing component to perform an operation;
A pseudo-execution step of pseudo-executing the code without executing the code on the processing component to identify the operation when the code is executed by the processing component; and And a creating step of creating an instruction for the processing component, so that the memory usage required for static initialization of the array can be saved.
【0058】本発明に係る請求項12に記載のデータ処
理システムによれば、クラスファイルが統合される際
に、プリローダにより全ての<特別>メソッドが識別さ
れ、これらのメソッドが擬似実行され、それらのメソッ
ドにより行われる静的初期化が決定される。次に、<特
別>メソッドにより行われる静的初期化を示す単一の表
現式が当該プリローダにより作成され、この単一の表現
式が.mクラスファイルへ保存され、その<特別>メソッド
と置き換えられる。これにより、多くの命令を保持する
<特別>メソッドのコードが、仮想マシンに対して静的初
期化を行うように命令する単一の表現式に置き換えられ
るため、仮想マシンにより実行されるコード量を減少さ
せることができ、配列の静的初期化に必要なメモリ使用
量を節約することができる。According to the data processing system of the present invention, when the class files are integrated, all the <special> methods are identified by the preloader, and these methods are pseudo-executed. Static initialization performed by the method is determined. Next, a single expression that indicates the static initialization performed by the <special> method is created by the preloader, and this single expression is saved in the .m class file and replaced with the <special> method. Can be This keeps many instructions
The code in the <special> method is replaced with a single expression that instructs the virtual machine to perform static initialization, thus reducing the amount of code executed by the virtual machine and The memory usage required for static initialization can be saved.
【0059】本発明に係る方法及びシステムによれば、
処理に必要な時間も短縮されることから、本発明は、情
報通信産業の更なる進展に極めて有益なものである。According to the method and system according to the present invention,
The present invention is extremely useful for the further development of the information and communication industry because the time required for processing is also reduced.
【図1】Javaプログラム環境におけるプログラム開発工
程のフローチャートである。FIG. 1 is a flowchart of a program development process in a Java program environment.
【図2】本発明に係るデータ処理システムの構成図であ
る。FIG. 2 is a configuration diagram of a data processing system according to the present invention.
【図3】図2に示したプリローダによって行われる工程
のフローチャートである。FIG. 3 is a flowchart of a process performed by a preloader shown in FIG. 2;
200 データ処理システム 202 コンピュータシステム 204 インターネット 206 メモリ 208 補助記憶デバイス 210 CPU 212 入力デバイス 214 ビデオディスプレイ 218 コンパイラ 220 プリローダ 221 Javaランタイムシステム 224 プログラム 226 クラスファイル 228 .mクラスファイル 200 data processing system 202 computer system 204 internet 206 memory 208 auxiliary storage device 210 CPU 212 input device 214 video display 218 compiler 220 preloader 221 Java runtime system 224 program 226 class file 228 .m class file
───────────────────────────────────────────────────── フロントページの続き (72)発明者 タック リチャード ディー アメリカ合衆国 94114 カリフォルニア 州、サン フランシスコ、ヒル ストリー ト 343 (54)【発明の名称】 デ―タ処理システムの配列の静的初期化方法、デ―タ処理方法、並びにデ―タ処理システム及び その制御手順をコンピュ―タに実行させるプログラムを記憶したコンピュ―タ読み取り可能な記 憶媒体 ────────────────────────────────────────────────── ─── Continued on the front page (72) Inventor Tuck Richard Dee United States 94114 California, Hill Street, San Francisco 343 (54) [Title of Invention] Static initialization method of array of data processing system, data -Data processing method, data processing system, and computer-readable storage medium storing a program for causing the computer to execute the control procedure
Claims (23)
値とするバイトコードを保持する特別メソッド付きのク
ラスファイルを生成するために、当該静的配列を保持す
るソースコードをコンパイルするコンパイル工程と、 前記クラスファイルをプリローダにより受信する受信工
程と、 前記プリローダによって前記配列の静的初期化を識別す
るために、メモリに対して前記特別メソッドのバイトコ
ードを擬似実行する擬似実行工程と、 前記配列の静的初期化を要求する命令を出力ファイルに
保存する保存工程と、 前記配列の静的初期化を行うために仮想マシンに前記命
令を解釈させる解釈工程とを備えたことを特徴とするデ
ータ処理システムの配列の静的初期化方法。1. A compile that compiles source code holding a static array in order to generate a class file with a special method that holds a bytecode having the array as a static value by statically initializing the array. A receiving step of receiving the class file by a preloader; and a pseudo execution step of pseudo executing the bytecode of the special method with respect to a memory in order to identify a static initialization of the array by the preloader. A storage step of storing an instruction requesting static initialization of the array in an output file; andan interpretation step of causing a virtual machine to interpret the instruction to perform static initialization of the array. Static initialization method of array of data processing system.
に保存する保存工程を含むことを特徴とする請求項1に
記載されるデータ処理システムの配列の静的初期化方
法。2. The method according to claim 1, wherein the storing step includes a storing step of storing a constant pool entry in a constant pool.
を読み出す読出工程と、 前記割当スタック上でスタックを処理するスタック処理
工程とを含むことを特徴とする請求項1に記載されるデ
ータ処理システムの配列の静的初期化方法。3. The pseudo execution step includes: a stack allocating step; a reading step of reading a bytecode from a special method for processing the stack; and a stack processing step of processing a stack on the allocated stack. The method for statically initializing an array of a data processing system according to claim 1, wherein:
ソッドからバイトコードを読み出す読出工程と、 前記割当変数上でローカル変数を処理するローカル変数
処理工程とを含むことを特徴とする請求項1に記載され
るデータ処理システムの配列の静的初期化方法。4. The pseudo execution step includes: a variable assignment step; a reading step of reading a bytecode from the special method for processing a local variable of the special method; and a local variable processing for processing a local variable on the assignment variable. 2. The method according to claim 1, further comprising the steps of:
得する取得工程と、 前記コンスタント・プールを処理する特別メソッドから
バイトコードを読み出す読出工程と、 前記コンスタント・プールを処理するコンスタント・プー
ル処理工程とを備えたことを特徴とする請求項1に記載
されるデータ処理システムの配列の静的初期化方法。5. The quasi-execution step: an acquisition step of acquiring a reference to a constant pool of the special method; a reading step of reading a bytecode from the special method of processing the constant pool; 2. The method according to claim 1, further comprising a constant pool processing step of processing the data.
ーネント上で実行されるコードを受信する受信工程と、 前記コードが前記処理コンポーネントにより実行された
とした場合の当該オペレーションを識別するために、当
該処理コンポーネント上で当該コードを実行することな
く当該コードを擬似実行する擬似実行工程と、 前記オペレーションを行うために前記処理コンポーネン
トに対する命令を作成する作成工程とを備えたことを特
徴とするデータ処理方法。6. A receiving step for receiving code to be executed on a processing component to perform an operation; and on the processing component to identify the operation if the code was executed by the processing component. A data processing method, comprising: a pseudo-execution step of pseudo-executing the code without executing the code; and a creation step of creating an instruction for the processing component to perform the operation.
期化し、 前記擬似実行工程は、当該データ構造の初期化を識別す
るために、前記コードを擬似実行する擬似実行工程を含
むことを特徴とする請求項6に記載されるデータ処理方
法。7. The method of claim 1, wherein the operation initializes a data structure, and the step of simulating includes simulating the code to identify the initialization of the data structure. Item 6. A data processing method according to Item 6.
化を行い、 前記擬似実行工程は、当該配列の静的初期化を識別する
ために前記コードを実行する擬似実行工程を含むことを
特徴とする請求項6に記載されるデータ処理方法。8. The method of claim 1, wherein the operation performs a static initialization of the array, and the pseudo-execution step includes a pseudo-execution step of executing the code to identify the static initialization of the array. 7. The data processing method according to claim 6, wherein:
前記処理コンポーネント上で、その作成済命令を実行さ
せる実行工程を含むことを特徴とする請求項6に記載さ
れるデータ処理方法。9. The data processing method according to claim 6, further comprising the step of executing the created instruction on the processing component to perform the operation.
に仮想マシンに、その作成済命令を解釈させる解釈工程
を含むことを特徴とする請求項6に記載されるデータ処
理方法。10. The data processing method according to claim 6, further comprising an interpreting step of causing a virtual machine to interpret the created instruction to perform the operation.
有し、 前記擬似実行工程は、前記メモリ効果を識別するため
に、前記コードを擬似実行する擬似実行工程を含むこと
を特徴とする請求項6に記載されるデータ処理方法。11. The method of claim 6, wherein the operation has a memory effect, and wherein the pseudo-execution step includes a pseudo-execution step of pseudo-executing the code to identify the memory effect. Data processing method described.
ータ処理システムであって、 前記記憶デバイスは、 データ構造の静的初期化を行うソースコードを含むプロ
グラムと、 前記データ構造の静的初期化を行う特別メソッドを保持
するクラスファイルを少なくとも1つ含むクラスファイ
ルとを保持し、 前記メモリは、 前記プログラムをコンパイルして前記クラスファイルを
生成するコンパイラと、 前記クラスファイルを統合し、前記特別メソッドが行う
静的初期化を決定するために当該特別メソッドを擬似実
行し、当該静的初期化を行う命令を作成するプリローダ
と、 前記コンパイラと前記プリローダとを作動させるプロセ
ッサとを備えたことを特徴とするデータ処理システム。12. A data processing system comprising a storage device and a memory, wherein the storage device includes a program including a source code for performing a static initialization of a data structure; and a static initialization of the data structure. A class file that includes at least one class file that holds a special method that performs a special method. The memory integrates the class file with a compiler that compiles the program to generate the class file. A preloader that simulates the special method to determine the static initialization to be performed and creates an instruction to perform the static initialization; and a processor that operates the compiler and the preloader. And a data processing system.
含む出力ファイルを生成するメカニズムを含むことを特
徴とする請求項12に記載されるデータ処理システム。13. The data processing system according to claim 12, wherein the preloader includes a mechanism for generating an output file including the created instruction.
を行うために、その作成済命令を解釈する仮想マシンを
含むことを特徴とする請求項13に記載されるデータ処
理システム。14. The data processing system according to claim 13, wherein the memory further includes a virtual machine that interprets the created instruction to perform the static initialization.
特徴とする請求項12に記載されるデータ処理システ
ム。15. The data processing system according to claim 12, wherein said data structure is an array.
の静的初期化を行うバイトコードを有することを特徴と
する請求項12に記載されるデータ処理システム。16. The data processing system according to claim 12, wherein the special method has a bytecode for performing static initialization of the data structure.
ールへのエントリを含むことを特徴とする請求項12に
記載されるデータ処理システム。17. The data processing system according to claim 12, wherein the created instruction includes an entry to a constant pool.
ポーネント上で実行されるコードを受信する受信手順
と、 前記コードが前記処理コンポーネントにより実行された
とした場合の当該オペレーションを識別するために、当
該処理コンポーネント上で当該コードを実行することな
く当該コード擬似実行するシミュレーション手順と、 前記オペレーションを行うために前記処理コンポーネン
トに対する命令を作成する作成手順とからなるデータ処
理システムの制御手順をコンピュータに実行させるプロ
グラムを記憶したコンピュータ読み取り可能な記憶媒
体。18. A receiving procedure for receiving a code to be executed on a processing component to perform an operation, and on the processing component to identify the operation if the code was executed by the processing component. A program for causing a computer to execute a control procedure of a data processing system including a simulation procedure of simulating the code without executing the code and a creation procedure of creating an instruction for the processing component to perform the operation is stored. Computer readable storage medium.
初期化し、 前記シミュレーション手順は、当該データ構造の初期化
を識別するために、前記コードを擬似実行するシミュレ
ーション手順を含むことを特徴とする請求項18に記載
されるコンピュータ読み取り可能な記憶媒体。19. The method according to claim 18, wherein the operation initializes a data structure, and wherein the simulation procedure includes a simulation procedure of simulating the code to identify the initialization of the data structure. A computer-readable storage medium according to claim 1.
期化を行い、 前記シミュレーション手順は、当該配列の静的初期化を
識別するために前記コードを擬似実行するシミュレーシ
ョン手順を含むことを特徴とする請求項18に記載され
るコンピュータ読み取り可能な記憶媒体。20. The method of claim 20, wherein the operation performs a static initialization of the array, and wherein the simulation procedure includes a simulation procedure of simulating the code to identify the static initialization of the array. The computer-readable storage medium according to claim 18.
に前記処理コンポーネント上で、その作成済命令を実行
させる実行工程を含むことを特徴とする請求項18に記
載されるコンピュータ読み取り可能な記憶媒体。21. The computer-readable storage medium of claim 18, further comprising an execution step of executing the created instruction on the processing component to perform the operation.
に仮想マシンに、その作成済命令を解釈させる解釈工程
を含むことを特徴とする請求項18に記載されるコンピ
ュータ読み取り可能な記憶媒体。22. The computer-readable storage medium according to claim 18, further comprising an interpretation step for causing a virtual machine to interpret the created instruction to perform the operation.
有し、 前記シミュレーション手順は、前記メモリ効果を識別す
るために、前記コードを擬似実行するシミュレーション
手順を含むことを特徴とする請求項18に記載されるコ
ンピュータ読み取り可能な記憶媒体。23. The method of claim 18, wherein the operation has a memory effect, and wherein the simulation procedure includes a simulation procedure of simulating the code to identify the memory effect. Computer-readable storage medium.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/055,947 US6061520A (en) | 1998-04-07 | 1998-04-07 | Method and system for performing static initialization |
| US09/055947 | 1998-04-07 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2000035893A true JP2000035893A (en) | 2000-02-02 |
| JP4699580B2 JP4699580B2 (en) | 2011-06-15 |
Family
ID=22001182
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP09830699A Expired - Lifetime JP4699580B2 (en) | 1998-04-07 | 1999-04-06 | Method for static initialization of data processing system array, data processing method, and computer-readable storage medium storing data processing system and program for causing computer to execute control procedure thereof |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US6061520A (en) |
| EP (1) | EP0949566B1 (en) |
| JP (1) | JP4699580B2 (en) |
| KR (1) | KR100624248B1 (en) |
| CN (1) | CN1119756C (en) |
| DE (1) | DE69936953D1 (en) |
Families Citing this family (31)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0932865B1 (en) * | 1996-10-25 | 2002-08-14 | SCHLUMBERGER Systèmes | Using a high level programming language with a microcontroller |
| US6658492B1 (en) * | 1998-03-20 | 2003-12-02 | Sun Microsystems, Inc. | System and method for reducing the footprint of preloaded classes |
| GB2343021A (en) * | 1998-10-19 | 2000-04-26 | Ibm | Class loading model for object oriented programming |
| EP1128263B1 (en) * | 2000-02-21 | 2010-05-19 | Panasonic Corporation | Linking of Java class files for embedded devices |
| US6813762B1 (en) * | 2000-02-22 | 2004-11-02 | Freescale Semiconductor, Inc. | Method for processing program files in a programming language capable of dynamic loading |
| US6760019B1 (en) | 2000-06-01 | 2004-07-06 | Sun Microsystems, Inc. | Methods and apparatus for facilitating the sharing of computer graphics operations |
| US6915508B2 (en) * | 2000-06-12 | 2005-07-05 | Sun Microsystems, Inc. | Method and apparatus for eliminating C recursion from a Java™ bytecode interpreter |
| US6978448B1 (en) * | 2000-06-12 | 2005-12-20 | Sun Microsystems, Inc. | Method and apparatus for rewriting bytecodes to minimize runtime checks |
| US6832369B1 (en) * | 2000-08-01 | 2004-12-14 | International Business Machines Corporation | Object oriented method and apparatus for class variable initialization |
| US7080373B2 (en) * | 2001-03-07 | 2006-07-18 | Freescale Semiconductor, Inc. | Method and device for creating and using pre-internalized program files |
| JP2005515520A (en) * | 2001-05-30 | 2005-05-26 | リサーチ イン モーション リミテッド | Mobile communication device application processing system |
| US7197750B2 (en) * | 2001-06-28 | 2007-03-27 | Sun Microsystems, Inc. | Java Bytecode instruction for determining hashcode values |
| GB0125176D0 (en) * | 2001-10-19 | 2001-12-12 | Koninkl Philips Electronics Nv | A method of compiling bytecode to native code |
| US7450631B2 (en) * | 2001-10-26 | 2008-11-11 | Intel Corporation | Metric correction for multi user detection, for long codes DS-CDMA |
| US7272827B2 (en) * | 2002-04-03 | 2007-09-18 | International Business Machines Corporation | Statically detecting externally referenced interfaces of a program |
| US7051323B2 (en) * | 2002-10-08 | 2006-05-23 | Sun Microsystems, Inc. | Method and apparatus for initializing romized system classes at virtual machine build time |
| KR100493893B1 (en) * | 2003-02-07 | 2005-06-10 | 삼성전자주식회사 | System and method of shortening class loading process in java program |
| CA2434280A1 (en) * | 2003-07-03 | 2005-01-03 | Zhong L. Wang | Method and apparatus to guarantee type and initialization safety in multihreaded programs |
| KR100697635B1 (en) * | 2003-12-19 | 2007-03-20 | 한국전자통신연구원 | Recording medium recording integrated byte code for array access in Java virtual machine, integrated byte code execution method and mapping method |
| KR100654428B1 (en) * | 2004-01-14 | 2006-12-06 | 삼성전자주식회사 | System and Method for Improving Processing Speed of Java Program |
| US20090070752A1 (en) * | 2007-09-06 | 2009-03-12 | International Business Machines Corporation | Method and system for optimization of an application |
| JP2009181558A (en) * | 2008-02-01 | 2009-08-13 | Panasonic Corp | Program converter |
| US8316357B2 (en) * | 2008-09-03 | 2012-11-20 | Microsoft Corporation | Type descriptor management for frozen objects |
| US8769518B1 (en) | 2010-06-29 | 2014-07-01 | Ca, Inc. | Ensuring determinism during programmatic replay in a virtual machine |
| CA2759516C (en) | 2011-11-24 | 2019-12-31 | Ibm Canada Limited - Ibm Canada Limitee | Serialization of pre-initialized objects |
| US8813018B1 (en) | 2012-10-05 | 2014-08-19 | Altera Corporation | Method and apparatus for automatically configuring memory size |
| US10540148B2 (en) * | 2014-06-12 | 2020-01-21 | Oracle International Corporation | Complex constants |
| US10503525B2 (en) | 2017-08-22 | 2019-12-10 | Refinitiv Us Organization Llc | Apparatuses, methods and systems for persisting values in a computing environment |
| CN110297666B (en) * | 2019-06-21 | 2022-06-17 | 百度在线网络技术(北京)有限公司 | Thermal restoration method, device, system and storage medium |
| CN111400736B (en) * | 2020-03-17 | 2022-07-22 | 同盾(广州)科技有限公司 | Application program encryption method and device, storage medium and electronic equipment |
| US11809839B2 (en) | 2022-01-18 | 2023-11-07 | Robert Lyden | Computer language and code for application development and electronic and optical communication |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0773044A (en) * | 1993-09-02 | 1995-03-17 | Mitsubishi Electric Corp | Optimizing compiling method and optimizing compiling device |
| JPH1040107A (en) * | 1995-12-08 | 1998-02-13 | Sun Microsyst Inc | System and method for transit time optimization of private variable function calls in a security interpreter |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5361350A (en) * | 1991-12-12 | 1994-11-01 | International Business Machines Corporation | Object oriented method management system and software for managing class method names in a computer system |
| US5421016A (en) * | 1991-12-12 | 1995-05-30 | International Business Machines Corporation | System and method for dynamically invoking object methods from an application designed for static method invocation |
| US5367685A (en) * | 1992-12-22 | 1994-11-22 | Firstperson, Inc. | Method and apparatus for resolving data references in generated code |
| US5437025A (en) * | 1993-01-26 | 1995-07-25 | International Business Machines Corporation | System and method for run time configuration of objects in an object oriented computing environment |
| US5615400A (en) * | 1993-06-30 | 1997-03-25 | Apple Computer, Inc. | System for object oriented dynamic linking based upon a catalog of registered function set or class identifiers |
| US5668999A (en) * | 1994-12-20 | 1997-09-16 | Sun Microsystems, Inc. | System and method for pre-verification of stack usage in bytecode program loops |
| US5812828A (en) * | 1995-06-01 | 1998-09-22 | Centerline Software, Inc. | Function simulation |
| US5815718A (en) * | 1996-05-30 | 1998-09-29 | Sun Microsystems, Inc. | Method and system for loading classes in read-only memory |
| US6003038A (en) * | 1997-03-31 | 1999-12-14 | Sun Microsystems, Inc. | Object-oriented processor architecture and operating method |
| US5903899A (en) * | 1997-04-23 | 1999-05-11 | Sun Microsystems, Inc. | System and method for assisting exact Garbage collection by segregating the contents of a stack into sub stacks |
| US5966702A (en) * | 1997-10-31 | 1999-10-12 | Sun Microsystems, Inc. | Method and apparatus for pre-processing and packaging class files |
| US5999732A (en) * | 1998-03-23 | 1999-12-07 | Sun Microsystems, Inc. | Techniques for reducing the cost of dynamic class initialization checks in compiled code |
-
1998
- 1998-04-07 US US09/055,947 patent/US6061520A/en not_active Expired - Lifetime
-
1999
- 1999-04-06 JP JP09830699A patent/JP4699580B2/en not_active Expired - Lifetime
- 1999-04-07 EP EP99400846A patent/EP0949566B1/en not_active Expired - Lifetime
- 1999-04-07 CN CN99107735A patent/CN1119756C/en not_active Expired - Lifetime
- 1999-04-07 DE DE69936953T patent/DE69936953D1/en not_active Expired - Lifetime
- 1999-04-07 KR KR1019990012226A patent/KR100624248B1/en not_active Expired - Lifetime
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0773044A (en) * | 1993-09-02 | 1995-03-17 | Mitsubishi Electric Corp | Optimizing compiling method and optimizing compiling device |
| JPH1040107A (en) * | 1995-12-08 | 1998-02-13 | Sun Microsyst Inc | System and method for transit time optimization of private variable function calls in a security interpreter |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0949566A3 (en) | 2003-12-10 |
| DE69936953D1 (en) | 2007-10-11 |
| CN1119756C (en) | 2003-08-27 |
| US6061520A (en) | 2000-05-09 |
| KR19990083019A (en) | 1999-11-25 |
| CN1238500A (en) | 1999-12-15 |
| EP0949566A2 (en) | 1999-10-13 |
| KR100624248B1 (en) | 2006-09-13 |
| JP4699580B2 (en) | 2011-06-15 |
| EP0949566B1 (en) | 2007-08-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2000035893A (en) | Method for statically initializing arrangement of data processing system, data processing method, data processing system and computer readable storage medium storing program making computer execute its control procedure | |
| US6226789B1 (en) | Method and apparatus for data flow analysis | |
| US6317869B1 (en) | Method of run-time tracking of object references in Java programs | |
| US6535903B2 (en) | Method and apparatus for maintaining translated routine stack in a binary translation environment | |
| US6802056B1 (en) | Translation and transformation of heterogeneous programs | |
| US6460178B1 (en) | Shared library optimization for heterogeneous programs | |
| US6502237B1 (en) | Method and apparatus for performing binary translation method and apparatus for performing binary translation | |
| US6199095B1 (en) | System and method for achieving object method transparency in a multi-code execution environment | |
| US6760905B1 (en) | Lazy compilation of template-generated classes in dynamic compilation execution environments | |
| US6609248B1 (en) | Cross module representation of heterogeneous programs | |
| US6035120A (en) | Method and apparatus for converting executable computer programs in a heterogeneous computing environment | |
| CN1134731C (en) | Technology of reducing cost of primary examination to dynamic kinds in compiled codes | |
| EP1385090B1 (en) | Program code conversion for variably sized registers | |
| CN111966424B (en) | Method and system for using complex quantities | |
| US6023583A (en) | Optimized variable allocation method, optimized variable allocation system and computer-readable memory containing an optimized variable allocation program | |
| US6820101B2 (en) | Methods and apparatus for optimizing garbage collection using separate heaps of memory for storing local objects and non-local objects | |
| US6363522B1 (en) | Method and apparatus for handling exceptions as normal control flow | |
| US20120198428A1 (en) | Using Aliasing Information for Dynamic Binary Optimization | |
| JP2000047874A (en) | Device and method for footprint reduction of preloaded class | |
| JPH1097430A (en) | Method and system for inserting assembly code routines into source code routines for optimization | |
| US7240341B2 (en) | Global constant pool to allow deletion of constant pool entries | |
| US7181724B2 (en) | Representation of Java® data types in virtual machines | |
| JP2005521117A (en) | 2-tier cluster for object representation in JAVA programming environment | |
| Steinbusch | Designing Hardware to Interpret Virtual Machine Instructions | |
| US11875168B2 (en) | Optimizing execution of foreign method handles on a virtual machine |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060403 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090511 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090811 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100302 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100701 |
|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20100913 |
|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20101028 |
|
| A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20101126 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110208 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110303 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| EXPY | Cancellation because of completion of term |