JPH0520082A - オブジエクト指向言語の実行システム - Google Patents
オブジエクト指向言語の実行システムInfo
- Publication number
- JPH0520082A JPH0520082A JP3327280A JP32728091A JPH0520082A JP H0520082 A JPH0520082 A JP H0520082A JP 3327280 A JP3327280 A JP 3327280A JP 32728091 A JP32728091 A JP 32728091A JP H0520082 A JPH0520082 A JP H0520082A
- Authority
- JP
- Japan
- Prior art keywords
- message
- class
- address
- methods
- method table
- 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
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 処理依頼としてのメッセージと、これに対応
した処理手続きとしてのメソッドとの間の高速バインデ
ィングを実現する。 【構成】 クラス毎に1つのメソッドテーブル11を設
ける。該メソッドテーブル11には、複数のメソッド1
6の各々のアドレスをそれぞれメソッドアドレスとして
格納しておく。メソッドテーブル11中の各メソッドア
ドレスの格納位置を表わすディスプレースメントは、メ
ッセージの種類に応じた定数としてそれぞれコンパイル
時に予め決定しておく。複数のメソッド16のうちの1
つにより処理されるべき種類のメッセージを受け取るオ
ブジェクト13は、メソッドテーブル11のアドレスを
指し示すためのポインタ14を有する。複数のメソッド
16のうちのオブジェクト13が受け取ったメッセージ
に対応したメソッドのアドレスは、ポインタ14とメッ
セージ毎のディスプレースメントとに従ってメソッドテ
ーブル11から得られる。
した処理手続きとしてのメソッドとの間の高速バインデ
ィングを実現する。 【構成】 クラス毎に1つのメソッドテーブル11を設
ける。該メソッドテーブル11には、複数のメソッド1
6の各々のアドレスをそれぞれメソッドアドレスとして
格納しておく。メソッドテーブル11中の各メソッドア
ドレスの格納位置を表わすディスプレースメントは、メ
ッセージの種類に応じた定数としてそれぞれコンパイル
時に予め決定しておく。複数のメソッド16のうちの1
つにより処理されるべき種類のメッセージを受け取るオ
ブジェクト13は、メソッドテーブル11のアドレスを
指し示すためのポインタ14を有する。複数のメソッド
16のうちのオブジェクト13が受け取ったメッセージ
に対応したメソッドのアドレスは、ポインタ14とメッ
セージ毎のディスプレースメントとに従ってメソッドテ
ーブル11から得られる。
Description
【0001】
【産業上の利用分野】本発明は、オブジェクト指向言語
の実行システムに関する。
の実行システムに関する。
【0002】
【従来の技術】先ず、従来技術を説明するにあたって、
本発明が対象としているオブジェクト指向言語につい
て、必要な点を簡単に説明する。
本発明が対象としているオブジェクト指向言語につい
て、必要な点を簡単に説明する。
【0003】オブジェクト指向言語では、メモリ上の構
造データへ処理依頼を送るという形式で処理が進められ
る。この構造データをオブジェクトと呼び、処理依頼を
メッセージと呼ぶ。同じくメモリ上に生成される複数の
オブジェクトは、各々いずれかのクラスに属している。
そして、各クラスに対して、オブジェクトが一度に受け
取った1つの種類のメッセージを処理するための処理手
続き(これをメソッドと呼ぶ。)がメモリ上に定義され
ている。あるクラスの1つのインスタンスとしてのオブ
ジェクトが受け取った同一の種類のメッセージは、その
オブジェクトが属するクラスにおいて、そのメッセージ
に対応するメソッドの実行を通して処理されるのであ
る。
造データへ処理依頼を送るという形式で処理が進められ
る。この構造データをオブジェクトと呼び、処理依頼を
メッセージと呼ぶ。同じくメモリ上に生成される複数の
オブジェクトは、各々いずれかのクラスに属している。
そして、各クラスに対して、オブジェクトが一度に受け
取った1つの種類のメッセージを処理するための処理手
続き(これをメソッドと呼ぶ。)がメモリ上に定義され
ている。あるクラスの1つのインスタンスとしてのオブ
ジェクトが受け取った同一の種類のメッセージは、その
オブジェクトが属するクラスにおいて、そのメッセージ
に対応するメソッドの実行を通して処理されるのであ
る。
【0004】このようにあるメッセージに対して実行す
べきメソッドを対応付ける処理(これをバインディング
と呼ぶ。)は、重要な処理の1つであり、バインディン
グの処理速度がオブジェクト指向言語の実行システム全
体の速度を左右する要因となっている。即ち、オブジェ
クト指向言語の高速実行のためには、高速のバインディ
ングを実現する必要があるのである。なお、クラスに対
するメッセージに応答してそのクラスに属する新たなオ
ブジェクトをメモリ上に生成するためのオブジェクト生
成メソッドもある。
べきメソッドを対応付ける処理(これをバインディング
と呼ぶ。)は、重要な処理の1つであり、バインディン
グの処理速度がオブジェクト指向言語の実行システム全
体の速度を左右する要因となっている。即ち、オブジェ
クト指向言語の高速実行のためには、高速のバインディ
ングを実現する必要があるのである。なお、クラスに対
するメッセージに応答してそのクラスに属する新たなオ
ブジェクトをメモリ上に生成するためのオブジェクト生
成メソッドもある。
【0005】また、オブジェクト指向言語の重要な機能
の1つとして、クラス間のメソッドの継承がある。メソ
ッドの継承とは、あるクラスを作成するときに、指定し
た別のクラス(これをスーパークラスと呼ぶ。)のため
に定義されたメソッドを受け継ぎ、受け継いだメソッド
をそのクラス(これをサブクラスと呼ぶ。)のメソッド
とすることである。但し、サブクラスにおいて、継承し
たメソッドを使わずに、新たにメソッドを定義し直すこ
ともできる。定義し直すとは、あるメッセージに対する
メソッドの継承を実施したうえで、サブクラスでそのメ
ッセージに対するメソッドとして別のメソッドを定義す
ることである。
の1つとして、クラス間のメソッドの継承がある。メソ
ッドの継承とは、あるクラスを作成するときに、指定し
た別のクラス(これをスーパークラスと呼ぶ。)のため
に定義されたメソッドを受け継ぎ、受け継いだメソッド
をそのクラス(これをサブクラスと呼ぶ。)のメソッド
とすることである。但し、サブクラスにおいて、継承し
たメソッドを使わずに、新たにメソッドを定義し直すこ
ともできる。定義し直すとは、あるメッセージに対する
メソッドの継承を実施したうえで、サブクラスでそのメ
ッセージに対するメソッドとして別のメソッドを定義す
ることである。
【0006】例えば、メッセージmに対応するメソッド
MがクラスAに定義されていて、クラスBを作成すると
きにクラスAをスーパークラスとして指定したならば、
クラスBに属するオブジェクトbに送られたメッセージ
mは、クラスAで定義されているメソッドMで処理され
ることになる。ところが、クラスBでメッセージmに対
応するメソッドとしてメソッドMMを定義し直した場合
には、クラスBに属するオブジェクトbに送られたメッ
セージmは、そのクラスBで定義されたメソッドMMで
処理されることになる。但し、この場合でも、クラスA
に属するオブジェクトaに送られたメッセージmは、そ
のクラスAで定義されたメソッドMで処理される。
MがクラスAに定義されていて、クラスBを作成すると
きにクラスAをスーパークラスとして指定したならば、
クラスBに属するオブジェクトbに送られたメッセージ
mは、クラスAで定義されているメソッドMで処理され
ることになる。ところが、クラスBでメッセージmに対
応するメソッドとしてメソッドMMを定義し直した場合
には、クラスBに属するオブジェクトbに送られたメッ
セージmは、そのクラスBで定義されたメソッドMMで
処理されることになる。但し、この場合でも、クラスA
に属するオブジェクトaに送られたメッセージmは、そ
のクラスAで定義されたメソッドMで処理される。
【0007】このように、オブジェクト指向言語の実行
システムでは、オブジェクトに送られたメッセージがど
のメソッドにバインディングされるかは、そのオブジェ
クトがどのクラスに属するかに応じて動的に決定されな
ければならない。
システムでは、オブジェクトに送られたメッセージがど
のメソッドにバインディングされるかは、そのオブジェ
クトがどのクラスに属するかに応じて動的に決定されな
ければならない。
【0008】そこで、次に、図5及び図6を用いて、従
来のバインディングの方式について具体的に説明する。
メッセージは、通例メッセージ間の識別のためのメッセ
ージ識別子とこれに付随した引数とを有する。従来は、
メモリ上にはクラス毎に1つずつメッセージメソッド対
応テーブルが予め作成されており、あるメッセージがオ
ブジェクトに送られてきたときに、そのメッセージ中の
メッセージ識別子をキーとしてメッセージメソッド対応
テーブルを検索することにより、対応するメソッドを決
定していた。これにより、送られてきたメッセージとこ
れに対応するメソッドとの間のバインディングを実現し
ていたのである。
来のバインディングの方式について具体的に説明する。
メッセージは、通例メッセージ間の識別のためのメッセ
ージ識別子とこれに付随した引数とを有する。従来は、
メモリ上にはクラス毎に1つずつメッセージメソッド対
応テーブルが予め作成されており、あるメッセージがオ
ブジェクトに送られてきたときに、そのメッセージ中の
メッセージ識別子をキーとしてメッセージメソッド対応
テーブルを検索することにより、対応するメソッドを決
定していた。これにより、送られてきたメッセージとこ
れに対応するメソッドとの間のバインディングを実現し
ていたのである。
【0009】図5は、従来のオブジェクト指向言語の実
行システムの構成を示す概念図であり、図6は、その実
行システムにおけるメッセージとメソッドとの間のバイ
ンディングの手順を示すフローチャート図である。
行システムの構成を示す概念図であり、図6は、その実
行システムにおけるメッセージとメソッドとの間のバイ
ンディングの手順を示すフローチャート図である。
【0010】図5において、51はあるクラスに関する
クラス情報であり、52はそのクラスに対して指定され
たスーパークラスのクラス情報60へのポインタであ
る。53は、メッセージメソッド対応テーブルであり、
このクラスでメッセージの種類毎に定義されている複数
のメソッド59のアドレス(メソッドへのポインタ)5
5と、各メソッドが処理するメッセージのメッセージ識
別子54とが対の形で格納されたものである。また、5
6はこのクラスに属する1つのオブジェクト、57はク
ラス情報51のアドレスを指し示すためのポインタ、5
8はオブジェクト56のデータの格納領域である。
クラス情報であり、52はそのクラスに対して指定され
たスーパークラスのクラス情報60へのポインタであ
る。53は、メッセージメソッド対応テーブルであり、
このクラスでメッセージの種類毎に定義されている複数
のメソッド59のアドレス(メソッドへのポインタ)5
5と、各メソッドが処理するメッセージのメッセージ識
別子54とが対の形で格納されたものである。また、5
6はこのクラスに属する1つのオブジェクト、57はク
ラス情報51のアドレスを指し示すためのポインタ、5
8はオブジェクト56のデータの格納領域である。
【0011】さて、オブジェクト56にある種類のメッ
セージが送られたとき、図6に示すように、先ずそのオ
ブジェクト56からクラス情報51へのポインタ57を
得る(ステップST61)。次に、そのポインタ57が
指し示すクラス情報51の中からメッセージメソッド対
応テーブル53を得て、そのテーブル53中の複数のメ
ッセージ識別子54の中に送られてきたメッセージのメ
ッセージ識別子と一致するものがあるかどうか検索する
(ステップST62)。続いて、メッセージメソッド対
応テーブル53の中に一致するメッセージ識別子54が
見つかったか否かを判別し(ステップST63)、メッ
セージ識別子54が見つかった場合には、そのメッセー
ジに対応するメソッド59のアドレス55を該メッセー
ジメソッド対応テーブル53の中から得る(ステップS
T64)。見つからなければ、同じクラス情報51の中
のスーパークラスのクラス情報60へのポインタ52を
得て(ステップST65)、今度はそのクラス情報への
ポインタ52に基づいてステップST62以降を繰り返
す。つまり、スーパークラスのためのメッセージメソッ
ド対応テーブルを更に検索することになる。
セージが送られたとき、図6に示すように、先ずそのオ
ブジェクト56からクラス情報51へのポインタ57を
得る(ステップST61)。次に、そのポインタ57が
指し示すクラス情報51の中からメッセージメソッド対
応テーブル53を得て、そのテーブル53中の複数のメ
ッセージ識別子54の中に送られてきたメッセージのメ
ッセージ識別子と一致するものがあるかどうか検索する
(ステップST62)。続いて、メッセージメソッド対
応テーブル53の中に一致するメッセージ識別子54が
見つかったか否かを判別し(ステップST63)、メッ
セージ識別子54が見つかった場合には、そのメッセー
ジに対応するメソッド59のアドレス55を該メッセー
ジメソッド対応テーブル53の中から得る(ステップS
T64)。見つからなければ、同じクラス情報51の中
のスーパークラスのクラス情報60へのポインタ52を
得て(ステップST65)、今度はそのクラス情報への
ポインタ52に基づいてステップST62以降を繰り返
す。つまり、スーパークラスのためのメッセージメソッ
ド対応テーブルを更に検索することになる。
【0012】
【発明が解決しようとする課題】上記従来のオブジェク
ト指向言語の実行システムは、メッセージとメソッドと
の間のバインディングのために、複数対のメッセージ識
別子54とメソッドアドレス55とが格納されたメッセ
ージメソッド対応テーブル53をクラス毎に設けたもの
であって、実行時にメッセージがオブジェクトに送られ
てくる毎にそのメッセージメソッド対応テーブル53を
検索する必要があった。従って、クラス情報51のメモ
リ占有領域が大きくなるとともに、バインディングに多
くの時間を要する問題があった。
ト指向言語の実行システムは、メッセージとメソッドと
の間のバインディングのために、複数対のメッセージ識
別子54とメソッドアドレス55とが格納されたメッセ
ージメソッド対応テーブル53をクラス毎に設けたもの
であって、実行時にメッセージがオブジェクトに送られ
てくる毎にそのメッセージメソッド対応テーブル53を
検索する必要があった。従って、クラス情報51のメモ
リ占有領域が大きくなるとともに、バインディングに多
くの時間を要する問題があった。
【0013】特に、サブクラスに属するオブジェクト5
6に送られてくるメッセージをスーパークラスから継承
されたメソッドへバインディングする場合には、複数回
のテーブル検索が必要になるので、バインディング時間
が非常に長くなる問題があった。
6に送られてくるメッセージをスーパークラスから継承
されたメソッドへバインディングする場合には、複数回
のテーブル検索が必要になるので、バインディング時間
が非常に長くなる問題があった。
【0014】本発明の目的は、クラス毎のテーブルの容
量を小さくするとともに、メッセージとメソッドとの間
の高速のバインディングを実現することにある。
量を小さくするとともに、メッセージとメソッドとの間
の高速のバインディングを実現することにある。
【0015】
【課題を解決するための手段】上記目的を達成するため
に、本発明は、メッセージ識別子を伴なわないメソッド
アドレスが格納されたメソッドテーブルの構成を採用
し、且つ各メソッドアドレスの格納位置を表わすディス
プレースメントをメッセージの種類に応じた定数として
それぞれコンパイル時に予め決定しておく構成を採用し
たものである。
に、本発明は、メッセージ識別子を伴なわないメソッド
アドレスが格納されたメソッドテーブルの構成を採用
し、且つ各メソッドアドレスの格納位置を表わすディス
プレースメントをメッセージの種類に応じた定数として
それぞれコンパイル時に予め決定しておく構成を採用し
たものである。
【0016】具体的に説明すると、請求項1の発明は、
処理依頼としての複数の種類のメッセージの各々に対応
した実行可能な処理手続きとして1つのクラスに対して
メモリ上において互いに異なるアドレスにそれぞれ定義
された複数のメソッドと、前記クラスのために前記メモ
リ上において前記複数のメソッドとは異なるアドレスに
作成され且つ前記複数のメソッドの各々のメモリ上での
アドレスがそれぞれメソッドアドレスとして格納され且
つ各メソッドアドレスの格納位置を表わすディスプレー
スメントが前記複数の種類のメッセージの各々に応じた
定数としてそれぞれコンパイル時に予め決定されたメソ
ッドテーブルと、前記クラスに対して前記メモリ上にお
いて前記複数のメソッド及びメソッドテーブルとは異な
るアドレスに生成され且つ前記メソッドテーブルのメモ
リ上でのアドレスを指し示すためのポインタを有し且つ
一度に前記複数の種類のメッセージのうちの1つを受け
取るオブジェクトとを備えた構成を採用したものであ
る。そして、前記オブジェクトが受け取ったメッセージ
は、前記ポインタと前記メッセージの種類毎の定数とし
てのディスプレースメントとに従って、前記メソッドテ
ーブル中の該メッセージに対応したメソッドアドレスを
通して該メッセージに対応したメソッドにバインディン
グされ、且つ該バインディングされたメソッドの実行を
通して処理を受けるものである。
処理依頼としての複数の種類のメッセージの各々に対応
した実行可能な処理手続きとして1つのクラスに対して
メモリ上において互いに異なるアドレスにそれぞれ定義
された複数のメソッドと、前記クラスのために前記メモ
リ上において前記複数のメソッドとは異なるアドレスに
作成され且つ前記複数のメソッドの各々のメモリ上での
アドレスがそれぞれメソッドアドレスとして格納され且
つ各メソッドアドレスの格納位置を表わすディスプレー
スメントが前記複数の種類のメッセージの各々に応じた
定数としてそれぞれコンパイル時に予め決定されたメソ
ッドテーブルと、前記クラスに対して前記メモリ上にお
いて前記複数のメソッド及びメソッドテーブルとは異な
るアドレスに生成され且つ前記メソッドテーブルのメモ
リ上でのアドレスを指し示すためのポインタを有し且つ
一度に前記複数の種類のメッセージのうちの1つを受け
取るオブジェクトとを備えた構成を採用したものであ
る。そして、前記オブジェクトが受け取ったメッセージ
は、前記ポインタと前記メッセージの種類毎の定数とし
てのディスプレースメントとに従って、前記メソッドテ
ーブル中の該メッセージに対応したメソッドアドレスを
通して該メッセージに対応したメソッドにバインディン
グされ、且つ該バインディングされたメソッドの実行を
通して処理を受けるものである。
【0017】また、請求項2の発明は、複数のクラスの
各々に対して前記複数のメソッド、メソッドテーブル及
びオブジェクトをそれぞれ備え、前記複数のクラスのう
ちの1つのクラスのためのメソッドテーブルと他の1つ
のクラスのためのメソッドテーブルとは、両クラス間で
のメソッドの継承のために、同一のディスプレースメン
トで表わされる位置に同一のメソッドアドレスが各々格
納された構成としている。
各々に対して前記複数のメソッド、メソッドテーブル及
びオブジェクトをそれぞれ備え、前記複数のクラスのう
ちの1つのクラスのためのメソッドテーブルと他の1つ
のクラスのためのメソッドテーブルとは、両クラス間で
のメソッドの継承のために、同一のディスプレースメン
トで表わされる位置に同一のメソッドアドレスが各々格
納された構成としている。
【0018】また、請求項3の発明は、複数のクラスの
各々に対して前記複数のメソッド、メソッドテーブル及
びオブジェクトをそれぞれ備え、前記複数のクラスのう
ちの1つのクラスのためのメソッドテーブルと他の1つ
のクラスのためのメソッドテーブルとは、同一のディス
プレースメントで表わされる位置に異なるメソッドアド
レスが各々格納された構成としている。
各々に対して前記複数のメソッド、メソッドテーブル及
びオブジェクトをそれぞれ備え、前記複数のクラスのう
ちの1つのクラスのためのメソッドテーブルと他の1つ
のクラスのためのメソッドテーブルとは、同一のディス
プレースメントで表わされる位置に異なるメソッドアド
レスが各々格納された構成としている。
【0019】また、請求項4の発明は、前記1つのクラ
スのために作成されたメソッドテーブルは、該クラスに
対して新たに生成されるオブジェクトに占有させるため
に前記メモリ上に確保すべき領域の大きさが更に格納さ
れている構成としたものである。
スのために作成されたメソッドテーブルは、該クラスに
対して新たに生成されるオブジェクトに占有させるため
に前記メモリ上に確保すべき領域の大きさが更に格納さ
れている構成としたものである。
【0020】
【作用】請求項1の発明によれば、ある種類のメッセー
ジがオブジェクトに送られてきたときに、そのオブジェ
クトが有するポインタ中のアドレスとそのメッセージに
対する定数としてのディスプレースメントとを加え合わ
せるだけで、メソッドテーブルの検索を行うことなく該
メッセージに対応したメソッドアドレスを直ちに得るこ
とができ、そのメソッドアドレスを通してメッセージと
メソッドとがバインディングされる。しかも、メソッド
テーブル中のメソッドアドレスはメッセージ識別子を伴
なう必要がないので、そのメソッドテーブルのメモリ占
有領域が従来のメッセージメソッド対応テーブルに比べ
て小さくなる。
ジがオブジェクトに送られてきたときに、そのオブジェ
クトが有するポインタ中のアドレスとそのメッセージに
対する定数としてのディスプレースメントとを加え合わ
せるだけで、メソッドテーブルの検索を行うことなく該
メッセージに対応したメソッドアドレスを直ちに得るこ
とができ、そのメソッドアドレスを通してメッセージと
メソッドとがバインディングされる。しかも、メソッド
テーブル中のメソッドアドレスはメッセージ識別子を伴
なう必要がないので、そのメソッドテーブルのメモリ占
有領域が従来のメッセージメソッド対応テーブルに比べ
て小さくなる。
【0021】また、請求項2の発明によれば、スーパー
クラスとしての1つのクラスのためのメソッドテーブル
と、サブクラスとしての他の1つのクラスのためのメソ
ッドテーブルとは、同一のディスプレースメントで表わ
される位置に同一のメソッドアドレスが各々格納されて
いるので、その同一のメソッドアドレスを通して両クラ
ス間でのメソッドの継承が実現される。つまり、両クラ
ス間で継承されるべきメソッドのアドレスは両メソッド
テーブルにおいて共通のディスプレースメントで表わさ
れる同じ位置に格納されているので、例えばスーパーク
ラスに属するオブジェクトaに送られたメッセージmが
メソッドMにバインディングされる場合には、サブクラ
スに属するオブジェクトbに送られた同一のメッセージ
mも同一のメソッドMにバインディングされることにな
る。しかも、このようにクラス間でのメソッドの継承が
ある場合でも、その継承がない場合と同じく、オブジェ
クトが有するポインタ中のアドレスとメッセージに対す
る定数としてのディスプレースメントとを加え合わせる
だけで、メソッドテーブルの検索を行うことなく所要の
メソッドアドレスを直ちに得ることができる。
クラスとしての1つのクラスのためのメソッドテーブル
と、サブクラスとしての他の1つのクラスのためのメソ
ッドテーブルとは、同一のディスプレースメントで表わ
される位置に同一のメソッドアドレスが各々格納されて
いるので、その同一のメソッドアドレスを通して両クラ
ス間でのメソッドの継承が実現される。つまり、両クラ
ス間で継承されるべきメソッドのアドレスは両メソッド
テーブルにおいて共通のディスプレースメントで表わさ
れる同じ位置に格納されているので、例えばスーパーク
ラスに属するオブジェクトaに送られたメッセージmが
メソッドMにバインディングされる場合には、サブクラ
スに属するオブジェクトbに送られた同一のメッセージ
mも同一のメソッドMにバインディングされることにな
る。しかも、このようにクラス間でのメソッドの継承が
ある場合でも、その継承がない場合と同じく、オブジェ
クトが有するポインタ中のアドレスとメッセージに対す
る定数としてのディスプレースメントとを加え合わせる
だけで、メソッドテーブルの検索を行うことなく所要の
メソッドアドレスを直ちに得ることができる。
【0022】また、請求項3の発明によれば、スーパー
クラスとしての1つのクラスのためのメソッドテーブル
と、サブクラスとしての他の1つのクラスのためのメソ
ッドテーブルとは、同一のディスプレースメントで表わ
される位置に異なるメソッドアドレスが各々格納されて
おり、前述のメソッドの定義し直しに対応することがで
きる。例えばスーパークラスでメッセージmに対応する
メソッドとしてメソッドMを定義する一方、サブクラス
で同じメッセージmに対応するメソッドとしてメソッド
MMを定義し直した場合には、そのスーパークラスに属
するオブジェクトaに送られたメッセージmはメソッド
Mにバインディングされるのに対して、そのサブクラス
に属するオブジェクトbに送られた同一のメッセージm
は異なるメソッドMMにバインディングされることにな
る。
クラスとしての1つのクラスのためのメソッドテーブル
と、サブクラスとしての他の1つのクラスのためのメソ
ッドテーブルとは、同一のディスプレースメントで表わ
される位置に異なるメソッドアドレスが各々格納されて
おり、前述のメソッドの定義し直しに対応することがで
きる。例えばスーパークラスでメッセージmに対応する
メソッドとしてメソッドMを定義する一方、サブクラス
で同じメッセージmに対応するメソッドとしてメソッド
MMを定義し直した場合には、そのスーパークラスに属
するオブジェクトaに送られたメッセージmはメソッド
Mにバインディングされるのに対して、そのサブクラス
に属するオブジェクトbに送られた同一のメッセージm
は異なるメソッドMMにバインディングされることにな
る。
【0023】また、請求項4の発明によれば、前記各メ
ソッドアドレスに加えて、新たなオブジェクトの生成の
ために必要なメモリ占有領域の大きさが、クラス毎のメ
ソッドテーブルに格納されている。クラスに対するメッ
セージに応答してそのクラスに属する新たなオブジェク
トをメモリ上に生成するための前述のオブジェクト生成
メソッドの実行を起動するためには、メソッドのアドレ
スが格納されたテーブルのアドレスをそのオブジェクト
生成メソッドに引き渡すだけでなく、生成すべきオブジ
ェクトの大きさをも該オブジェクト生成メソッドに引き
渡す必要がある。ところが、請求項4の発明によれば、
オブジェクトの所要の大きさがメソッドテーブルの中に
格納されているので、メソッドテーブルのアドレスを1
つの引数としてオブジェクト生成メソッドに引き渡すだ
けでよく、そのオブジェクト生成メソッドによる引数の
処理時間が短縮できる。しかも、メソッドテーブルのア
ドレスを受け取ったオブジェクト生成メソッドは、生成
すべきオブジェクトのためにメモリ上に所要の大きさの
領域を確保したうえで、その領域の中に設けたメソッド
テーブルへのポインタの中に先に引数として受け取った
メソッドテーブルのアドレスを書き込むことにより、そ
のメソッドテーブルに関連付けられた新たなオブジェク
トを生成することができる。これにより、その新たなオ
ブジェクトについても、メッセージとメソッドとの間の
高速バインディングを担保できることとなる。
ソッドアドレスに加えて、新たなオブジェクトの生成の
ために必要なメモリ占有領域の大きさが、クラス毎のメ
ソッドテーブルに格納されている。クラスに対するメッ
セージに応答してそのクラスに属する新たなオブジェク
トをメモリ上に生成するための前述のオブジェクト生成
メソッドの実行を起動するためには、メソッドのアドレ
スが格納されたテーブルのアドレスをそのオブジェクト
生成メソッドに引き渡すだけでなく、生成すべきオブジ
ェクトの大きさをも該オブジェクト生成メソッドに引き
渡す必要がある。ところが、請求項4の発明によれば、
オブジェクトの所要の大きさがメソッドテーブルの中に
格納されているので、メソッドテーブルのアドレスを1
つの引数としてオブジェクト生成メソッドに引き渡すだ
けでよく、そのオブジェクト生成メソッドによる引数の
処理時間が短縮できる。しかも、メソッドテーブルのア
ドレスを受け取ったオブジェクト生成メソッドは、生成
すべきオブジェクトのためにメモリ上に所要の大きさの
領域を確保したうえで、その領域の中に設けたメソッド
テーブルへのポインタの中に先に引数として受け取った
メソッドテーブルのアドレスを書き込むことにより、そ
のメソッドテーブルに関連付けられた新たなオブジェク
トを生成することができる。これにより、その新たなオ
ブジェクトについても、メッセージとメソッドとの間の
高速バインディングを担保できることとなる。
【0024】
【実施例】以下、本発明の実施例を図面に基づいて詳細
に説明する。
に説明する。
【0025】図1は、本発明の一実施例に係るオブジェ
クト指向言語の実行システムの構成を示す概念図であ
り、図2は、その実行システムにおけるメッセージとメ
ソッドとの間のバインディングの手順を示すフローチャ
ート図である。
クト指向言語の実行システムの構成を示す概念図であ
り、図2は、その実行システムにおけるメッセージとメ
ソッドとの間のバインディングの手順を示すフローチャ
ート図である。
【0026】図1において、11はあるクラスのための
メソッドテーブルであり、12はこのクラスでメッセー
ジの種類毎に定義されている複数のメソッド16の各々
へのポインタ(各メソッドアドレスを格納したもの)で
ある。また、13はこのクラスに属する1つのオブジェ
クト、14はメソッドテーブル11のアドレスを指し示
すためのポインタ、15はオブジェクト13のデータの
格納領域である。
メソッドテーブルであり、12はこのクラスでメッセー
ジの種類毎に定義されている複数のメソッド16の各々
へのポインタ(各メソッドアドレスを格納したもの)で
ある。また、13はこのクラスに属する1つのオブジェ
クト、14はメソッドテーブル11のアドレスを指し示
すためのポインタ、15はオブジェクト13のデータの
格納領域である。
【0027】クラス間におけるメソッドの継承がある場
合、メソッドテーブル11は、スーパークラスからこの
クラス(サブクラス)へ継承されたメソッド16のアド
レスが先ず並び、その後に該サブクラスで追加定義され
たメソッド16のアドレスが並ぶようにメモリ上に作成
される。つまり、このクラスのメソッドテーブル11
と、該クラスに対して指定されたスーパークラスのメソ
ッドテーブルとは、継承された共通のメソッド16に関
する同一のメソッドアドレスが各テーブル内において同
じ位置に格納されているのである。但し、該サブクラス
で定義し直したメソッド16については、メソッドテー
ブル11中の継承されたメソッドのアドレスが、その順
番を変えずに該サブクラスで定義し直したメソッド16
のアドレスに置き換えられるのである。
合、メソッドテーブル11は、スーパークラスからこの
クラス(サブクラス)へ継承されたメソッド16のアド
レスが先ず並び、その後に該サブクラスで追加定義され
たメソッド16のアドレスが並ぶようにメモリ上に作成
される。つまり、このクラスのメソッドテーブル11
と、該クラスに対して指定されたスーパークラスのメソ
ッドテーブルとは、継承された共通のメソッド16に関
する同一のメソッドアドレスが各テーブル内において同
じ位置に格納されているのである。但し、該サブクラス
で定義し直したメソッド16については、メソッドテー
ブル11中の継承されたメソッドのアドレスが、その順
番を変えずに該サブクラスで定義し直したメソッド16
のアドレスに置き換えられるのである。
【0028】以上のとおり、このメソッドテーブル11
内での各メソッドアドレスの格納位置を表わすディスプ
レースメント、即ち、あるメッセージに対して該メソッ
ドテーブル11の何番目に格納されたメソッドアドレス
をアクセスすべきかを表わす数値は、各メソッド16に
対応するメッセージの種類の各々に応じた定数となって
おり、それぞれコンパイル時に予め決定される。特に継
承されたメソッドについては、スーパークラスとサブク
ラスとで同じディスプレースメントを使用することがで
きるのである。
内での各メソッドアドレスの格納位置を表わすディスプ
レースメント、即ち、あるメッセージに対して該メソッ
ドテーブル11の何番目に格納されたメソッドアドレス
をアクセスすべきかを表わす数値は、各メソッド16に
対応するメッセージの種類の各々に応じた定数となって
おり、それぞれコンパイル時に予め決定される。特に継
承されたメソッドについては、スーパークラスとサブク
ラスとで同じディスプレースメントを使用することがで
きるのである。
【0029】さて、オブジェクト13にある種類のメッ
セージが送られたとき、図2に示すように、先ずそのオ
ブジェクト13中のポインタ14からメソッドテーブル
11のアドレス(先頭のメソッドアドレスの格納位置)
を得る(ステップST21)。このオブジェクト13が
受け取ったメッセージにバインディングすべきメソッド
16のアドレスは、そのメソッドテーブル11中におい
て、そのメッセージの種類に応じた定数のディスプレー
スメントで表わされた位置に格納されているから、メソ
ッドテーブル11を検索しなくとも該当するメソッドア
ドレスが直ちに得られる(ステップST22)。つま
り、そのメソッドアドレスを内容とするメソッド16へ
のポインタ12を通して、実行すべきメソッド16を直
ちに指定できるのである。
セージが送られたとき、図2に示すように、先ずそのオ
ブジェクト13中のポインタ14からメソッドテーブル
11のアドレス(先頭のメソッドアドレスの格納位置)
を得る(ステップST21)。このオブジェクト13が
受け取ったメッセージにバインディングすべきメソッド
16のアドレスは、そのメソッドテーブル11中におい
て、そのメッセージの種類に応じた定数のディスプレー
スメントで表わされた位置に格納されているから、メソ
ッドテーブル11を検索しなくとも該当するメソッドア
ドレスが直ちに得られる(ステップST22)。つま
り、そのメソッドアドレスを内容とするメソッド16へ
のポインタ12を通して、実行すべきメソッド16を直
ちに指定できるのである。
【0030】以上のとおり本実施例によれば、多くの時
間を要するテーブル検索を行うことなく、たった2回の
ポインタ14,12の参照によってメッセージとメソッ
ドとの間のバインディングを実現できるので、バインデ
ィング時間が非常に短くなる。また、たった2回のポイ
ンタの参照によってバインディングを実現できる点は継
承されたメソッドの場合も同様であり、従来は複数回の
テーブル検索が必要であったのに比べてバインディング
時間を大幅に短縮することができる。しかも、メソッド
テーブル11中の各メソッドアドレスはいずれもメッセ
ージ識別子を伴なう必要がないので、そのメソッドテー
ブル11の容量を従来のメッセージメソッド対応テーブ
ル(図5中の53)に比べて半減することができる。
間を要するテーブル検索を行うことなく、たった2回の
ポインタ14,12の参照によってメッセージとメソッ
ドとの間のバインディングを実現できるので、バインデ
ィング時間が非常に短くなる。また、たった2回のポイ
ンタの参照によってバインディングを実現できる点は継
承されたメソッドの場合も同様であり、従来は複数回の
テーブル検索が必要であったのに比べてバインディング
時間を大幅に短縮することができる。しかも、メソッド
テーブル11中の各メソッドアドレスはいずれもメッセ
ージ識別子を伴なう必要がないので、そのメソッドテー
ブル11の容量を従来のメッセージメソッド対応テーブ
ル(図5中の53)に比べて半減することができる。
【0031】次に、以上の実施例を更に具体的に説明す
る。図3は、図1の構成を2つのクラスA,Bについて
具体化した構成を示す概念図である。但し、クラスB
は、クラスAをスーパークラスとするサブクラスであ
る。
る。図3は、図1の構成を2つのクラスA,Bについて
具体化した構成を示す概念図である。但し、クラスB
は、クラスAをスーパークラスとするサブクラスであ
る。
【0032】図3において、31はクラスAのメソッド
テーブル、32はクラスAに属する1つのオブジェク
ト、33はクラスBのメソッドテーブル、34はクラス
Bに属する1つのオブジェクトである。また、35は、
クラスAについて定義された2つのメソッドであって、
メソッドMはメッセージmを処理するためのメソッド、
メソッドNはメッセージnを処理するためのメソッドで
ある。36は、クラスBについて定義されたメソッドで
ある。但し、クラスAをスーパークラスとするクラスB
は、クラスAからメソッドM,Nをそのまま継承するの
ではなくてメッセージmに対応するメソッドをメソッド
MMに定義し直したうえで、メッセージtを処理するた
めのメソッドTを追加定義したものである。
テーブル、32はクラスAに属する1つのオブジェク
ト、33はクラスBのメソッドテーブル、34はクラス
Bに属する1つのオブジェクトである。また、35は、
クラスAについて定義された2つのメソッドであって、
メソッドMはメッセージmを処理するためのメソッド、
メソッドNはメッセージnを処理するためのメソッドで
ある。36は、クラスBについて定義されたメソッドで
ある。但し、クラスAをスーパークラスとするクラスB
は、クラスAからメソッドM,Nをそのまま継承するの
ではなくてメッセージmに対応するメソッドをメソッド
MMに定義し直したうえで、メッセージtを処理するた
めのメソッドTを追加定義したものである。
【0033】この図3を用いて、先ず、コンパイラ等に
よって行われるメソッドテーブル31,33の作成の手
順を簡単に説明する。
よって行われるメソッドテーブル31,33の作成の手
順を簡単に説明する。
【0034】メソッドテーブルは、クラス階層における
上位のクラスから順に作成される。即ち、図3では、ク
ラスBのスーパークラスとなるクラスAのメソッドテー
ブル31の方から先に作成される。クラスAではメソッ
ドMとメソッドNとが実行可能なメソッドとして定義さ
れているので、メソッドMとメソッドNとの各々のアド
レスが格納されたメソッドテーブル31が作成される。
このとき、各メッセージに対応するメソッドの各アドレ
スのメソッドテーブル31における格納位置、即ち、そ
のメソッドテーブル31内でのディスプレースメント
が、各々定数として決定される。図3の場合には、クラ
スAにおいてメッセージmに対応するメソッドMは、そ
のメソッドテーブル31の1番目のメソッドであると決
定され、メッセージnに対応するメソッドNは、2番目
のメソッドであると決定されるのである。
上位のクラスから順に作成される。即ち、図3では、ク
ラスBのスーパークラスとなるクラスAのメソッドテー
ブル31の方から先に作成される。クラスAではメソッ
ドMとメソッドNとが実行可能なメソッドとして定義さ
れているので、メソッドMとメソッドNとの各々のアド
レスが格納されたメソッドテーブル31が作成される。
このとき、各メッセージに対応するメソッドの各アドレ
スのメソッドテーブル31における格納位置、即ち、そ
のメソッドテーブル31内でのディスプレースメント
が、各々定数として決定される。図3の場合には、クラ
スAにおいてメッセージmに対応するメソッドMは、そ
のメソッドテーブル31の1番目のメソッドであると決
定され、メッセージnに対応するメソッドNは、2番目
のメソッドであると決定されるのである。
【0035】次に、既にメソッドテーブルが作成された
クラスをスーパークラスとする他のクラスのメソッドテ
ーブルが作成される。即ち、図3では、クラスAをスー
パークラスとするクラスBのメソッドテーブル33が作
成される。そこでは、先ず、スーパークラスAのメソッ
ドテーブル31がコピーされてクラスBのメソッドテー
ブル33の原型が作成される。これにより、オブジェク
ト指向言語の重要な機能の1つであるメソッドの継承が
実現される。そして、クラスBで定義し直されたメッセ
ージmに対応するメソッドMMのアドレスを、メソッド
テーブル33のメッセージmに対応する位置、即ち、1
番目に格納する。そして、クラスBで新しく定義された
メッセージtに対応するメソッドTのアドレスをメソッ
ドテーブル33に追加格納する。このとき、メッセージ
tに対応するメソッドTは、メソッドテーブル33の3
番目であると決定される。
クラスをスーパークラスとする他のクラスのメソッドテ
ーブルが作成される。即ち、図3では、クラスAをスー
パークラスとするクラスBのメソッドテーブル33が作
成される。そこでは、先ず、スーパークラスAのメソッ
ドテーブル31がコピーされてクラスBのメソッドテー
ブル33の原型が作成される。これにより、オブジェク
ト指向言語の重要な機能の1つであるメソッドの継承が
実現される。そして、クラスBで定義し直されたメッセ
ージmに対応するメソッドMMのアドレスを、メソッド
テーブル33のメッセージmに対応する位置、即ち、1
番目に格納する。そして、クラスBで新しく定義された
メッセージtに対応するメソッドTのアドレスをメソッ
ドテーブル33に追加格納する。このとき、メッセージ
tに対応するメソッドTは、メソッドテーブル33の3
番目であると決定される。
【0036】以上の手続きを繰り返すことにより、全て
のクラスのためのメソッドテーブルが作成されることに
なる。この結果、図3の例では、クラスAのサブクラス
としてのクラスBのメソッドテーブル33におけるメソ
ッドアドレスの順番は、先ず、メッセージmに対応する
クラスAのメソッドMを定義し直した同じメッセージm
に対応するメソッドMMのアドレスと、メッセージnに
対応するようにクラスAから継承を受けたメソッドNの
アドレスとが並び、その後に、新たに定義されたメソッ
ドTのアドレスが入る順番となっている。つまり、両メ
ソッドテーブル31,33をオブジェクト32,34の
側から見ると、メッセージmに対応する位置はいずれも
1番目、メッセージnに対応する位置はいずれも2番目
となる。また、メッセージtに対応する位置は3番目と
なる。このように、両メソッドテーブル31,33中の
ディスプレースメントは、オブジェクト及びクラスの違
いを越えて、メッセージの種類毎にコンパイル時に予め
一意に決定される。
のクラスのためのメソッドテーブルが作成されることに
なる。この結果、図3の例では、クラスAのサブクラス
としてのクラスBのメソッドテーブル33におけるメソ
ッドアドレスの順番は、先ず、メッセージmに対応する
クラスAのメソッドMを定義し直した同じメッセージm
に対応するメソッドMMのアドレスと、メッセージnに
対応するようにクラスAから継承を受けたメソッドNの
アドレスとが並び、その後に、新たに定義されたメソッ
ドTのアドレスが入る順番となっている。つまり、両メ
ソッドテーブル31,33をオブジェクト32,34の
側から見ると、メッセージmに対応する位置はいずれも
1番目、メッセージnに対応する位置はいずれも2番目
となる。また、メッセージtに対応する位置は3番目と
なる。このように、両メソッドテーブル31,33中の
ディスプレースメントは、オブジェクト及びクラスの違
いを越えて、メッセージの種類毎にコンパイル時に予め
一意に決定される。
【0037】さて、以上に説明した図3の例では、クラ
スAに属するオブジェクト32にメッセージmを送った
場合には、クラスAのメソッドテーブル31の1番目の
メソッドアドレスで示されるメソッドMがメッセージm
にバインディングされる。一方、クラスBに属するオブ
ジェクト34にメッセージmを送った場合には、クラス
Bのメソッドテーブル33の1番目のメソッドアドレス
で示されるメソッドMMがメッセージmにバインディン
グされる。これに対してクラスAに属するオブジェクト
32にメッセージnを送ったときにはメソッドNが、ク
ラスBに属するオブジェクト34にメッセージnを送っ
たときにも同じくメソッドNが、各々メッセージnにバ
インディングされる。また、クラスBに属するオブジェ
クト34にメッセージtを送ったときには、メソッドT
がメッセージtにバインディングされる。このように図
3の例によれば、クラス間のメソッドの継承の機能と同
時に、メッセージとメソッドとの間の動的バインディン
グを実現することができるのである。
スAに属するオブジェクト32にメッセージmを送った
場合には、クラスAのメソッドテーブル31の1番目の
メソッドアドレスで示されるメソッドMがメッセージm
にバインディングされる。一方、クラスBに属するオブ
ジェクト34にメッセージmを送った場合には、クラス
Bのメソッドテーブル33の1番目のメソッドアドレス
で示されるメソッドMMがメッセージmにバインディン
グされる。これに対してクラスAに属するオブジェクト
32にメッセージnを送ったときにはメソッドNが、ク
ラスBに属するオブジェクト34にメッセージnを送っ
たときにも同じくメソッドNが、各々メッセージnにバ
インディングされる。また、クラスBに属するオブジェ
クト34にメッセージtを送ったときには、メソッドT
がメッセージtにバインディングされる。このように図
3の例によれば、クラス間のメソッドの継承の機能と同
時に、メッセージとメソッドとの間の動的バインディン
グを実現することができるのである。
【0038】次に、本発明の他の実施例を図面に基づい
て説明する。
て説明する。
【0039】図4は、本発明の他の実施例に係るオブジ
ェクト指向言語の実行システムの構成を示す概念図であ
る。同図において、41は、先頭にオブジェクト13の
大きさを格納するための領域42を備えたメソッドテー
ブルである。全てのクラスに対して、このようなメソッ
ドテーブル41が各々1つずつ作成される。各クラスの
ためのメソッドテーブル41の先頭領域42には、当該
クラスに属する新たなオブジェクト13を生成する際に
該オブジェクト13に占有させるためにメモリ上に確保
すべき領域の大きさが、コンパイル時に予め格納されて
いる。メソッドテーブル41は、このオブジェクトの大
きさの格納領域42の後に、図1の場合と同様の各メソ
ッド16へのポインタ12が並ぶ構成となっている。
ェクト指向言語の実行システムの構成を示す概念図であ
る。同図において、41は、先頭にオブジェクト13の
大きさを格納するための領域42を備えたメソッドテー
ブルである。全てのクラスに対して、このようなメソッ
ドテーブル41が各々1つずつ作成される。各クラスの
ためのメソッドテーブル41の先頭領域42には、当該
クラスに属する新たなオブジェクト13を生成する際に
該オブジェクト13に占有させるためにメモリ上に確保
すべき領域の大きさが、コンパイル時に予め格納されて
いる。メソッドテーブル41は、このオブジェクトの大
きさの格納領域42の後に、図1の場合と同様の各メソ
ッド16へのポインタ12が並ぶ構成となっている。
【0040】しかも、いずれのクラスのためのメソッド
テーブル41についてもオブジェクトの大きさの格納領
域42のサイズは一定であって、各メソッドアドレスの
格納位置を表わすディスプレースメントには、図1の場
合に比べて領域42の一定のサイズ分だけバイアスが与
えられる。従って、メソッドテーブル41中の各メソッ
ドアドレスに関するディスプレースメントがオブジェク
ト及びクラスの違いを越えてメッセージの種類毎にコン
パイル時に予め一意に決定され、且つメッセージとメソ
ッドとの間の高速バインディングが実現できる点は、図
1に示す前実施例の場合と同様である。
テーブル41についてもオブジェクトの大きさの格納領
域42のサイズは一定であって、各メソッドアドレスの
格納位置を表わすディスプレースメントには、図1の場
合に比べて領域42の一定のサイズ分だけバイアスが与
えられる。従って、メソッドテーブル41中の各メソッ
ドアドレスに関するディスプレースメントがオブジェク
ト及びクラスの違いを越えてメッセージの種類毎にコン
パイル時に予め一意に決定され、且つメッセージとメソ
ッドとの間の高速バインディングが実現できる点は、図
1に示す前実施例の場合と同様である。
【0041】さて、クラスに対するメッセージに応答し
てそのクラスに属する新たなオブジェクトをメモリ上に
生成するためには、オブジェクト生成メソッドを起動し
なければならない。そして、この起動に際しては、メソ
ッドのアドレスが格納されたテーブルのアドレスをその
オブジェクト生成メソッドに引き渡すだけでなく、生成
すべきオブジェクトの大きさをも該オブジェクト生成メ
ソッドに引き渡す必要がある。従って、図1に示す前実
施例の場合には、オブジェクト13を生成するためのオ
ブジェクト生成メソッドに対して、メソッドテーブル1
1のアドレスを1つの引数として渡してやるだけでな
く、生成すべきオブジェクト13の大きさを別の引数と
して渡してやることになる。ところが、図4に示す本実
施例によれば、オブジェクト13の所要の大きさがメソ
ッドテーブル41の中に格納されているので、そのメソ
ッドテーブル41のアドレスを1つの引数としてオブジ
ェクト生成メソッドに引き渡すだけでよく、オブジェク
ト生成メソッドによる引数の処理時間が短縮できる。つ
まり、オブジェクト生成メソッドの高速起動が可能にな
るのである。一般に、オブジュクト指向言語で記述され
たプログラムではオブジェクトの生成を頻繁に行うの
で、オブジェクト生成メソッドの起動の高速化を通し
て、プログラム全体の実行速度を大幅に向上させること
ができる。
てそのクラスに属する新たなオブジェクトをメモリ上に
生成するためには、オブジェクト生成メソッドを起動し
なければならない。そして、この起動に際しては、メソ
ッドのアドレスが格納されたテーブルのアドレスをその
オブジェクト生成メソッドに引き渡すだけでなく、生成
すべきオブジェクトの大きさをも該オブジェクト生成メ
ソッドに引き渡す必要がある。従って、図1に示す前実
施例の場合には、オブジェクト13を生成するためのオ
ブジェクト生成メソッドに対して、メソッドテーブル1
1のアドレスを1つの引数として渡してやるだけでな
く、生成すべきオブジェクト13の大きさを別の引数と
して渡してやることになる。ところが、図4に示す本実
施例によれば、オブジェクト13の所要の大きさがメソ
ッドテーブル41の中に格納されているので、そのメソ
ッドテーブル41のアドレスを1つの引数としてオブジ
ェクト生成メソッドに引き渡すだけでよく、オブジェク
ト生成メソッドによる引数の処理時間が短縮できる。つ
まり、オブジェクト生成メソッドの高速起動が可能にな
るのである。一般に、オブジュクト指向言語で記述され
たプログラムではオブジェクトの生成を頻繁に行うの
で、オブジェクト生成メソッドの起動の高速化を通し
て、プログラム全体の実行速度を大幅に向上させること
ができる。
【0042】このようにしてメソッドテーブル41のア
ドレスを受け取ったオブジェクト生成メソッドは、オブ
ジェクトの大きさの格納領域42の内容に従って、生成
すべきオブジェクト13をあるメモリ領域に割り付けた
うえで、そのメモリ領域中のポインタ14の中に先に引
数として受け取ったメソッドテーブル41のアドレスを
書き込むことにより、そのメソッドテーブル41に関連
付けられた新たなオブジェクト13を生成する。これに
より、その新たなオブジェクト13についても、2つの
ポインタ14,12を通したメッセージとメソッドとの
間の高速バインディングを担保できることとなる。
ドレスを受け取ったオブジェクト生成メソッドは、オブ
ジェクトの大きさの格納領域42の内容に従って、生成
すべきオブジェクト13をあるメモリ領域に割り付けた
うえで、そのメモリ領域中のポインタ14の中に先に引
数として受け取ったメソッドテーブル41のアドレスを
書き込むことにより、そのメソッドテーブル41に関連
付けられた新たなオブジェクト13を生成する。これに
より、その新たなオブジェクト13についても、2つの
ポインタ14,12を通したメッセージとメソッドとの
間の高速バインディングを担保できることとなる。
【0043】
【発明の効果】以上説明してきたとおり、請求項1の発
明によれば、クラス毎のメソッドテーブル中の各メソッ
ドアドレスの格納位置を表わすディスプレースメントを
メッセージの種類に応じた定数としてそれぞれコンパイ
ル時に予め決定しておく構成を採用したので、オブジェ
クト中においてそのメソッドテーブルのアドレスを指し
示すポインタとメッセージの種類毎の定数としてのディ
スプレースメントとのみに基づいて、メソッドテーブル
の検索を行うことなく、オブジェクトが受け取ったメッ
セージをメソッドに対して高速にバインディングするこ
とができる。しかも、メソッドテーブル中のメソッドア
ドレスは従来とは違って検索のためのメッセージ識別子
を伴なう必要がないので、そのメソッドテーブルがメモ
リ上に占める容量を従来に比べて低減することができ
る。
明によれば、クラス毎のメソッドテーブル中の各メソッ
ドアドレスの格納位置を表わすディスプレースメントを
メッセージの種類に応じた定数としてそれぞれコンパイ
ル時に予め決定しておく構成を採用したので、オブジェ
クト中においてそのメソッドテーブルのアドレスを指し
示すポインタとメッセージの種類毎の定数としてのディ
スプレースメントとのみに基づいて、メソッドテーブル
の検索を行うことなく、オブジェクトが受け取ったメッ
セージをメソッドに対して高速にバインディングするこ
とができる。しかも、メソッドテーブル中のメソッドア
ドレスは従来とは違って検索のためのメッセージ識別子
を伴なう必要がないので、そのメソッドテーブルがメモ
リ上に占める容量を従来に比べて低減することができ
る。
【0044】また、請求項2の発明によれば、2つのク
ラスの各々のためのメソッドテーブルは同一のディスプ
レースメントで表わされる位置に同一のメソッドアドレ
スが各々格納された構成を採用したので、その同一のメ
ソッドアドレスを通して両クラス間でのメソッドの継承
を実現すると同時に、メッセージとメソッドとの間の高
速バインディングを実現することができる。
ラスの各々のためのメソッドテーブルは同一のディスプ
レースメントで表わされる位置に同一のメソッドアドレ
スが各々格納された構成を採用したので、その同一のメ
ソッドアドレスを通して両クラス間でのメソッドの継承
を実現すると同時に、メッセージとメソッドとの間の高
速バインディングを実現することができる。
【0045】また、請求項3の発明によれば、2つのク
ラスの各々のためのメソッドテーブルは同一のディスプ
レースメントで表わされる位置に異なるメソッドアドレ
スが各々格納された構成を採用したので、メソッドの定
義し直しを含む動的なバインディングに対応することが
できる。
ラスの各々のためのメソッドテーブルは同一のディスプ
レースメントで表わされる位置に異なるメソッドアドレ
スが各々格納された構成を採用したので、メソッドの定
義し直しを含む動的なバインディングに対応することが
できる。
【0046】また、請求項4の発明によれば、前記各メ
ソッドアドレスに加えて、新たなオブジェクトの生成の
ために必要なメモリの大きさを更にメソッドテーブルに
格納した構成を採用したので、メソッドテーブルのアド
レスを1つの引数としてオブジェクト生成メソッドに引
き渡すだけでよく、そのオブジェクト生成メソッドによ
る引数の処理時間が短縮でき、該オブジェクト生成メソ
ッドはメッセージとメソッドとの間の高速バインディン
グが担保された新たなオブジェクトを高速に生成するこ
とができる。
ソッドアドレスに加えて、新たなオブジェクトの生成の
ために必要なメモリの大きさを更にメソッドテーブルに
格納した構成を採用したので、メソッドテーブルのアド
レスを1つの引数としてオブジェクト生成メソッドに引
き渡すだけでよく、そのオブジェクト生成メソッドによ
る引数の処理時間が短縮でき、該オブジェクト生成メソ
ッドはメッセージとメソッドとの間の高速バインディン
グが担保された新たなオブジェクトを高速に生成するこ
とができる。
【図1】本発明の一実施例に係るオブジェクト指向言語
の実行システムの構成を示す概念図である。
の実行システムの構成を示す概念図である。
【図2】図1のオブジェクト指向言語の実行システムに
おけるメッセージとメソッドとの間のバインディングの
手順を示すフローチャート図である。
おけるメッセージとメソッドとの間のバインディングの
手順を示すフローチャート図である。
【図3】図1の構成を2つのクラスについて具体化した
構成を示す概念図である。
構成を示す概念図である。
【図4】本発明の他の実施例に係るオブジェクト指向言
語の実行システムの構成を示す概念図である。
語の実行システムの構成を示す概念図である。
【図5】従来のオブジェクト指向言語の実行システムの
構成を示す概念図である。
構成を示す概念図である。
【図6】図5のオブジェクト指向言語の実行システムに
おけるメッセージとメソッドとの間のバインディングの
手順を示すフローチャート図である。
おけるメッセージとメソッドとの間のバインディングの
手順を示すフローチャート図である。
11,31,33,41 メソッドテーブル
12 メソッドへのポインタ
13,32,34 オブジェクト
14 メソッドテーブルへのポイン
タ 16,35,36 メソッド 42 オブジェクトの大きさの格納
領域
タ 16,35,36 メソッド 42 オブジェクトの大きさの格納
領域
Claims (4)
- 【請求項1】 処理依頼としての複数の種類のメッセー
ジの各々に対応した実行可能な処理手続きとして、1つ
のクラスに対してメモリ上において互いに異なるアドレ
スにそれぞれ定義された複数のメソッドと、 前記クラスのために前記メモリ上において前記複数のメ
ソッドとは異なるアドレスに作成され、且つ前記複数の
メソッドの各々のメモリ上でのアドレスがそれぞれメソ
ッドアドレスとして格納され、且つ各メソッドアドレス
の格納位置を表わすディスプレースメントが前記複数の
種類のメッセージの各々に応じた定数としてそれぞれコ
ンパイル時に予め決定されたメソッドテーブルと、 前記クラスに対して前記メモリ上において前記複数のメ
ソッド及びメソッドテーブルとは異なるアドレスに生成
され、且つ前記メソッドテーブルのメモリ上でのアドレ
スを指し示すためのポインタを有し、且つ一度に前記複
数の種類のメッセージのうちの1つを受け取るオブジェ
クトとを備え、 前記オブジェクトが受け取ったメッセージは、前記ポイ
ンタと前記メッセージの種類毎の定数としてのディスプ
レースメントとに従って、前記メソッドテーブル中の該
メッセージに対応したメソッドアドレスを通して該メッ
セージに対応したメソッドにバインディングされ、且つ
該バインディングされたメソッドの実行を通して処理を
受けることを特徴とするオブジェクト指向言語の実行シ
ステム。 - 【請求項2】 複数のクラスの各々に対して前記複数の
メソッド、メソッドテーブル及びオブジェクトをそれぞ
れ備え、 前記複数のクラスのうちの1つのクラスのためのメソッ
ドテーブルと他の1つのクラスのためのメソッドテーブ
ルとは、両クラス間でのメソッドの継承のために、同一
のディスプレースメントで表わされる位置に同一のメソ
ッドアドレスが各々格納されていることを特徴とする請
求項1記載のオブジェクト指向言語の実行システム。 - 【請求項3】 複数のクラスの各々に対して前記複数の
メソッド、メソッドテーブル及びオブジェクトをそれぞ
れ備え、 前記複数のクラスのうちの1つのクラスのためのメソッ
ドテーブルと他の1つのクラスのためのメソッドテーブ
ルとは、同一のディスプレースメントで表わされる位置
に異なるメソッドアドレスが各々格納されていることを
特徴とする請求項1記載のオブジェクト指向言語の実行
システム。 - 【請求項4】 前記1つのクラスのために作成されたメ
ソッドテーブルは、該クラスに対して新たに生成される
オブジェクトに占有させるために前記メモリ上に確保す
べき領域の大きさが更に格納されていることを特徴とす
る請求項1記載のオブジェクト指向言語の実行システ
ム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2-405862 | 1990-12-25 | ||
| JP40586290 | 1990-12-25 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0520082A true JPH0520082A (ja) | 1993-01-29 |
Family
ID=18515467
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3327280A Pending JPH0520082A (ja) | 1990-12-25 | 1991-12-11 | オブジエクト指向言語の実行システム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0520082A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH08110860A (ja) * | 1994-02-11 | 1996-04-30 | Internatl Business Mach Corp <Ibm> | インターフエース機構、クラス・ライブラリ及び非同期のデータ処理方法 |
| WO1998019236A1 (en) * | 1996-10-31 | 1998-05-07 | Sony Corporation | Information processing system and information processing method |
-
1991
- 1991-12-11 JP JP3327280A patent/JPH0520082A/ja active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH08110860A (ja) * | 1994-02-11 | 1996-04-30 | Internatl Business Mach Corp <Ibm> | インターフエース機構、クラス・ライブラリ及び非同期のデータ処理方法 |
| US5999987A (en) * | 1994-02-11 | 1999-12-07 | International Business Machines Corporation | Concurrent processing in object oriented parallel and near parallel |
| WO1998019236A1 (en) * | 1996-10-31 | 1998-05-07 | Sony Corporation | Information processing system and information processing method |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5848419A (en) | Methods and apparatus for providing transparent persistence in a distributed object operating environment | |
| US6163880A (en) | Object model for Java™ | |
| US6792606B2 (en) | Method and apparatus for object persistence | |
| US5940837A (en) | Distributed data base system | |
| EP0620522A2 (en) | High performance dynamic linking through caching | |
| JP2000222212A (ja) | 実行時におけるオブジェクトの実クラス決定 | |
| CN111984425B (zh) | 用于操作系统的内存管理方法、装置及设备 | |
| CA2145671A1 (en) | Shared library locating system | |
| JPH113269A (ja) | スタックの内容をサブスタックに分離することによる正確なガーベイジ・コレクションを補助するシステムと方法 | |
| EP2049992A1 (en) | Software transactional protection of managed pointers | |
| JP3844801B2 (ja) | インターフェース継承を伴うオブジェクト上での呼出しのための方法および機構 | |
| JPH04163630A (ja) | オブジェクト指向計算機システムにおけるメソッド起動装置 | |
| JP2870582B2 (ja) | ハイパーメディア文書管理装置 | |
| CN101430685A (zh) | 下载方法及其系统 | |
| JPH0520082A (ja) | オブジエクト指向言語の実行システム | |
| CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
| US6658647B1 (en) | Access to resource files stored in ROM | |
| JP2000122876A (ja) | 情報処理装置 | |
| US6671783B1 (en) | Method and article for managing references between objects in memories of different durations in a run-time environment | |
| JPH11232103A (ja) | プログラムリンク方式及びメソッドサーチ方式 | |
| JPH09146772A (ja) | 手続き呼出し方法 | |
| JP3693311B2 (ja) | 分散処理システム | |
| JP3085309B2 (ja) | デバッグシステム | |
| JPH0337748A (ja) | 主記憶を利用した外部記憶アクセス方式 | |
| Franco et al. | Towards a facility for lexically scoped, dynamic mutual recursion in Scheme |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20000111 |