JP2000122876A - 情報処理装置 - Google Patents

情報処理装置

Info

Publication number
JP2000122876A
JP2000122876A JP10294934A JP29493498A JP2000122876A JP 2000122876 A JP2000122876 A JP 2000122876A JP 10294934 A JP10294934 A JP 10294934A JP 29493498 A JP29493498 A JP 29493498A JP 2000122876 A JP2000122876 A JP 2000122876A
Authority
JP
Japan
Prior art keywords
unit
class
basic
program
call instruction
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.)
Pending
Application number
JP10294934A
Other languages
English (en)
Inventor
Tsutomu Yoshida
力 吉田
Nobuteru Tominaga
宣輝 富永
Naosuke Haruna
修介 春名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP10294934A priority Critical patent/JP2000122876A/ja
Publication of JP2000122876A publication Critical patent/JP2000122876A/ja
Priority to US09/748,607 priority patent/US20010001328A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Abstract

(57)【要約】 【課題】 Javaクラスファイルを静的リンカを用い
てリンクし、識別子情報を削除して作られた実行可能プ
ログラムを仮想マシンが読込み実行する情報処理装置で
は、複数のプログラムをまたぐメソッド呼び出しを使う
ことができない。 【解決手段】 ソースプログラムから共通で利用可能な
クラスからなる基礎クラスライブラリ部を備える。静的
リンク部は、メソッド番号決定部と、メソッドテーブル
生成部と、メソッド呼出し命令変換部とを備える。前記
メソッド番号決定部は、スーパークラスのメソッドをオ
ーバーライドまたは継承したメソッドには、スーパーク
ラスにおいてそのメソッドに設定された番号と同一の番
号を、それ以外のオーバーライドされうるメソッドに
は、クラス毎に一意となるその他の番号を設定する。仮
想マシン部は、メソッドテーブル読み出し部と、メソッ
ドディスパッチ部とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はオブジェクト指向言
語によって書かれたプログラムを翻訳実行する情報処理
装置に関するものである。
【0002】
【従来の技術】オブジェクト指向言語であるJava言
語では、複数のクラスが記述されたソースプログラムを
コンパイルした際に、ソースプログラムに記述されたク
ラスひとつひとつに対応して、クラスファイルと呼ばれ
る形式のオブジェクトモジュールが生成される。
【0003】これらのクラスファイルは、クラスファイ
ルを読み込み解釈し実行することのできるJava仮想
マシン上で実行することができる。
【0004】Java仮想マシンでは実際に実行される
直前または、実行時にクラス同士のリンクが行われる。
【0005】図1はJava言語で記述されたプログラ
ムの例である。このプログラムはAとBという名前の2
つのクラスからなっている。
【0006】クラスAにはmainという名前のメソッ
ドが存在するが、このメソッドがプログラムの中で最初
に実行されるメソッドである。
【0007】プログラムをコンパイルするとA.cla
ssとB.classという2つのクラスファイルが生
成される。
【0008】これら2つのクラスファイルは実行時まで
リンクされないため、クラスAが参照しているクラス名
がBであることや、呼び出し先のメソッド名などがクラ
スファイルのコンスタントプールと呼ばれる領域に格納
されている。
【0009】Java仮想マシンは、実行前もしくは実
行時にそれらクラスファイルのコンスタントプール内の
名前の一致を検索することで、複数のクラスファイルの
リンクを行っている。
【0010】実行時に必要なモジュールをリンクするこ
の形態では、あらかじめ呼び出すメソッドがリンクされ
ていないため、クラスファイルを生成した時点では存在
しなかったクラスのメソッドを呼び出すことが可能とな
り、これを利用したプログラム間の通信などが簡単に行
えるというメリットが存在する。
【0011】一方、クラス・メソッド・フィールドとい
ったプログラム内の識別子を文字列のままクラスファイ
ルに保存しているため、リンクに必要な識別子情報を格
納したコンスタントプールのためにクラスファイルが肥
大化していることや、もう1つは、リンクを実行時に行
うために実行速度が遅くなるという大きなデメリットも
存在している。
【0012】これらは特にメモリやハードディスクなど
の容量の少ない計算機において大きな問題となる。
【0013】これらの問題点を解決し、メモリ容量の少
ない計算機においてもJavaプログラムを動作可能と
するための方法として、上記Java仮想マシンからリ
ンクを行う部分を分離し、静的なリンクを行う静的リン
カと命令実行を行う仮想マシンとの二つの装置からなる
構成をとった情報処理機械を用いる方法が考えられた。
この場合、静的リンカは複数のクラスファイルを読み込
み静的に識別子を解決して識別子情報を削除し、一つの
オブジェクトファイルを生成する。仮想マシンは上記静
的リンカが出力したオブジェクトファイルを読み込み実
行する。
【0014】この構成の機械では、識別子情報が削除さ
れておりオブジェクトファイルのサイズを小さくするこ
とができる。
【0015】また、識別子の解決が静的に行われている
ために、実行時に解決を行うためのオーバーヘッドをな
くすことが可能となるというメリットがある。
【0016】
【発明が解決しようとする課題】しかしながら、上記静
的リンカによってオブジェクトファイルを構成した場合
には、静的リンカにプログラムで使用する全てのクラス
を読み込ませる必要があり、Java言語の特徴である
他のプログラムのメソッドを呼び出すことでプログラム
間の通信を行うことができるというメリットが失われ
る。
【0017】本発明はこの点に鑑み、静的リンカにおい
て複数のクラスファイルを読み込み静的にリンクを行う
ことで生成した実行可能プログラムを、仮想マシンで読
み込み実行する形態の情報処理機械において、あるプロ
グラムから、他のプログラムで生成されたクラスインス
タンスを使用可能とし、そのクラスインスタンスのメソ
ッドを呼ぶことで他のプログラム内のメソッドの呼び出
しを可能とすることを目的とする。
【0018】
【課題を解決するための手段】本発明に係る情報処理装
置は、オブジェクト指向言語で記述されたソースプログ
ラムを一つ以上読み込み、リンクし、一つの実行可能プ
ログラムとして出力する静的リンク部と、前記実行可能
プログラムを読み込み実行する仮想マシン部と、前記ソ
ースプログラムから共通で利用可能なクラスからなる基
礎クラスライブラリ部とを有している。
【0019】前記静的リンク部は、前記基礎クラスライ
ブラリ部に含まれる全てのオーバーライドされうるメソ
ッド及びオーバーライドしたメソッドにクラス毎に一意
となる番号を設定する基礎メソッド番号決定部と、前記
ソースプログラムに記述された全てのクラスの、全ての
オーバーライドされうるメソッド及びオーバーライドし
たメソッドに対し、前記基礎クラスライブラリ部から継
承したメソッド及び、前記基礎クラスライブラリ部をオ
ーバーライドしたメソッドには、前記基礎メソッド番号
決定部において付けられた番号と同一の番号を、そうで
ない場合にはクラス毎に一意となる他の番号を設定する
メソッド番号決定部と、前記ソースプログラムに記述さ
れた全てのクラスに対し、前記メソッド番号決定部によ
って決定された番号順にオーバーライドされうるメソッ
ドとオーバーライドしたメソッドのメソッド情報へのポ
インタを並べたメソッドテーブルを生成するメソッドテ
ーブル生成部と、前記ソースプログラム内のオーバーラ
イドされうるメソッドを呼び出す命令を、前記メソッド
番号決定部によって決定された番号をオペランドとして
呼び出す命令に変換するメソッド呼び出し命令変換部と
を備え、前記仮想マシン部は、前記メソッド呼び出し命
令変換部によって変換されたメソッド呼び出し命令を実
行する際に、対象となるオブジェクトが属するクラス及
び前記メソッド呼び出し命令のオペランドのメソッド番
号を用いて、メソッドテーブルからメソッド情報へのポ
インタを読み出すメソッドテーブル読み出し部と、前記
メソッドテーブル読み出し部において読み出される前記
メソッド情報へのポインタで指定されたメソッドに分岐
するメソッドディスパッチ部を備える。
【0020】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を用いて説明する。図2は本発明のプログラム
変換装置の構成を示す図である。便宜上図2にはソース
プログラム201、202、実行可能プログラム21
2、213も合わせて記載している。ここで、このソー
スプログラム201及び202はJava言語で書かれ
たプログラムをコンパイルして生成されたJavaクラ
スファイルである。
【0021】また、この実行可能プログラム212はソ
ースプログラム201から、実行可能プログラム213
はソースプログラム202から生成される。
【0022】本装置は大別すると、基礎クラスライブラ
リ部203、静的リンク部207と仮想マシン部214
で構成される。
【0023】基礎ライブラリ203は、基礎メソッド通
し番号テーブル204、基礎メソッド番号テーブル20
5、基礎クラス206を備えている。
【0024】基礎クラス206は、仮想マシン部214
が動作する計算機の機械語命令列で記述された、全ての
ソースプログラムが使用できるクラスが1つ以上格納さ
れたものである。
【0025】基礎メソッド通し番号は基礎クラス206
に含まれる全てのメソッドについて定められている必要
があるが、基礎メソッド番号が定められているのはオー
バーライドされうるメソッドとオーバーライドメソッド
のみである。
【0026】静的リンク部207の処理は生成する実行
可能プログラム単位に行われる。ユーザはリンク部に対
してある一つのソースプログラムを指定する。静的リン
ク部では、そのソースプログラムと基礎ライブラリを読
み込み、次にそのソースプログラムで使用されるクラス
が記述されたすべてのファイルを読み込み、それらをリ
ンクし、一つの実行可能プログラムを出力する。
【0027】ここでは、ソースプログラム202が指定
されて実行可能プログラム210を、ソースプログラム
203が指定されて実行可能プログラム211を出力す
る。
【0028】静的リンク部207は、メソッド番号決定
部208、メソッドテーブル生成部209、メソッド呼
び出し命令変換部210、リンク部211を備えてい
る。
【0029】メソッド番号決定部208は読み込んだソ
ースプログラムに含まれる各々のクラス内のオーバーラ
イドメソッドを含むメソッドにクラス内で一意に定まる
メソッド番号を設定する。派生クラスのメソッド番号
は、派生元に同一メソッドが存在する場合には同じ番号
となるように設定する。
【0030】メソッドテーブル生成部209は、各クラ
スについて、メソッド番号決定部208によって定めら
れたメソッド番号に従ってメソッドテーブルを生成する
処理を行う。メソッドテーブルはクラス毎に生成され、
メソッド番号順にメソッドテーブルへのポインタを並べ
る。ここでのメソッドテーブルへのポインタはメソッド
に関する情報が格納される部分の実行可能プログラムの
先頭からのオフセットである。このオフセットは0x8
0000000を超えないものとする。当該メソッド
が、基礎クラスライブラリから継承したメソッドである
場合には、当該メソッドの基礎メソッド通し番号に0x
80000000を加えた値をメソッドテーブルに格納
する。
【0031】メソッド呼び出し命令変換部210は、ソ
ースプログラム内にメソッド呼び出し命令であるinv
okevirtualが存在した場合に、上記メソッド
番号決定部207により設定されたメソッド番号を基
に、メソッド呼び出し命令の引数を変換する。リンク部
211は、その他の命令の連結を行う。
【0032】仮想マシン部214は、メソッドテーブル
読み出し部215と、メソッドディスパッチ部216
と、命令実行部217を備える。メソッドテーブル読み
出し部215は、上記メソッド呼び出し命令変換部2に
より変換された命令を実行する際に、オペランドに記述
されたメソッド番号を元にメソッドテーブルの内容を読
み出す。メソッドディスパッチ部216は、上記メソッ
ドテーブル読み出し部215によって読み出された内容
が0x80000000以上であった場合には、その数
値から0x80000000を減じた基礎メソッド通し
番号の基礎クラスライブラリ部内のメソッドを呼び出
す。それ以外の場合には読み出した内容は実行可能プロ
グラムからのオフセットであるので、メソッドテーブル
が含まれる実行可能プログラムの先頭アドレスを上記内
容に加算し、求めたアドレスのメソッドを呼び出す。
【0033】命令実行部217はその他の命令を実行す
る。図2のように構成した情報処理装置の動作をJav
a言語のプログラムを用いて説明する。図3は基礎クラ
スライブラリ部203に含まれるクラス及びメソッドの
一覧である。図3に示した基礎クラスライブラリ部20
3に対応する基礎メソッド番号テーブルを図4に、基礎
メソッド通し番号テーブルを図5に示す。static
メソッドには基礎メソッド番号は付加されていないが、
基礎メソッド通し番号は付加されている。
【0034】図6はJava言語で記述されたクラスp
rog1の定義を含むプログラムである。クラスpro
g1はprogramクラスを継承している。図7はJ
ava言語で記述されたクラスprog2の定義を含む
プログラムである。クラスprog2はprogram
クラスを継承している。
【0035】図6のプログラムをJava言語コンパイ
ラでコンパイルしたものが図8に示すクラスファイルで
あり、図7のプログラムをJava言語コンパイラでコ
ンパイルしたものが図9に示すクラスファイルである。
ソースプログラム201には図8のクラスファイルが、
ソースプログラム202には図9のクラスファイルが納
められている。
【0036】静的リンク部207はソースプログラム2
01の入力により、図12で示した実行可能プログラム
212を出力する。同様にして、ソースプログラム20
2の入力により、図13で示した実行可能プログラム2
13を出力する。
【0037】仮想マシン214は、図12で示した実行
可能プログラム212と図13で示した実行可能プログ
ラム213との入力により、プログラムの実行を行う。
【0038】ここから、静的リンク部207の詳細な動
作について説明する。図14は静的リンク部207の動
作フローチャートを表す図である。まず、指定されたク
ラスファイルが読み込まれる(ステップ1401)。こ
こでは図8のクラスファイルが読み込まれる。次に基礎
メソッド番号テーブル204・基礎メソッド通し番号テ
ーブル205が読み込まれる(ステップ1402)。次
に、基礎クラスライブラリ部に含まれていないクラス
で、まだ読み込んでいないクラスが、すでに読み込んだ
クラス内で使用されてるかを調べる。使用されている場
合には、そのクラスが記述されているクラスファイルを
読み込む。これは既読クラス内で使われているクラスが
全て読み込まれるまで繰り返し行われる(ステップ14
03)。ここではクラスprog1において使用されて
いるクラスは全て基礎ライブラリ部に含まれるものであ
るので、prog1以外のクラスは読み込まれない。
【0039】次に、読み込んだクラスで、メソッド番号
を設定していないクラスに注目する(ステップ140
5)。ここではクラスprog1に注目する。次に注目
しているクラスのスーパークラスにメソッド番号がまだ
設定されていない場合には、スーパークラスに注目する
(ステップ1406)。prog1のスーパークラスp
rogramは基礎クラスライブラリ部203に含まれ
ており、すでにメソッド番号が設定されている。
【0040】次に、注目しているクラスにメソッド番号
を設定する(ステップ1408)。全てのオーバーライ
ドされうるメソッド及びオーバーライドしたメソッドに
対し、クラス毎に一意となる番号を設定する。この際
に、スーパークラスのメソッドを継承したメソッドや、
スーパークラスのメソッドをオーバーライドしたメソッ
ドには、スーパークラスでそのメソッドに設定された番
号と同じ番号を設定する。スーパークラスが前期基礎ク
ラスライブラリ部に含まれるクラスの場合には、前記基
礎メソッド番号テーブルに記述された番号と同じ番号を
設定する。
【0041】クラスprog1にメソッド番号を設定し
た結果を図10に示す。二つのメソッドは共にスーパー
クラスprogramに存在するメソッドであるため、
クラスprogramにおけるメソッド番号と同一とな
っている。
【0042】このメソッド番号の設定は、メソッド番号
が設定されていないクラスがなくなるまで繰り返され、
全てのクラスに対してメソッド番号の設定が行われる
(ステップ1409)。
【0043】次に、全てのクラスについてメソッドテー
ブルを生成する(ステップ1410)。クラスprog
1のメソッドテーブルは図12の冒頭に示したものが生
成される。メソッドprintclass()はクラス
prog1で定義されているので、そのメソッドの先頭
へのポインタが格納される。メソッドextra()に
ついてはクラスprog1ではメソッド定義が行われて
おらず、基礎クラスライブラリからの継承であるため、
基礎メソッド通し番号テーブルに記述されたメソッドe
xtra()の基礎メソッド通し番号8に0x8000
0000を加えたものが格納される。
【0044】次に、命令のオペランドの変換を行う(ス
テップ1411,1412)。クラスファイルにおける
invokevirtualの引数はメソッド名pri
ntclass()であるが、これをメソッドprin
tclass()のメソッド番号0で置き変える。
【0045】次にその他のリンク処理を行う(ステップ
1413)。ここにはinvokestaticやin
vokespecial命令による基礎クラスライブラ
リに含まれるメソッドを呼び出す命令のオペランドを、
基礎メソッド通し番号に置き換え、そのたのメソッド呼
び出しのオペランドをメソッド情報へのオフセットに変
換する処理などが含まれる。
【0046】最後に上記処理により生成された図12で
示した実行可能プログラムが出力される(ステップ14
14)。
【0047】同様にして、図9で示したソースプログラ
ムが読み込まれ、図11に示したメソッド番号が設定さ
れ、図13で示した実行可能プログラムが出力される。
【0048】次に、図12で示した実行可能プログラム
212及び、図13で示した実行可能プログラム213
を仮想マシン部214に指定した場合について、仮想マ
シン部214の詳細な動作について説明する。図15は
仮想マシン部214の動作フローチャートを表す図であ
る。この仮想マシンでは複数の実行可能プログラムが指
定された場合には、それぞれのプログラム内の命令を交
互に実行する仕組になっている。
【0049】まず、図12で示した実行可能プログラム
212及び、図13で示した実行可能プログラム213
が読み込まれ(ステップ1501)、メソッドmain
の最初の命令から実行が行なわれる。まず、図12のn
ewprog1命令の実行が行われる。この命令はin
vokevirtual命令ではないので、従来の仮想
マシンと同様に実行が行われる(ステップ1502,1
503)。同様に、図13のnewprog2命令の実
行が行われる。
【0050】これらの命令の実行により、仮想マシンが
持つヒープ領域にクラスprog1とクラスprog2
のインスタンスが生成される。これらのインスタンスは
メソッドテーブルへのポインタを含んでいる。その後の
命令列の実行に関しては、invokevirtual
命令以外は従来の仮想マシンと同一なので説明を省略す
る。
【0051】ここでは図12のメソッドmainのin
vokevirtual0が実行される場合を例にと
り、仮想マシン部214のinvokevirtual
命令の実行を説明する。
【0052】当該のinvokevirtualの命令
が実行される際には、仮想マシンのオペランドスタック
の先頭に前記newprog1で生成されたインスタン
スへの参照か、もしくは、前記newprog2で生成
されたインスタンスへの参照が格納されている。仮想マ
シンはinvokevirtual命令を実行する際に
は、スタックのトップに格納されているインスタンスが
差し示すメソッドテーブルから、オペランドで指定した
番号の内容を取り出す(ステップ504)。前記new
prog1で生成されたインスタンスが格納されている
場合には、ここでクラスprog1で定義されたpri
ntclass()メソッドへのポインタが取り出され
る。ポインタは0x80000000以下であるので、
仮想マシンはメソッドテーブルから取り出したポインタ
の差し示すメソッドを呼び出す(ステップ1505,1
507)。すなわち、クラスprog1のprintc
lass()メソッドが呼び出される。
【0053】前記オペランドスタックの先頭に、前記n
ewprog2で生成されたインスタンスが格納されて
いる場合には、ステップ1504でクラスprog2で
定義されたprintclass()メソッドへのポイ
ンタが取り出される。ポインタは0x80000000
以下であるので、仮想マシンはメソッドテーブルから取
り出したポインタの差し示すメソッドを呼び出す(ステ
ップ1505,1507)。すなわち、クラスprog
2のprintclass()メソッドが呼び出され
る。
【0054】こうして、クラスprog1のinvok
evirtual命令によって、クラスprog2のメ
ソッドを呼び出すことができる。
【0055】本実施例における、invokevirt
ual命令実行時の前記オペランドスタックの先頭に格
納されている参照は、図6での参照型変数xに相当して
いる。すなわち本実施例においては、図6におけるx.
printclass();を実行する際に、変数xに
クラスprog2のインスタンスへの参照を格納してい
た場合には、実行可能プログラム212から実行可能プ
ログラム213内のメソッドprintclass()
が呼び出されることになる。
【0056】なお、本実施例では簡単のために静的リン
ク部207は1つのソースプログラム201を読み込み
実行可能プログラム212を出力したが、静的リンク部
207は複数のソースプログラムを読み込み、相互に連
結し、実行可能プログラムを出力することもできる。
【0057】また、本実施例では基礎クラスライブラリ
に含まれるメソッドへのポインタを示す際に、あらかじ
め設定した基礎メソッド通し番号を用いたが、仮想マシ
ンにおける基礎クラスライブラリへのポインタが静的リ
ンク時に明らかになっている場合には、基礎クラスライ
ブラリに含まれるメソッドに対しても、メソッドテーブ
ルにポインタを格納することができる。この場合には全
ての仮想マシンで基礎クラスライブラリに含まれるメソ
ッドが同一アドレスに置かれている必要があるが、in
vokevirtual命令などの実行時にポインタと
基礎クラスライブラリとの判別を行う必要がなくなるた
め、より高速な実行が期待できる。
【0058】また、本実施例では基礎クラスライブラリ
に含まれるメソッドに、あらかじめ基礎メソッド番号と
基礎メソッド通し番号を設定し、基礎メソッド番号テー
ブルと基礎メソッド通し番号テーブルを準備していた
が、これら基礎メソッド番号と基礎メソッド通し番号
は、静的リンカによってリンク時に設定してもよい。
【0059】
【発明の効果】以上説明してきたように、本発明の構成
の情報処理装置では、オブジェクト指向言語プログラム
のクラス間の静的リンクを行なうことにより識別子情報
を実行可能プログラムから削除した場合においても、通
常のメソッド呼び出しと同じ処理によって、あるプログ
ラムが同じ仮想マシン上で動作している他のプログラム
に含まれるメソッドを呼び出すことができ、これにより
複数のプログラムの連携動作を簡単に記述することがで
きる。
【図面の簡単な説明】
【図1】Javaプログラムの例を示す図
【図2】本発明の情報処理装置の構成を示す図
【図3】基礎クラスライブラリ203に納められるクラ
ス及びメソッドの一例を示す図
【図4】図3に示した基礎クラスライブラリ203にお
ける、基礎メソッド番号テーブル204を示す図
【図5】図3に示した基礎クラスライブラリ203にお
ける、基礎メソッド通し番号テーブル205を示す図
【図6】図8のクラスファイルのJavaソースプログ
ラムを示す図
【図7】図9のクラスファイルのJavaソースプログ
ラムを示す図
【図8】ソースプログラム201に納められるJava
クラスファイルを示す図
【図9】ソースプログラム202に納められるJava
クラスファイルを示す図
【図10】図8に示したソースプログラム201のメソ
ッドに設定されたメソッド番号を示す図
【図11】図9に示したソースプログラム202のメソ
ッドに設定されたメソッド番号を示す図
【図12】図8に示したソースプログラム201の入力
により、静的リンク部207が出力する実行可能ファイ
ル212を示す図
【図13】図9に示したソースプログラム202の入力
により、静的リンク部207が出力する実行可能ファイ
ル213を示す図
【図14】静的リンク部207の動作フローチャート
【図15】仮想マシン部214の動作フローチャート
【符号の説明】
201 ソースプログラムA 202 ソースプログラムB 203 基礎クラスライブラリ 204 基礎メソッド番号テーブル 205 基礎メソッド通し番号テーブル 206 基礎クラス 207 静的リンク部 208 メソッド番号決定部 209 メソッドテーブル決定部 210 メソッド呼び出し命令変換部 211 リンク部 212 実行可能ファイルA 213 実行可能ファイルB 214 仮想マシン部 215 メソッドテーブル読み出し部 216 メソッドディスパッチ部 217 命令実行部
フロントページの続き (72)発明者 春名 修介 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 Fターム(参考) 5B081 AA09

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 単一の継承を可能とするオブジェクト指
    向言語によって記述された1つ以上のソースプログラム
    ファイルを読み込み、リンクし、実行可能プログラムを
    出力する静的リンク部と、 前記静的リンク部によって生成された実行可能プログラ
    ムを読み込み実行する仮想マシン部と、 前記ソースプログラムから共通で利用可能なクラスから
    なる基礎クラスライブラリ部とを備え、 前記静的リンク部は、前記基礎クラスライブラリ部に含
    まれる全てのオーバーライドされうるメソッド及びオー
    バーライドしたメソッドにクラス毎に一意となる番号を
    設定する基礎メソッド番号決定部と、 前記ソースプログラムに記述された全てのクラスの、全
    てのオーバーライドされうるメソッド及びオーバーライ
    ドしたメソッドに対し、前記基礎クラスライブラリ部か
    ら継承したメソッド及び、前記基礎クラスライブラリ部
    をオーバーライドしたメソッドには、前記基礎メソッド
    番号決定部において付けられた番号と同一の番号を、そ
    うでない場合にはクラス毎に一意となる他の番号を設定
    するメソッド番号決定部と、 前記ソースプログラムに記述された全てのクラスに対
    し、前記メソッド番号決定部によって決定された番号順
    にオーバーライドされうるメソッドとオーバーライドし
    たメソッドのメソッド情報へのポインタを並べたメソッ
    ドテーブルを生成するメソッドテーブル生成部と、 前記ソースプログラム内のオーバーライドされうるメソ
    ッドを呼び出す命令を、前記メソッド番号決定部によっ
    て決定された番号をオペランドとして呼び出す命令に変
    換するメソッド呼び出し命令変換部とを備え、 前記仮想マシン部は、前記メソッド呼び出し命令変換部
    によって変換されたメソッド呼び出し命令を実行する際
    に、対象となるオブジェクトが属するクラス及び前記メ
    ソッド呼び出し命令のオペランドのメソッド番号を用い
    てメソッドテーブルからメソッド情報へのポインタを読
    み出すメソッドテーブル読み出し部と、 前記メソッドテーブル読み出し部において読み出される
    前記メソッド情報へのポインタで指定されたメソッドに
    分岐するメソッドディスパッチ部を備えることを特徴と
    した情報処理装置。
  2. 【請求項2】 オブジェクト指向言語によって記述され
    た1つ以上のソースプログラムファイルを読み込み、リ
    ンクし、実行可能プログラムを出力する静的リンク部と
    前記静的リンク部によって生成された実行可能プログラ
    ムを読み込み実行する仮想マシン部と前記ソースプログ
    ラムから共通で利用可能なクラスからなり、あらかじめ
    全てのオーバーライドされうるメソッド及びオーバーラ
    イドしたメソッドに各クラス毎に一意となるメソッド番
    号が付加された基礎メソッドを含む基礎クラスライブラ
    リ部と前記基礎ライブラリ部に含まれる各クラス毎にメ
    ソッドとメソッド番号との対応が記述された基礎メソッ
    ド番号テーブルを備え、 前記ソースプログラムに記述された全てのクラスの、全
    てのオーバーライドされうるメソッド及びオーバーライ
    ドしたメソッドに対し、前記基礎クラスライブラリから
    継承したメソッド及び、前記基礎クラスライブラリをオ
    ーバーライドしたメソッドには、前記基礎メソッド番号
    テーブルに記述された番号と同一の番号を、そうでない
    場合にはクラス毎に一意となる他の番号を設定するメソ
    ッド番号決定部と、 前記ソースプログラムに記述された全てのクラスに対
    し、前記メソッド番号決定部によって決定された番号順
    にオーバーライドされうるメソッドとオーバーライドし
    たメソッドのメソッド情報へのポインタを並べたメソッ
    ドテーブルを生成するメソッドテーブル生成部と、 前記ソースプログラム内のオーバーライドされうるメソ
    ッドを呼び出す命令を、前記メソッド番号決定部によっ
    て決定された番号をオペランドとして呼び出す命令に変
    換するメソッド呼び出し命令変換部とを備え、 仮想マシン部は、前記メソッド呼び出し命令変換部によ
    って変換されたメソッド呼び出し命令を実行する際に、 前記メソッド呼び出し命令のオペランドのメソッド番号
    を用いてメソッドテーブルから呼び出しメソッドの前記
    メソッド情報へのポインタを読み出すメソッドテーブル
    読み出し部と、 前記メソッドテーブル読み出し部において読み出される
    前記メソッド情報へのポインタで指定されたメソッドに
    分岐するメソッドディスパッチ部を備えることを特徴と
    した情報処理装置。
  3. 【請求項3】 前記静的リンカ部はさらに前記基礎クラ
    スライブラリ部の全てのメソッドに対してクラスライブ
    ラリ全体で一意な基礎メソッド通し番号を付加する基礎
    メソッド通し番号決定部と、 前記基礎クラスライブラリ部に含まれるメソッドと前記
    基礎メソッド通し番号決定部によって付加された基礎メ
    ソッド通し番号との対応表を作成する基礎メソッド通し
    番号テーブル生成部を備え、 前記メソッドテーブル生成部は、前記ソースプログラム
    に記述されたクラスに対し、クラスのインスタンスから
    呼び出すことのできる全てのメソッドについて、呼び出
    されるメソッドが基礎クラスライブラリに含まれるメソ
    ッドである場合には前記基礎メソッド通し番号決定部に
    よって付加された当該メソッドの基礎メソッド通し番号
    を、そうでない場合にはメソッドへのポインタを、前記
    メソッド番号決定部によって決定された番号順に並べて
    配置したメソッドテーブルを生成することを特徴とし、
    前記メソッドテーブル読み出し部は、前記メソッド呼び
    出し命令変換部によって変換されたメソッド呼び出し命
    令を実行する際に、対象となるオブジェクトが属するク
    ラス及び前記メソッド呼び出し命令のオペランドのメソ
    ッド番号を用いてメソッドテーブルの内容を読み出し、
    前記メソッドディスパッチ部は、前記メソッドテーブル
    読み出し部において読み出された内容が、メソッドへの
    ポインタである場合にはそのポインタにより指定された
    メソッドに分岐し、基礎メソッド通し番号の場合には前
    記基礎メソッド通し番号テーブル生成部によって生成さ
    れた基礎メソッド通し番号テーブルを基に、番号に対応
    した基礎クラスライブラリのメソッドに分岐することを
    特徴とした請求項1記載の情報処理装置。
  4. 【請求項4】 基礎クラスライブラリは、ライブラリに
    含まれる全てのメソッドと、各メソッドにあらかじめ付
    加されたメソッドに一対一に対応する基礎メソッド通し
    番号との対応が記述された基礎メソッド通し番号テーブ
    ルを備え、 前記メソッドテーブル生成部は、前記ソースプログラム
    に記述されたクラスに対し、クラスのインスタンスから
    呼び出すことのできる全てのメソッドについて、呼び出
    されるメソッドが基礎クラスライブラリに含まれるメソ
    ッドである場合には当該メソッドの基礎メソッド通し番
    号を、そうでない場合にはメソッドへのポインタを前記
    メソッド番号決定部によって決定された番号順に並べて
    配置したメソッドテーブルを生成することを特徴とし、 前記メソッドテーブル読み出し部は、前記メソッド呼び
    出し命令変換部によって変換されたメソッド呼び出し命
    令を実行する際に、対象となるオブジェクトが属するク
    ラス及び前記メソッド呼び出し命令のオペランドのメソ
    ッド番号を用いてメソッドテーブルの内容を読み出し、 前記メソッドディスパッチ部は、前記メソッドテーブル
    読み出し部において読み出された内容が、メソッドへの
    ポインタである場合にはそのポインタにより指定された
    メソッドに分岐し、基礎メソッド通し番号の場合には番
    号に対応した基礎クラスライブラリのメソッドに分岐す
    ることを特徴とした請求項2記載の情報処理装置。
  5. 【請求項5】 仮想マシン部は、前記実行可能プログラ
    ムを読み込む際に、プログラム内の前記メソッドテーブ
    ルに含まれる基礎メソッド通し番号を対応する基礎クラ
    スライブラリのメソッド情報へのポインタに置きかえる
    ことを特徴とした、請求項3または4記載の情報処理装
    置。
  6. 【請求項6】 基礎クラスライブラリはクラスインスタ
    ンスへの参照を複数のプログラム間で交換することので
    きる機構を持つ参照共有クラスを備え、 前記参照共有クラスはある実行可能プログラムにおいて
    仮想マシン部が生成したクラスインスタンスへの参照及
    びその名称を記憶する参照記憶メソッドと別の実行可能
    プログラムが前記参照記憶メソッドにおいて記憶された
    クラスインスタンスへの参照とその名称を取り出すこと
    のできる参照取り出しメソッドを含むことを特徴とした
    請求項1、2、3、4、5に記載の情報処理装置。
JP10294934A 1998-10-16 1998-10-16 情報処理装置 Pending JP2000122876A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP10294934A JP2000122876A (ja) 1998-10-16 1998-10-16 情報処理装置
US09/748,607 US20010001328A1 (en) 1998-10-16 2000-12-26 Link apparatus and virtual machine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10294934A JP2000122876A (ja) 1998-10-16 1998-10-16 情報処理装置

Publications (1)

Publication Number Publication Date
JP2000122876A true JP2000122876A (ja) 2000-04-28

Family

ID=17814175

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10294934A Pending JP2000122876A (ja) 1998-10-16 1998-10-16 情報処理装置

Country Status (2)

Country Link
US (1) US20010001328A1 (ja)
JP (1) JP2000122876A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438745B1 (en) * 1998-10-21 2002-08-20 Matsushita Electric Industrial Co., Ltd. Program conversion apparatus

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675377B1 (en) * 1999-09-13 2004-01-06 Matsushita Electric Industrial Co., Ltd. Program conversion apparatus
ATE481677T1 (de) * 2001-05-30 2010-10-15 Research In Motion Ltd System zur verarbeitung einer anwendung für ein mobiles kommunikationsgerät
KR100763199B1 (ko) * 2006-02-20 2007-10-04 삼성전자주식회사 가상 머신 환경에서의 메소드 호출 방법 및 상기 방법을수행하는 가상 머신이 탑재된 시스템
US8312492B2 (en) * 2007-03-19 2012-11-13 At&T Intellectual Property I, L.P. Systems and methods of providing modified media content
JP6223001B2 (ja) * 2013-06-06 2017-11-01 キヤノン株式会社 画像処理装置、その制御方法、及びプログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5067072A (en) * 1987-11-06 1991-11-19 Visystems, Inc. Virtual software machine which preprocesses application program to isolate execution dependencies and uses target computer processes to implement the execution dependencies
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US5815718A (en) * 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
US5978585A (en) * 1997-03-27 1999-11-02 Inprise Corporation Development system with improved methods for recompiling dependent code modules
US6317872B1 (en) * 1997-07-11 2001-11-13 Rockwell Collins, Inc. Real time processor optimized for executing JAVA programs
US5966702A (en) * 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
US6349344B1 (en) * 1997-12-16 2002-02-19 Microsoft Corporation Combining multiple java class files into a run-time image
US6199196B1 (en) * 1998-03-20 2001-03-06 Sun Microsystems, Inc. Methods and apparatus for linking a program for remote execution
US5999732A (en) * 1998-03-23 1999-12-07 Sun Microsystems, Inc. Techniques for reducing the cost of dynamic class initialization checks in compiled code
US6578193B1 (en) * 1998-03-24 2003-06-10 Novell, Inc. Endian-neutral loader for interpretive environment
CA2255042C (en) * 1998-11-30 2004-04-13 Leonard W. Theivendra Class loader
CA2262316A1 (en) * 1999-02-22 2000-08-22 Ibm Canada Limited-Ibm Canada Limitee System and method for detecting release-to-release binary compatibility in compiled object code
US6609248B1 (en) * 1999-06-30 2003-08-19 Microsoft Corporation Cross module representation of heterogeneous programs

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438745B1 (en) * 1998-10-21 2002-08-20 Matsushita Electric Industrial Co., Ltd. Program conversion apparatus

Also Published As

Publication number Publication date
US20010001328A1 (en) 2001-05-17

Similar Documents

Publication Publication Date Title
JP4130713B2 (ja) プログラム変換装置
US5781758A (en) Software emulation system with reduced memory requirements
JP4562918B2 (ja) インタプリティブ・ランタイム環境のためのコンパイル・プログラムの生成
EP1557760A2 (en) Method and system for improving performance of java virtual machine
JP2001508909A (ja) バーチャルマシン命令を処理するためのデータ処理装置
JPH0371337A (ja) マイクロプロセツサ回路
JP2000035893A (ja) デ―タ処理システムの配列の静的初期化方法、デ―タ処理方法、並びにデ―タ処理システム及びその制御手順をコンピュ―タに実行させるプログラムを記憶したコンピュ―タ読み取り可能な記憶媒体
KR101407629B1 (ko) 자바 변환 가속 장치 및 방법
JPH05505274A (ja) 2個の非類似プログラムユニット間の呼出規格を自動的にインターフェイスさせるシステム及び方法
US7076765B1 (en) System for hiding runtime environment dependent part
US7197600B2 (en) Transferring data along with code for program overlays
US7058932B1 (en) System, computer program product, and methods for emulation of computer programs
JP2000040005A (ja) プログラム変換装置
JP2005501334A (ja) Javaコンピューティング環境におけるJavaマクロインストラクションの生成のためのフレームワーク
JP2000122876A (ja) 情報処理装置
JP2006146613A (ja) プログラム変換方法
WO2002097552A2 (en) Method for fast compilation of preverified java bytecode to high quality native machine code
JP2005267640A (ja) 機能を呼び出す方法と装置
US6233732B1 (en) Compiling system using intermediate codes to store a plurality of values
JP2005501331A (ja) Javaオブジェクトをインスタンス化するためのJavaマクロインストラクションを生成するフレームワーク
US6792600B1 (en) Method and apparatus for just in time compilation of instructions
JPS633342A (ja) 仮想計算機の入出力実行方式
JPH04268928A (ja) エミュレーション装置及び半導体装置
Xin et al. The architecture of the Java extension of 32-bit RISC for smart cards and other embedded systems
CN114896023A (zh) 一种数据处理方法、装置、设备及存储介质