JPH11272468A - オブジェクト指向システムにおけるサイト特定メッセージディスパッチ - Google Patents
オブジェクト指向システムにおけるサイト特定メッセージディスパッチInfo
- Publication number
- JPH11272468A JPH11272468A JP10319741A JP31974198A JPH11272468A JP H11272468 A JPH11272468 A JP H11272468A JP 10319741 A JP10319741 A JP 10319741A JP 31974198 A JP31974198 A JP 31974198A JP H11272468 A JPH11272468 A JP H11272468A
- Authority
- JP
- Japan
- Prior art keywords
- receiver
- message
- type
- predicted
- site
- 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
- 238000000034 method Methods 0.000 claims abstract description 241
- 238000004590 computer program Methods 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 15
- 230000007423 decrease Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000002268 wool Anatomy 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
- G06F9/4491—Optimising based on receiver type
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Abstract
ッセージディスパッチを実行するためのシステムとメソ
ッドが提供される。 【解決手段】 レシーバタイプ情報は、サイト固有メッ
セージディスパッチを提供するためにメッセージディス
パッチサイトでセーブできる。異なるコールサイトでの
メッセージディスパッチの変更を許すことによって、オ
ブジェクト指向システムを、より効率的でフレキシブル
にできる。
Description
システムにおけるメッセージディスパッチに関する。よ
り詳細には、本発明はJava(登録商標)仮想マシン
のためのサイト固有メッセージディスパッチに関する。
的考え方は、データと、そのデータによって単一ユニッ
ト内で動作するオブジェクトと呼ばれるメソッド(また
は関数)の両者の組合せである。オブジェクトの関数は
通常、そのオブジェクトによってカプセル化されるデー
タにアクセスする唯一のメソッドを提供する。データ
は、メッセージを、そのメッセージで指定されたメソッ
ドを呼び出すようにオブジェクトに指示するオブジェク
トへ送信することによって、アクセスされる。
ジェクト指向言語で最も重要である。その理由は、メッ
セージディスパッチがオブジェクト指向プログラムの非
常に頻繁なオペレーションであって、ランタイムで実行
されるからであり、従って、ディスパッチはできるだけ
迅速でなければならない。メッセージディスパッチは、
しかしながら、決して些細なオペレーションではない。
ランタイムの前に関数のアドレスを決定できる手続き的
プログラム言語(例えば、Cプログラム言語)と異な
り、オブジェクト指向言語は、実行時にレシーバオブジ
ェクトにディスパッチされたメッセージを扱うメソッド
を決定しなければならず、それは広範な探索を伴なうこ
とになろう。
く理解するために、図1は、各クラスのメソッドを含む
クラス階層構造を示す。クラス階層構造1はそのルート
のところに、2つの仮想関数foo()とbar()とを定
義する親クラスA3を含む。仮想関数は親クラスの中で
定義されて、子クラスの中で再定義されてもよい関数で
ある。クラスB5とクラスC7は親クラスAのデータと
メソッドを受け継ぐ。図示のように、クラスBは仮想関
数fooとbarのいずれか一方を再定義することはな
い。しかしながら、クラスCは仮想関数fooを再定義
する。メソッドfooを呼び出すためにクラスCのオブ
ジェクトがリクエストされると、呼び出されたメソッド
は、親クラスAではなくクラスCによって定義されたメ
ソッドになる。クラスD9とE11もメソッドfooを
再定義する。
は一般に不可能なので、正しいメソッドの探索がメッセ
ージディスパッチの間、ランタイムで行なわれる。メソ
ッドディスパッチを具体化(実行)するための多数の技
法が知られている。例えば、図2はインラインキャッシ
ュを示す。メソッド51が最初、次の通りであったと仮
定する: 従って、メソッドメインは、オブジェクトxのメソッド
fooを呼び出すためにステートメントx.foo()を
含む。
扱うメソッドが呼び出しできる前に、オブジェクトxが
どのクラスに属するかを決定しなければならないだろ
う。インラインキャッシュでは、最初、システムがオブ
ジェクトxの属するクラスを決定するとき、クラスのメ
ソッドへのダイレクトコールがコンピュータコードに書
き込まれる。
ると仮定すると、コールx.foo()はダイレクトコー
ルA::foo()に変更される。矢印はクラスA53用
のメソッドfooを特定する。オブジェクトxはいつも
クラスAとは限らないので、プロローグ55は、オブジ
ェクトxが正しいクラスである旨確認して、オブジェク
トxのクラスがクラスAに等しいか否かが決定されるこ
とを意味する式 x=A として表される。オブジェク
トのクラスは、そのオブジェクトに格納された値から決
定してもよい。オブジェクトが正しいクラスである場
合、メッセージを扱うメソッドコード57へのジャンプ
が行なわれる。
クラスAでない場合、正しいメソッドを決定するために
メソッドルックアップルーチンが呼び出される。一旦、
正しいメソッドが発見されると、システムは、メッセー
ジディスパッチ(またはコール)サイトをそのメソッド
に対するダイレクトコールで更新する。更に、システム
はプロローグを更新して新しいクラスを指定する。例と
して、最初にシステムがx.foo()に遭遇したとき、
オブジェクトxがクラスAであり、データ構造が図2に
示すように修正されたと仮定する。
ると、x.foo()へのその後のコールは、オブジェク
トxがクラスAの場合、実質的にもっと効率的になる。
しかしながら、オブジェクトxがその後にクラスBにな
る場合、プロローグ55は、メソッドを発見するために
メソッドルックアップルーチンをコールし、それが、オ
ブジェクトxは今やクラスBである旨決定すると仮定し
よう。再び図1を参照すると、クラスBのためのメソッ
ドfooは、クラスAで定義されたものと同一メソッド
fooであることが分かる(すなわち、クラスBは仮想
関数fooを再定義しなかった)。従って、メソッド5
1のメッセージディスパッチはB::foo()に変更さ
れ、プロローグ55の状態はx=Bに変更されるだろ
う。
一クラスのままの場合、インラインキャッシュはメッセ
ージディスパッチを具体化する効率的なメソッドである
可能性がある。しかしながら、オブジェクトが多重クラ
スの場合、システムは継続してメソッドルックアップル
ーチンをコールすると共に、コールサイトとプロローグ
とをパッチング(patching)する。かくして、システムの
効率は、実際には低下する可能性がある。
一つの技法は、図3に示すような多形インラインキャッ
シュの使用である。先と同様に、メソッド101は、最
初はメソッドディスパッチx.foo()を含んでいた。
多形インラインキャッシュでは、異なるレシーバタイプ
に対するメッセージディスパッチを実行できるスタブ1
03が生成される。原メッセージディスパッチは、多形
インラインキャッシュスタブ103へのコールで置き換
えられる。新レシーバタイプに遭遇する度に、スタブに
はステートメントが追加される。図示のように、これま
で3つの異なるレシーバタイプに遭遇した。レシーバタ
イプに遭遇した場合、そのレシーバタイプ用のメッセー
ジを扱うためのメソッドに対するコールが行なわれる。
遭遇しない場合は、メソッドルックアップルーチンがコ
ールされて、メッセージを扱うための適切なメソッドが
決定される。通常、それぞれの新レシーバタイプを扱う
ためにスタブ103には新ステートメントが追加され
る。
タイプを扱えるので、インラインキャッシュよりもフレ
キシブルである。しかしながら、多形インラインキャッ
シュの欠点は、より多くのレシーバタイプと遭遇するの
で、スタブが成長し続けてメッセージディスパッチの実
行効率が益々低下する点である。例えば、システムはメ
ッセージを扱う正しいメソッドを発見する前に、複数の
ifステートメントによる地馴らしの必要があるかもし
れない。
のメッセージディスパッチ技法を示す。ハッシングで
は、メソッド151の原メッセージディスパッチx.f
oo()は、ハッシュ関数153へのコールで上書きされ
る。ハッシュ関数は、通常はハッシュテーブル155へ
のインデックスであるハッシュキーを形成するために、
レシーバタイプとメッセージとをハッシュする。ハッシ
ュテーブルは、インデックス157、レシーバタイプ1
59、メッセージ161、およびメソッド163を含
む。一旦、ハッシュ関数がキャッシュテーブル155の
行にハッシュすると、レシーバタイプとメッセージとが
ハッシュテーブルのカラム159と161から検索され
る。コールサイトのレシーバタイプとメッセージが、ハ
ッシュテーブルの行内のレシーバタイプとメッセージに
一致する場合、ハッシュテーブル155のカラム163
で指定されるメソッドが呼び出される。そうでない場
合、正しいメソッドを発見するためにメソッドルックア
ップルーチンがコールされる。次いで通常は新メソッド
がハッシュテーブルに追加される。
これまで説明した最もフレキシブルなメッセージディス
パッチ技法であるが、他の技法よりも計算集中的で記憶
集中的である。我々が説明したメッセージディスパッチ
技法のもうひとつの欠点は、いずれの技法もサイト専用
(site specific) ではないという点である。言い換えれ
ば、いずれのメッセージディスパッチ技法も、異なるコ
ールサイトデのメッセージディスパッチを異なるメソッ
ドで扱うフレキシビリティを備えていない。
イズに関して共に効率的なサイト固有メッセージディス
パッチに対する要求がある。更に、フレキシブルで、オ
ブジェクト指向プログラムの実行に応じて順応できるサ
イト固有のメッセージディスパッチに対する要求があ
る。
ピードとコンピュータサイズに関して効率的な革新的サ
イト固有(specific)メッセージディスパッチ技法を提
供する。サイト固有メッセージディスパッチ技法を提供
することによって、メッセージディスパッチを各メッセ
ージディスパッチサイトに対して最適化できる。従っ
て、すべてのコールサイトに対して効率的な一つのメッ
セージディスパッチ技法を発見しようと努める代わり
に、技法を調節して、特定サイトに、より良く適合させ
ることができる。本発明のいくつかの実施形態を以下に
説明する。
向環境におけるメッセージディスパッチを実行(具体
化)する方法を提供する。予測されたレシーバタイプ
は、メッセージがレシーバオブジェクトへディスパッチ
されるサイトでセーブされる。次に、メッセージはレシ
ーバオブジェクトへ送られる。レシーバオブジェクトが
メッセージを受けると、そのレシーバオブジェクトが、
セーブされた予測レシーバタイプである旨確認される。
通常、予測レシーバタイプは、メッセージディスパッチ
命令に先立つ移動命令によってレジスタにセーブされ
る。
ジェクト指向環境におけるメッセージディスパッチを実
行する方法を提供する。予測レシーバタイプは、メッセ
ージがレシーバオブジェクトへディスパッチされるサイ
トでセーブされる。次に、メッセージはレシーバオブジ
ェクトへ送られる。レシーバオブジェクトがメッセージ
を受けると、そのレシーバオブジェクトが、セーブされ
た予測レシーバタイプである旨確認される。レシーバオ
ブジェクトが、セーブされた予測レシーバタイプでない
場合、予測レシーバタイプはレシーバオブジェクトのタ
イプに変更され、メソッドルックアップルーチンがコー
ルされて新メソッドが獲得され、サイトが変更されて新
メソッドが呼び出される。
ジェクト指向プログラムのためのメッセージディスパッ
チを実行する方法を提供する。第1メッセージディスパ
ッチ技法が特定サイトで実行されて、メッセージをレシ
ーバオブジェクトにディスパッチする。プログラム実行
中に動的に、第2メッセージディスパッチ技法がその特
定サイトで望ましいか否か決定される。第2メッセージ
ディスパッチ技法が望ましい場合、その第2メッセージ
ディスパッチ技法がその特定サイトで実行されて、メッ
セージをレシーバオブジェクトへディスパッチする。好
ましい実施形態では、特定サイトがメッセージを、所定
数より多い異なるレシーバオブジェクトタイプへディス
パッチした場合、第2メッセージディスパッチ技法は望
ましいと決定される。
関連して下記の詳細説明を検討することによって直ちに
明らかになるであろう。
メンバー関数、およびメソッドとも呼ばれる)。
指向環境内のオブジェクトに送られたメッセージを扱う
ためのメソッドを決定するプロセス。
−−オブジェクト指向環境内でメッセージを送信された
オブジェクト。
が属するクラス。
ージがオブジェクトにディスパッチされる、プログラム
内のロケーションまたはエリア。 概要 以下の説明では、本発明を、Java(登録商標)仮想
マシン用に設計された好ましい実施形態に関して説明す
る。特に、IBMパーソナルコンピュータ向けの実例に
ついていくつか説明する。しかしながら、本発明はどの
ような特定の言語、コンピュータアーキテクチャ、また
は特定のインプリメンテーションにも限定されない。従
って、以下の実施形態の記述は説明のためであって、限
定のためではない。
ウェアを実行するのに使用できるコンピュータシステム
の例を示す。図5は、ディスプレイ303、スクリーン
305、キャビネット307、キーボード309、およ
びマウス311を含むコンピュータシステム301を示
す。マウス311はグラフィカルユーザーインタフェー
スと会話するための一つ以上のボタンを持つことができ
る。キャビネット307は、本発明を具体化するコンピ
ュータコードを内蔵するソフトフェアプログラム、本発
明に関して使用するデータ等、を格納、検索するために
利用される、CD−ROMドライブ313、システムメ
モリ、およびハードドライブ(図6参照)を収容する。
CD−ROM315は典型的なコンピュータ読取り可能
記憶媒体として示されているが、フロッピーディスク、
テープ、フラッシュメモリ、システムメモリ、およびハ
ードドライブを含め他のコンピュータ読取り可能記憶媒
体を利用してもよい。更に、搬送波(例えば、インター
ネットを含むネットワーク)中に組み込んだデータ信号
が、コンピュータ読取り可能記憶媒体であってもよい。
を実行するために使用されるコンピュータシステム30
1のシステムブロック図を示す。図5と同様、コンピュ
ータシステム301は、モニタ303とキーボード30
9、およびマウス311を含む。コンピュータシステム
301は更に、中央処理装置351、システムメモリ3
53、固定記憶装置355(例えば、ハードドライ
ブ)、交換可能記憶装置357(例えば、CD−ROM
ドライブ)、ディスプレイアダプタ359、サウンドカ
ード361、スピーカ363、およびネットワークイン
タフェース365等のサブシステムを含む。本発明に関
する使用に適した他のコンピュータシステムは、追加ま
たはより少数のサブシステムを含んでもよい。例えば、
別のコンピュータシステムは2台以上のプロセッサ35
1(すなわち、マルチプロセッサシステム)やキャッシ
ュメモリを含むことができる。
スアーキテクチャは、矢印367で表示される。しかし
ながら、これらの矢印はサブシステムをリンクする働き
をするどのような相互接続のスキームも示すこととす
る。例えば、ローカルバスを利用して中央処理装置をシ
ステムメモリとディスプレイアダプタに接続することが
できよう。図6に示すコンピュータシステム301は、
本発明を伴なう使用に適したコンピュータシステムの一
例に過ぎない。異なる構成のサブシステムを持つ他のコ
ンピュータアーキテクチャを利用してもよい。
はSun Microsystemsによって開発された。通常、Jav
aプログラミング言語で書かれたコンピュータプログラ
ムは、バイトコード、すなわちその後にJava仮想マ
シンによって実行されるJava仮想マシン命令、にコ
ンパイルされる。バイトコードは、解釈用のJava仮
想マシンへ入力されるクラスファイルに格納される。図
7は、インタープリタ、つまりJava仮想マシンによ
る実行を通したJavaソースコードの単一ピースの進
行を示す。
で書かれた古典的なHello World プログラムを含む。次
に、ソースコードはソースコードをバイトコードにコン
パイルするバイトコードコンパイラ403に入力され
る。バイトコードは、ソフトウェアでエミュレートされ
たコンピュータによって実行されるので、仮想マシン命
令である。通常、仮想マシン命令は一般的(すなわち、
特定のマイクロプロセッサやコンピュータアーキテクチ
ャ用に設計されていない)だが、そうである必要はな
い。バイトコードコンパイラは、Javaプログラム用
のバイトコードを含むJavaクラスファイル405を
出力する。
マシン407に入力される。Java仮想マシンは、J
avaクラスファイルのバイトコードを解読、実行する
インタープリタである。Java仮想マシンはインター
プリタだが、ソフトウェアのマイクロプロセッサやコン
ピュータアーキテクチャをエミュレートするので(例え
ば、マイクロプロセッサやコンピュータアークテクチャ
がハードウェアには存在しないかもしれない)、一般に
仮想マシンと称される。Java仮想マシンの実行速度
を増すために、より早い実行のためのネイティブマシン
命令にメソッドをコンパイルしてもよい。以下の好まし
い実施形態の説明では、コンパイル(compilation) を使
用して、Java仮想マシン命令の、ネイティブマシン
命令への翻訳に言及する。 サイト固有インラインキャッシュ 本発明は、オブジェクト指向環境におけるメッセージデ
ィスパッチを具体化するためのサイト固有インラインキ
ャッシュを提供する。レシーバタイプ情報はコールサイ
トで格納されるので、各コールサイトはそのコールサイ
トのランタイム特性に従って変更可能となる。これによ
って、メッセージディスパッチをより効率的にするばか
りでなく、よりフレキシブルにする。
固有のインラインキャッシュ技法を示す。先に「従来の
技術」で述べたように、メソッド451は最初は、ディ
スパッチ用のメッセージx.foo()を含んでいた。最
初、このメッセージがディスパッチされるときは、シス
テムがメソッドバックアップルーチンをコールして、メ
ッセージを扱うための適切なメソッドを決定できる。別
法として、システムはランタイムに先立って静的分析を
行なって、何が正しいメソッドになりそうかを決定でき
る。
一旦、メッセージを扱うべきオブジェクトのクラスが決
定されると、レシーバタイプまたはクラスをセーブする
ための命令がコールサイトで生成される。メッセージデ
ィスパッチは次に、メッセージを扱うべき特定メソッド
へのコールで上書きされる。かくして、メッセージディ
スパッチは、2つの命令、つまりレシーバタイプをセー
ブする命令と、適切なメソッドへのコールになる。
A用のIDを特殊レジスタに格納する移動命令を含む。
このレジスタは単なる識別のための特殊レジスタと呼ば
れる。重要なことは、レジスタを利用する場合、このコ
ールサイトではそのレジスタを別途不使用にしなければ
ならないことである。レジスタの利用は最も効率的な実
行速度を提供するかもしれないが、他の記憶メカニズム
を利用してもよい。例えば、レシーバタイプをシステム
メモリに格納してもよいし、パラメータとしてメッセー
ジハンドリングメソッドに送ってもよい。
A::foo()として示されたメッセージを扱うメソッ
ド453へのコールが行なわれる。プロローグ455
は、特殊レジスタから検索されるオブジェクトxが、セ
ーブされたレシーバタイプか否かをチェックする。図示
の例では、クラスAは格納されたレシーバタイプであ
る。かくして、オブジェクトxがクラスAの場合、
A::foo()のメソッドコード457へのジャンプが
行なわれる。そうでない場合、メソッドルックアップル
ーチンがコールされて、メッセージを扱うべき適切なメ
ソッドを位置付けする。次に、コールサイトが更新され
て、オブジェクトxのレシーバタイプと、メソッドルッ
クアップルーチンによって発見されたメソッドへのコー
ルをセーブできる。
バタイプは予測されたレシーバタイプである。つまり、
システムが予測するレシーバタイプは、メッセージを受
けるための次のオブジェクトのレシーバタイプになる。
予測されたレシーバタイプがオブジェクトのレシーバタ
イプと一致する場合、メッセージディスパッチは、より
効率的になる。更に、各メッセージディスパッチサイト
は、そのコールサイトに特有の格納されたレシーバタイ
プ情報を持つことができるが、別のサイトは、格納され
たレシーバタイプ情報を上書きしない。
ト固有インラインキャッシュ技法の実施形態のフローチ
ャートを示す。ステップ501で、予測されたレシーバ
タイプは、メッセージがレシーバオブジェクトへディス
パッチされるサイトでセーブされる。好ましい実施形態
では、レシーバタイプは、そのレシーバタイプをレジス
タに置くための移動命令を利用することによってセーブ
される。しかしながら、システムメモリやパラメータパ
ッシング(passing) の使用を含めて、当該技術に精通す
る者には周知の、レシーバタイプをセーブする他の方法
を利用してもよい。
バオブジェクトに送られる。このメッセージは、メソッ
ドルックアップルーチンを利用する代わりに、メッセー
ジを扱うメソッドへのダイレクトコール(またはメソッ
ドの呼出し)によって送られる。
を受けると、レシーバオブジェクトはステップ505で
のセーブされた予測(predicted) レシーバタイプである
旨確認される。好ましい実施形態では、この確認はメソ
ッドのプロローグで実行される(図8参照)。レシーバ
オブジェクトがステップ507でのセーブされた予測レ
シーバタイプと同一タイプの場合、メッセージを扱うメ
ソッドがステップ509で実行される。ステップ509
は、メッセージを扱うメソッドコードのスタートへジャ
ンプすることを含む。
測レシーバタイプと同一タイプでない場合、コールサイ
トでの予測レシーバタイプは、ステップ511でレシー
バオブジェクトのレシーバタイプに変更される。メソッ
ドルックアップルーチンがコールされて、ステップ51
3で新メソッドが獲得される。利用されるメソッドルッ
クアップルーチンは、ディスパッチテーブルサーチと仮
想関数テーブルを含めて、当該技術に精通する者には周
知の何れでもよい。メソッドルックアップルーチンは、
メッセージを扱うための適切なメソッドを提供する。コ
ールサイトでのメッセージディスパッチは次に、ステッ
プ515でメソッドルックアップルーチンによって戻さ
れたメソッドに変更される。
スAなので、メソッド451のコールサイトに格納され
る予測レシーバタイプはクラスAであると仮定しよう。
しかしながら、オブジェクトxがその後にクラスBにな
る場合、プロローグ455は移動命令を修正して、クラ
スBを予測レシーバタイプとして特殊レジスタに格納で
きる。更に、メッセージディスパッチが修正されて、メ
ソッドルックアップルーチンによって戻されたメソッド
を呼び出すだろう。その場合、クラスBのレシーバオブ
ジェクトに向けられたこのコールサイトのその後のメッ
セージディスパッチは、より効率的にディスパッチされ
るだろう。
を変更するステップ515の後で実行されるものとして
示されている。メソッドを実行するステップは、実際に
は、ステップ513内で起ることもあるし、他のロケー
ションで起ることもある。従って、図示のフローチャー
トでは、ステップは、本発明の精神から逸脱することな
く、特定のインプリメンテーションによって再整理、追
加、および削除できる。
バタイプをセーブするサイト固有インラインキャッシュ
技法が提供される。コールサイトで予測レシーバタイプ
を格納することによって、メッセージディスパッチを、
より効率的でフレキシブルにできる。例えば、各コール
サイトにおけるオペレーションは互いに隔離できるの
で、ひとつのコールサイトがもうひとつのコールサイト
用の設定を変更することがない。 サイト固有メッセージディスパッチ 本発明は、異なるメッセージディスパッチ技法を各サイ
トで利用可能にする点でフレキシブルなサイト固有メッ
セージディスパッチ技法を提供する。更に、コールサイ
トで利用されるメッセージディスパッチ技法はランタイ
ムの間、時間の経過と共に変更できる。一旦、新しいま
たは異なるメッセージディスパッチ技法が特定サイトで
望ましい旨決定されると、新メッセージディスパッチ技
法がその特定コールサイトでの使用のために設定され
る。かくして、メッセージディスパッチはコールサイト
に関するばかりか、プログラム実行時の異なる時期のコ
ールで利用されるメッセージディスパッチ技法に関して
も、よりフレキシブルになる。
ッチの実施形態の高レベルフローチャートを示す。ステ
ップ511では、第1メッセージディスパッチ技法が特
定メッセージディスパッチサイトで実行される。第1メ
ッセージディスパッチ技法は、当該技術分野で周知の任
意の数のメッセージディスパッチ技法でよい。第1メッ
セージディスパッチ技法は、本発明による技法であるこ
とが望ましい。例えば、第1メッセージ技法は、上記サ
イト固有インラインキャッシュの実施形態でもよい。第
1メッセージディスパッチ技法を、ランタイム前に静的
に決定してもよいし、ランタイム中に動的に決定しても
よい。
セージディスパッチ技法が特定サイトで望ましいか否か
をランタイム中に動的に決定する。任意数の方式を利用
して、第2メッセージディスパッチ技法が望ましい旨決
定してよい。例えば、このコールサイトで遭遇する異な
るレシーバタイプの数がしきい値を超えるときは、異な
るメッセージディスパッチ技法に切り換えることが望ま
しいだろう。更に、メソッドルックアップルーチンがコ
ールされる頻度によって計算が行なわれるので、頻度が
高すぎる場合は、新メッセージディスパッチが正当化さ
れるだろう。
ィスパッチ技法が望ましいと決定されたときは、その第
2メッセージディスパッチ技法がステップ555の特定
サイトで実行される。新メッセージディスパッチ技法へ
の切り換えのためのメカニズムは通常、その新技法自身
に左右される。これまで高レベルフローを説明してきた
ので、第2メッセージディスパッチ技法が望ましいか否
かを動的に決定するステップの実施形態をより詳しく検
討することが有益であろう。
法が望ましいか否かを動的に決定する実施形態を示す。
第1と第2メッセージディスパッチ技法のラベルは、一
つのメッセージディスパッチ技法を特定コールサイトで
別の技法に切り換えできるという包括表示として示され
る。しかしながら、本発明は2つの技法のみに限定され
ることなく、3つ以上の技法にも有利に適用できる。従
って、第1と第2のラベルは、本発明が2つのメッセー
ジディスパッチ技法だけに限定されるとの表示ではな
い。
スパッチを何時変更すべきかの指標を、特定コールサイ
トで遭遇する異なるレシーバタイプの数に依存してい
る。例として、サイト固有インラインキャッシュ技法
は、このコールサイトで5つの異なるレシーバタイプに
遭遇するまで利用できる。この状況で、異なるレシーバ
タイプが利用されるときは、予測レシーバタイプが実際
のレシーバタイプと異なるような5つの例が存在してい
ることを意味する。これは、ほぼ5回、メソッドルック
アップルーチンがコールされると共に、コールサイトで
格納された予測レシーバタイプが変化したことを意味す
るだろう。例として、クラスAとBのレシーバオブジェ
クト間で5回交替するコールサイトは、5つの異なるレ
シーバタイプとしてカウントされるかもしれない。
サイトで利用できるが、これには、カウンタを維持する
ためのメモリとコンピュータコードの使用を伴う。好ま
しい実施形態において、カウンタはメッセージを扱うメ
ソッドに先行する多重非オペレーション(NOP)命令
として具体化される。図12に関して更に詳細に説明す
るように、メソッドの前に具体化されたNOP命令の数
は、遭遇した異なるレシーバタイプの数を示す。
ッドルックアップルーチンがコールされたか、さもなけ
れば、恐らく現行メッセージディスパッチ技法が効率的
に実行されているものと仮定している。ステップ601
で、システムは、メッセージを扱うメソッドに先立つN
OP命令へメッセージをディスパッチする。システム
は、メソッドの前にNOP命令をいくつ実行するかを決
定することによって、異なるレシーバタイプの数をカウ
ントする。通常、このカウント数は、このサイトのため
にメッセージがディスパッチされたアドレスを、何れの
プロローグも含め、実際のメソッドのアドレスから差し
引くことによって決定される。
数と比較される。所定の数は、異なるメッセージディス
パッチ技法への切換えが望まれる前にコールサイトで遭
遇する異なるレシーバタイプの数である。所定数は静的
に定義してもよいし、ランタイム中に動的に算出しても
よい。
も大きい場合、ステップ609で第2メッセージディス
パッチ技法への切換えが行なわれる。カウント数が所定
数より小さいか等しい場合、これは、現状では第2メッ
セージディスパッチ技法への切換えが望ましくないこと
を示す。実例は、NOP命令がどのようにカウンタとし
て利用され得るかを説明する助けとなるだろう。
なるレシーバタイプの数のカウンタとしてNOP命令が
どのように利用されるかを説明する。メソッド651
は、先に記載のサイト固有インラインキャッシュによっ
て示される。メソッド653はメッセージを扱うが、そ
のメソッドの前に、多重NOP命令を持つNOPセクシ
ョン655が先行する。NOP命令は、それらが何もせ
ず、かつメソッドのオペレーティング速度に不当に影響
しないように選択できる。他の実施形態では、NOP命
令の代わりに他の命令を利用してもよい。
57と、メソッド653のメソッドコード659とに先
行する。NOPセクションは、通常、異なるメッセージ
ディスパッチ技法への切換えが始まる前に、コールサイ
トで遭遇する異なるレシーバタイプの数と同数の、所定
数のNOP命令から構成される。メソッドルックアップ
ルーチンがプロローグ657でコールされる度に、移動
命令はオブジェクトxのレシーバタイプでパッチされ
る。更に、その後のメッセージディスパッチ(例えば、
A::foo())は、メソッドルックアップルーチンに
よって発見された新メソッドのNOPセクション655
のNOP命令の一つに変更される。
は、メソッド653の前に第3NOP命令を指し示す。
プロローグ657が、オブジェクトxはクラスAでない
と決定すると、プロローグは、いくつかの既知のメソッ
ドによってランタイム中に獲得可能な、コールサイトの
固有のアドレスとメソッド653の開始との間の差を算
出する。差またはカウント数は、この特定コールサイト
で遭遇した異なるレシーバタイプの数を示す。カウント
数が所定数よりも大きい場合、プロローグ657は、こ
のコールサイトで利用されるメッセージディスパッチ技
法を切り換えることができる。
は具体化が容易で、早く、またカウンタを維持するため
の過大な量のコンピュータコードを必要としない。更
に、NOPセクション655のNOP命令は、相互に影
響を及ぼすことなく、多重の異なるコールサイトによっ
て参照できる。
ト固有インラインキャッシュであるとして示された。第
2メッセージディスパッチ技法は、いずれも多重レシー
バタイプを扱うために設計されているので、多形インラ
インキャッシュ技法でも、ハッシング技法でもよい。も
ちろん、本発明に関して利用されるメッセージディスパ
ッチ技法に対する制限はない。読者の理解を助けるため
に、特定メッセージディスパッチ技法についてここに説
明した。
に特定コールサイトにおける新メッセージディスパッチ
技法の利用を可能にするサイト固有メッセージディスパ
ッチ技法が提供される。望ましくなったときに各コール
サイトにメッセージディスパッチ技法の切換えを許すこ
とによって、メッセージディスパッチを、より効率的で
フレキシブルにできる。更に、各コールサイトでのオペ
レーションは互に隔離できるので、ひとつのコールサイ
トが別のコールサイトに対するセッティングを変更する
ことがない。 結論 上記は本発明の好ましい実施形態の完全な説明だが、使
用可能な代案や修正案や同等仕様が存在する。上述の実
施形態に適切な修正を加えることによって、本発明を等
しく適用できることは言うまでもない。例えば、サイト
固有メッセージディスパッチ技法は、発明の精神から逸
脱することなく、オブジェクト指向言語に有利に適用で
きる。従って、上記の説明は、添付の特許請求項の共通
点と限界、ならびに同等仕様の全範囲によって定義され
る本発明の範囲を制限するものと見做してはならない。
クラスのクラス階層構造を説明する。
めのインラインキャッシュ技法を説明する。
めの多形インラインキャッシュ技法を説明する。
めのハッシング技法を説明する。
に利用されるコンピュータシステムの例を説明する。
ク図を説明する。
実行されるかを説明する。
めのサイト固有インラインキャッシュ技法の実施形態を
説明する。
めのサイト固有インラインキャッシュ技法の高レベルフ
ローチャートを示す。
施形態の高レベルフローチャートを示す。
トで望ましいか否かを動的に決定するフローチャートを
示す。
ーバタイプの数をカウントする、サイト固有メッセージ
ディスパッチ技法の実施形態を説明する。
イ、305…スクリーン、307…キャビネット、30
9…キーボード、311…マウス、313…CD−RO
Mドライブ、315…CD−ROM、351…中央処理
装置、353…システムメモリ、355…固定記憶装
置、357…交換可能記憶装置、359…ディスプレイ
アダプタ、361…サウンドカード、367…矢印、4
01…Javaソースコード、403…バイトコードコ
ンパイラ、405…Javaクラスファイル、407…
Java仮想マシン、451,343,651,653
…メソッド、455,657…プロローグ、457…メ
ソッドコード、501,503,505,507,50
9,511,513,515,553,555,60
1,605,607,609…ステップ、655…NO
Pセクション。
Claims (29)
- 【請求項1】 コンピュータシステムにおいて、オブジ
ェクト指向環境のメッセージディスパッチを実行する方
法であって、 メッセージがレシーバオブジェクトへディスパッチされ
るサイトで、予測レシーバタイプをセーブする工程と、 前記メッセージを前記レシーバオブジェクトへ送る工程
と、および前記レシーバオブジェクトが前記メッセージ
を受け取ると、前記レシーバオブジェクトが前記セーブ
された予測レシーバタイプであると確認する工程とを含
む方法。 - 【請求項2】 予測レシーバタイプをセーブする工程
は、前記予測レシーバタイプをレジスタに格納する工程
を含む請求項1に記載の方法。 - 【請求項3】 メッセージは、ディスパッチされるサイ
トに先立つ移動命令を利用して、前記予測レシーバタイ
プを前記レジスタに格納する請求項2に記載の方法。 - 【請求項4】 予測レシーバタイプをセーブする工程
は、前記予測レシーバタイプをメモリロケーションに格
納する工程を含む請求項1に記載の方法。 - 【請求項5】 予測レシーバタイプをセーブする工程
は、前記予測レシーバタイプを前記メッセージのパラメ
ータとして前記レシーバオブジェクトへ渡す工程を含む
請求項1に記載の方法。 - 【請求項6】 更に、前記レシーバオブジェクトは、前
記セーブされた予測レシーバタイプでない場合、前記予
測レシーバタイプを前記レシーバオブジェクトのタイプ
に変更する工程を含む請求項1〜5のいずれか1項に記
載の方法。 - 【請求項7】 更に、メソッドルックアップルーチンを
コールして前記メソッドルックアップルーチンから新メ
ソッドを獲得する工程を含む請求項1〜6のいずれか1
項に記載の方法。 - 【請求項8】 更に、前記サイトを変更して新メソッド
を呼び出す工程を含む請求項7に記載の方法。 - 【請求項9】 前記レシーバオブジェクトを確認する工
程は、前記レシーバオブジェクトのレシーバタイプを獲
得する工程と、および、前記レシーバオブジェクトの前
記レシーバタイプを、前記セーブされた予測レシーバタ
イプと比較する工程とを含む請求項1〜8のいずれか1
項に記載の方法。 - 【請求項10】 更に、前記レシーバタイプは、前記セ
ーブされた予測レシーバタイプに等しくない場合、前記
予測レシーバタイプを前記レシーバオブジェクトの前記
レシーバタイプに変更する工程を含む請求項9に記載の
方法。 - 【請求項11】 更に、前記レシーバオブジェクトの前
記レシーバタイプは、前記セーブされた予測レシーバタ
イプに等しくない場合、メソッドルックアップルーチン
をコールする工程を含む請求項9または10に記載の方
法。 - 【請求項12】 更に、前記メソッドルックアップルー
チンから新メソッドを獲得する工程を含む請求項11に
記載の方法。 - 【請求項13】 更に、前記サイトを変更して新メソッ
ドを呼び出す工程を含む請求項12に記載の方法。 - 【請求項14】 オブジェクト指向環境のメッセージデ
ィスパッチを実行するコンピュータプログラムプロダク
トであって、 メッセージがレシーバオブジェクトへディスパッチされ
るサイトで、予測レシーバタイプをセーブするコンピュ
ータコードと、 前記メッセージを前記レシーバオブジェクトへ送るコン
ピュータコードと、 前記レシーバオブジェクトが前記メッセージを受信する
と、前記レシーバオブジェクトが前記セーブされた予測
レシーバタイプであると確認するコンピュータコード
と、および前記コンピュータコードを格納するコンピュ
ータ読取り可能媒体とを備えるコンピュータプログラム
プロダクト。 - 【請求項15】前記コンピュータ読取り可能媒体は、C
D−ROM、フロッピーディスク、テープ、フラッシュ
メモリ、システムメモリ、ハードドライブ、および搬送
波に組み込まれたデータ信号から成る群から選択される
請求項14に記載のコンピュータプログラムプロダク
ト。 - 【請求項16】 オブジェクト指向環境のメッセージデ
ィスパッチを実行するコンピュータシステムであって、 コンピュータコードを実行するプロセッサと、 メッセージがレシーバオブジェクトへディスパッチされ
るサイトで、予測レシーバタイプをセーブするコンピュ
ータコードと、 前記メッセージを前記レシーバオブジェクトへ送るコン
ピュータコードと、 前記レシーバオブジェクトが前記メッセージを受けた
ら、前記レシーバオブジェクトが前記セーブされた予測
レシーバタイプであると確認するコンピュータコード
と、および、 前記プロセッサが実行すべき前記コンピュータコードを
格納するコンピュータ読取り可能媒体とを備えるコンピ
ュータシステム。 - 【請求項17】 コンピュータシステムにおいて、オブ
ジェクト指向環境のメッセージディスパッチを実行する
方法であって、 メッセージがレシーバオブジェクトへディスパッチされ
るサイトで、予測レシーバタイプをセーブする工程と、 前記メッセージを前記レシーバオブジェクトへ送る工程
と、 前記レシーバオブジェクトが前記メッセージを受ける
と、前記レシーバオブジェクトが前記セーブされた予測
レシーバタイプであると確認する工程と、 前記レシーバオブジェクトが前記セーブされた予測レシ
ーバタイプでない場合、前記予測レシーバタイプを前記
レシーバオブジェクトのタイプへ変更する工程と、 前記レシーバオブジェクトが前記セーブされた予測レシ
ーバタイプでない場合、メソッドルックアップルーチン
をコールして新メソッドを獲得する工程と、および前記
サイトを変更して新メソッドを呼び出す工程とを含む方
法。 - 【請求項18】 予測レシーバタイプをセーブする工程
は、前記予測レシーバタイプをレジスタに移動する工
程、前記予測レシーバタイプをレジスタに格納する工
程、および前記予測レシーバタイプを前記メッセージの
パラメータとして前記レシーバオブジェクトへ渡す工程
から成る群から選択された一つの工程を含む請求項17
に記載の方法。 - 【請求項19】 前記レシーバオブジェクトを確認する
工程は、前記レシーバオブジェクトのレシーバタイプを
獲得する工程と、および前記レシーバオブジェクトの前
記レシーバタイプを、前記セーブされた予測レシーバタ
イプと比較する工程とを含む請求項17または18に記
載の方法。 - 【請求項20】 オブジェクト指向環境のメッセージデ
ィスパッチを実行するコンピュータプログラムプロダク
トであって、 メッセージがレシーバオブジェクトへディスパッチされ
るサイトで、予測レシーバタイプをセーブするコンピュ
ータコードと、 前記メッセージを前記レシーバオブジェクトへ送るコン
ピュータコードと、 前記レシーバオブジェクトが前記メッセージを受ける
と、前記レシーバオブジェクトが前記セーブされた予測
レシーバタイプであると確認するコンピュータコード
と、 前記レシーバオブジェクトが前記セーブされた予測レシ
ーバタイプでない場合、前記予測レシーバタイプを、前
記レシーバオブジェクトのタイプに変更するコンピュー
タコードと、 前記レシーバオブジェクトが前記セーブされた予測レシ
ーバタイプでない場合、メソッドルックアップルーチン
をコールして新メソッドを獲得するコンピュータコード
と、 前記サイトを変更して前記新メソッドを呼び出すコンピ
ュータコードと、および前記コンピュータコードを格納
するコンピュータ読取り可能媒体とを備えるコンピュー
タプログラムプロダクト。 - 【請求項21】 前記コンピュータ読取り可能媒体は、
CD−ROM、フロッピーディスク、テープ、フラッシ
ュメモリ、システムメモリ、ハードドライブ、および搬
送波に組み込まれたデータ信号から成る群から選択され
る請求項20に記載のコンピュータプログラムプロダク
ト。 - 【請求項22】 オブジェクト指向環境のメッセージデ
ィスパッチを実行するコンピュータシステムであって、 コンピュータコードを実行するプロセッサと、 メッセージがレシーバオブジェクトへディスパッチされ
るサイトで、予測レシーバタイプをセーブするコンピュ
ータコードと、 前記メッセージを前記レシーバオブジェクトへ送るコン
ピュータコードと、 前記レシーバオブジェクトが前記メッセージを受信する
と、前記レシーバオブジェクトが前記セーブされた予測
レシーバタイプであると確認するコンピュータコード
と、 前記レシーバオブジェクトが前記セーブされた予測レシ
ーバタイプでない場合、前記予測レシーバタイプを前記
レシーバオブジェクトのタイプに変更するコンピュータ
コードと、 前記レシーバオブジェクトが前記セーブされた予測レシ
ーバタイプでない場合、メソッドルックアップルーチン
をコールして新メソッドを獲得するコンピュータコード
と、 前記サイトを変更して前記新メソッドを呼び出すコンピ
ュータコードと、および前記プロセッサが実行すべき前
記コンピュータコードを格納するコンピュータ読取り可
能媒体とを備えるコンピュータシステム。 - 【請求項23】 コンピュータシステムにおいて、オブ
ジェクト指向プログラムのためのメッセージディスパッ
チを実行する方法であって、 第1メッセージディスパッチ技法を特定サイトで実行し
てメッセージをレシーバオブジェクトへディスパッチす
る工程と、 第2メッセージディスパッチ技法が前記特定サイトで望
ましいか否か、をプログラム実行中に動的に決定する工
程と、および前記第2メッセージディスパッチ技法が望
ましい場合、前記第2メッセージディスパッチ技法を前
記特定サイトで実行して、メッセージを前記レシーバオ
ブジェクトへディスパッチする工程とを含む方法。 - 【請求項24】 第2メッセージディスパッチ技法は望
ましいか否か、をプログラム実行中に決定する工程は、
前記特定サイトがメッセージを第1所定数より多い異な
るレシーバタイプへディスパッチしたか否か、を決定す
る工程を含む請求項23に記載の方法。 - 【請求項25】 更に、前記第1ディスパッチ技法は、
メッセージをディスパッチした、異なるレシーバタイプ
のカウント数を維持する工程を含む請求項24に記載の
方法。 - 【請求項26】 前記第1メッセージディスパッチ技法
は、プログラム実行の前に静的に決定される請求項23
〜25のいずれか1項に記載の方法。 - 【請求項27】 前記第1メッセージディスパッチ技法
は、インラインキャッシングである請求項23〜25の
いずれか1項に記載の方法。 - 【請求項28】 前記第2メッセージディスパッチ技法
は、多形インラインキャッシングとハッシングから選択
される請求項23〜27のいずれか1項に記載の方法。 - 【請求項29】 オブジェクト指向プログラムためのメ
ッセージディスパッチを実行するコンピュータシステム
であって、 コンピュータコードを実行するプロセッサと、 第1メッセージディスパッチ技法を特定サイトで実行し
てメッセージをレシーバオブジェクトへディスパッチす
るコンピュータコードと、 第2メッセージディスパッチ技法が前記特定サイトで望
ましいか否か、をプログラム実行中に動的に決定するコ
ンピュータコードと、 前記第2メッセージディスパッチ技法が望ましい場合、
前記第2メッセージディスパッチ技法を前記特定サイト
でその後に実行して、メッセージを前記レシーバオブジ
ェクトへディスパッチするコンピュータコードと、 前記プロセッサが実行すべき前記コンピュータコードを
格納するコンピュータ読取り可能媒体と、 を備えるコンピュータシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/944331 | 1997-10-06 | ||
US08/944,331 US6385660B2 (en) | 1997-10-06 | 1997-10-06 | Site specific message dispatch in object-oriented systems |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH11272468A true JPH11272468A (ja) | 1999-10-08 |
Family
ID=25481206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10319741A Pending JPH11272468A (ja) | 1997-10-06 | 1998-10-06 | オブジェクト指向システムにおけるサイト特定メッセージディスパッチ |
Country Status (6)
Country | Link |
---|---|
US (1) | US6385660B2 (ja) |
EP (1) | EP0908814B1 (ja) |
JP (1) | JPH11272468A (ja) |
KR (1) | KR19990037014A (ja) |
CN (1) | CN1105968C (ja) |
DE (1) | DE69805728T2 (ja) |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6317796B1 (en) * | 1997-10-06 | 2001-11-13 | Sun Microsystems, Inc. | Inline database for receiver types in object-oriented systems |
US7966234B1 (en) | 1999-05-17 | 2011-06-21 | Jpmorgan Chase Bank. N.A. | Structured finance performance analytics system |
US7234146B1 (en) * | 1999-07-30 | 2007-06-19 | International Business Machines Corporation | Object in, object out technique |
US7249095B2 (en) | 2000-06-07 | 2007-07-24 | The Chase Manhattan Bank, N.A. | System and method for executing deposit transactions over the internet |
US6779106B1 (en) | 2000-09-28 | 2004-08-17 | International Business Machines Corporation | Apparatus and method for an enhanced integer divide in an IA64 architecture |
US6799262B1 (en) | 2000-09-28 | 2004-09-28 | International Business Machines Corporation | Apparatus and method for creating instruction groups for explicity parallel architectures |
US6883165B1 (en) | 2000-09-28 | 2005-04-19 | International Business Machines Corporation | Apparatus and method for avoiding deadlocks in a multithreaded environment |
US6886094B1 (en) | 2000-09-28 | 2005-04-26 | International Business Machines Corporation | Apparatus and method for detecting and handling exceptions |
US6912647B1 (en) | 2000-09-28 | 2005-06-28 | International Business Machines Corportion | Apparatus and method for creating instruction bundles in an explicitly parallel architecture |
US6779188B1 (en) * | 2000-09-28 | 2004-08-17 | International Business Machines Corporation | Apparatus and method for improved devirtualization of method calls |
US7313541B2 (en) | 2000-11-03 | 2007-12-25 | Jpmorgan Chase Bank, N.A. | System and method for estimating conduit liquidity requirements in asset backed commercial paper |
US7984147B2 (en) * | 2000-12-29 | 2011-07-19 | Hewlett-Packard Development Company, L.P. | Apparatus and method for identifying a requested level of service for a transaction |
US7596526B2 (en) * | 2001-04-16 | 2009-09-29 | Jpmorgan Chase Bank, N.A. | System and method for managing a series of overnight financing trades |
DE10131944A1 (de) * | 2001-07-02 | 2003-01-16 | Siemens Ag | Verfahren zur Verarbeitung von Daten |
US8224723B2 (en) | 2002-05-31 | 2012-07-17 | Jpmorgan Chase Bank, N.A. | Account opening system, method and computer program product |
CN1464401B (zh) * | 2002-06-28 | 2010-05-26 | 国际商业机器公司 | 使用影子对象进行核准控制的面向对象系统和方法 |
US20050044033A1 (en) * | 2003-01-10 | 2005-02-24 | Gelson Andrew F. | Like-kind exchange method |
US20040148247A1 (en) * | 2003-01-24 | 2004-07-29 | Lawrence Miller | Network-based systems, methods, and software for initiating or executing financial transactions |
US7634435B2 (en) * | 2003-05-13 | 2009-12-15 | Jp Morgan Chase Bank | Diversified fixed income product and method for creating and marketing same |
US7770184B2 (en) * | 2003-06-06 | 2010-08-03 | Jp Morgan Chase Bank | Integrated trading platform architecture |
US20050015324A1 (en) * | 2003-07-15 | 2005-01-20 | Jacob Mathews | Systems and methods for trading financial instruments across different types of trading platforms |
US7970688B2 (en) * | 2003-07-29 | 2011-06-28 | Jp Morgan Chase Bank | Method for pricing a trade |
US20050060256A1 (en) * | 2003-09-12 | 2005-03-17 | Andrew Peterson | Foreign exchange trading interface |
US8423447B2 (en) * | 2004-03-31 | 2013-04-16 | Jp Morgan Chase Bank | System and method for allocating nominal and cash amounts to trades in a netted trade |
US20050222937A1 (en) * | 2004-03-31 | 2005-10-06 | Coad Edward J | Automated customer exchange |
US20050251478A1 (en) * | 2004-05-04 | 2005-11-10 | Aura Yanavi | Investment and method for hedging operational risk associated with business events of another |
US7693770B2 (en) | 2004-08-06 | 2010-04-06 | Jp Morgan Chase & Co. | Method and system for creating and marketing employee stock option mirror image warrants |
US20090164384A1 (en) * | 2005-02-09 | 2009-06-25 | Hellen Patrick J | Investment structure and method for reducing risk associated with withdrawals from an investment |
US8688569B1 (en) | 2005-03-23 | 2014-04-01 | Jpmorgan Chase Bank, N.A. | System and method for post closing and custody services |
US20060242654A1 (en) * | 2005-04-22 | 2006-10-26 | Lund Kasper V | Process and apparatus for sharing inline caches |
US20090187512A1 (en) * | 2005-05-31 | 2009-07-23 | Jp Morgan Chase Bank | Asset-backed investment instrument and related methods |
US7822682B2 (en) | 2005-06-08 | 2010-10-26 | Jpmorgan Chase Bank, N.A. | System and method for enhancing supply chain transactions |
US20110035306A1 (en) * | 2005-06-20 | 2011-02-10 | Jpmorgan Chase Bank, N.A. | System and method for buying and selling securities |
US7567928B1 (en) | 2005-09-12 | 2009-07-28 | Jpmorgan Chase Bank, N.A. | Total fair value swap |
US7818238B1 (en) | 2005-10-11 | 2010-10-19 | Jpmorgan Chase Bank, N.A. | Upside forward with early funding provision |
US8280794B1 (en) | 2006-02-03 | 2012-10-02 | Jpmorgan Chase Bank, National Association | Price earnings derivative financial product |
US8291395B2 (en) * | 2006-03-31 | 2012-10-16 | Apple Inc. | Fast function call dispatching |
US7620578B1 (en) | 2006-05-01 | 2009-11-17 | Jpmorgan Chase Bank, N.A. | Volatility derivative financial product |
US7647268B1 (en) | 2006-05-04 | 2010-01-12 | Jpmorgan Chase Bank, N.A. | System and method for implementing a recurrent bidding process |
US9811868B1 (en) | 2006-08-29 | 2017-11-07 | Jpmorgan Chase Bank, N.A. | Systems and methods for integrating a deal process |
US7827096B1 (en) | 2006-11-03 | 2010-11-02 | Jp Morgan Chase Bank, N.A. | Special maturity ASR recalculated timing |
US8307379B2 (en) | 2006-12-21 | 2012-11-06 | International Business Machines Corporation | Determining an extension to use to process an input object to a call in a program |
US8738514B2 (en) | 2010-02-18 | 2014-05-27 | Jpmorgan Chase Bank, N.A. | System and method for providing borrow coverage services to short sell securities |
US8352354B2 (en) | 2010-02-23 | 2013-01-08 | Jpmorgan Chase Bank, N.A. | System and method for optimizing order execution |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5297284A (en) | 1991-04-09 | 1994-03-22 | Microsoft Corporation | Method and system for implementing virtual functions and virtual base classes and setting a this pointer for an object-oriented programming language |
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 |
US5404525A (en) | 1992-09-30 | 1995-04-04 | International Business Machines Corporation | Efficient method router that supports multiple simultaneous object versions |
US5442793A (en) | 1993-02-26 | 1995-08-15 | Microsoft Corporation | Method and system for locating an inherited virtual function member of a derived class |
US5485617A (en) | 1993-12-13 | 1996-01-16 | Microsoft Corporation | Method and system for dynamically generating object connections |
US5522071A (en) * | 1994-01-18 | 1996-05-28 | Sybase, Inc. | Run-time message redirection for invoking object oriented methods based on alternate dispatch variable |
US5600838A (en) | 1994-01-18 | 1997-02-04 | Sybase, Inc. | Object oriented dispatch and supercall process and arrangement |
US5581697A (en) * | 1994-01-28 | 1996-12-03 | Sun Microsystems, Inc. | Method and apparatus for run-time error checking using dynamic patching |
US5682532A (en) | 1994-05-02 | 1997-10-28 | Microsoft Corporation | System and method having programmable containers with functionality for managing objects |
US5794044A (en) | 1995-12-08 | 1998-08-11 | Sun Microsystems, Inc. | System and method for runtime optimization of private variable function calls in a secure interpreter |
JPH09282167A (ja) * | 1996-04-10 | 1997-10-31 | Internatl Business Mach Corp <Ibm> | メソッド起動方法及びメソッド起動制御装置 |
US5960197A (en) * | 1996-05-09 | 1999-09-28 | Sun Microsystems, Inc. | Compiler dispatch function for object-oriented C |
US5884316A (en) | 1996-11-19 | 1999-03-16 | Microsoft Corporation | Implicit session context system with object state cache |
US5907707A (en) | 1997-01-14 | 1999-05-25 | International Business Machines Corporation | Object model for Java |
-
1997
- 1997-10-06 US US08/944,331 patent/US6385660B2/en not_active Expired - Lifetime
-
1998
- 1998-09-24 EP EP98307753A patent/EP0908814B1/en not_active Expired - Lifetime
- 1998-09-24 DE DE69805728T patent/DE69805728T2/de not_active Expired - Lifetime
- 1998-10-05 CN CN98124353A patent/CN1105968C/zh not_active Expired - Fee Related
- 1998-10-06 JP JP10319741A patent/JPH11272468A/ja active Pending
- 1998-10-07 KR KR1019980042466A patent/KR19990037014A/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
US20010011306A1 (en) | 2001-08-02 |
DE69805728D1 (de) | 2002-07-11 |
EP0908814B1 (en) | 2002-06-05 |
EP0908814A1 (en) | 1999-04-14 |
DE69805728T2 (de) | 2003-01-30 |
CN1105968C (zh) | 2003-04-16 |
US6385660B2 (en) | 2002-05-07 |
CN1233797A (zh) | 1999-11-03 |
KR19990037014A (ko) | 1999-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH11272468A (ja) | オブジェクト指向システムにおけるサイト特定メッセージディスパッチ | |
US6317796B1 (en) | Inline database for receiver types in object-oriented systems | |
US6910205B2 (en) | Interpreting functions utilizing a hybrid of virtual and native machine instructions | |
US6651080B1 (en) | Techniques for implementing pluggable virtual machines | |
US6634023B1 (en) | Compile method, exception handling method and computer | |
US6968546B2 (en) | Debugging support using dynamic re-compilation | |
US6192516B1 (en) | Interpreter generation and implementation utilizing interpreter states and register caching | |
US6966057B2 (en) | Static compilation of instrumentation code for debugging support | |
US6470424B1 (en) | Pin management of accelerator for interpretive environments | |
US6453411B1 (en) | System and method using a hardware embedded run-time optimizer | |
JP3470948B2 (ja) | 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ | |
US20040154008A1 (en) | Static binding of dynamically-dispatched calls in the presence of dynamic linking and loading | |
JP2003140909A (ja) | Jitコンパイラを備えた仮想計算機 | |
JP2000347871A (ja) | スタブ/アダプタ自動生成器 | |
EP1080405A2 (en) | Dynamically converting statically bound function calls to dynamically bound function calls without recompilation | |
CA2376327C (en) | Executing native code in place of non-native code | |
US6871173B1 (en) | Method and apparatus for handling masked exceptions in an instruction interpreter | |
JP2005504376A (ja) | 仮想マシンインタープリタ(vmi)加速ハードウェアのためのソフトウェアサポート | |
JP5129904B2 (ja) | 実行時における関数の実行性能を増大させるための方法、計算機システム、実行時における関数の実行性能を増大させるための、コンピュータプログラムを格納するコンピュータ読み取り可能媒体 | |
JPH10240546A (ja) | 実行時プログラム翻訳方法 | |
KR20040058228A (ko) | 낮은 오버헤드의 예외 체킹 | |
JP2000222221A (ja) | コンパイル方法および装置、並びにメソッド活動度計算方法および装置 | |
JP3130421B2 (ja) | プログラム解析方法および装置 | |
JP2005063165A (ja) | 仮想計算機の高速エミュレータ | |
JP2001117759A (ja) | プラグ可能なバーチャル・マシンをインプリメントする技術 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051005 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051005 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070918 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071218 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20071218 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080122 |