JPH11237991A5 - - Google Patents
Info
- Publication number
- JPH11237991A5 JPH11237991A5 JP1998319743A JP31974398A JPH11237991A5 JP H11237991 A5 JPH11237991 A5 JP H11237991A5 JP 1998319743 A JP1998319743 A JP 1998319743A JP 31974398 A JP31974398 A JP 31974398A JP H11237991 A5 JPH11237991 A5 JP H11237991A5
- Authority
- JP
- Japan
- Prior art keywords
- frame
- data structure
- compiled
- computer
- control stack
- 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
Description
【特許請求の範囲】
【請求項1】
コンパイル済メソッドを逆最適化するためにコンピュータによって実行される方法であって、前記メソッドが第1の最適化状態にあり、更に前記メソッドは、制御スタック上に配置されたフレームに関連付けられており、
データ構造を生成するステップであって、前記データ構造は前記制御スタックから分離されており、前記データ構造は前記メソッドに関する情報を含んでおり、この情報は、前記メソッド及び前記フレームの少なくとも一つから取得されたものであるステップと、
参照インジケータを生成するステップであって、前記参照インジケータは前記フレームに関連付けられており、この参照インジケータは、前記データ構造を参照するように構成されているステップと、
前記データ構造が生成された後に、前記メソッドを第2の最適化状態に逆最適化するステップと、を備える方法。
【請求項2】
前記データ構造が機械独立であり、前記メソッドを逆最適化するステップは、前記第1の最適化状態にあるメソッドを消去するステップを含んでいる、請求項1記載のコンピュータによって実行される方法。
【請求項3】
前記第2の最適化状態が解釈済状態である、請求項1又は2記載のコンピュータによって実行される方法。
【請求項4】
前記フレームが前記制御スタックの中間部に配置されている、請求項1〜3のいずれかに記載のコンピュータによって実行される方法。
【請求項5】
前記メソッドを逆コンパイルするステップは、前記メソッドに含まれる最適化アクティベーションを逆最適化するステップを含んでいる、請求項1〜4のいずれかに記載のコンピュータによって実行される方法。
【請求項6】
逆最適化された前記アクティベーションを前記データ構造に格納するステップを更に備える請求項5記載のコンピュータによって実行される方法。
【請求項7】
前記データ構造に格納されている前記逆最適化アクティベーションを用いて新しいフレームを生成するステップと、
この新しいフレームを前記フレームの代わりに前記制御スタック上にプッシュするステップと、を更に備える請求項6記載のコンピュータによって実行される方法。
【請求項8】
前記データ構造は機械独立であり、
前記データ構造を第1のコンピュータシステムから第2のコンピュータシステムの方向に転送するステップを更に備える請求項1〜7のいずれかに記載のコンピュータによって実行される方法。
【請求項9】
前記データ構造は、前記第1コンピュータシステム上で生成され、
このデータ構造に格納された逆最適化アクティベーションを用いて、前記第2コンピュータシステム上に新しいフレームを生成するステップを更に備える請求項8記載のコンピュータによって実行される方法。
【請求項10】
制御スタック上の第1のフレームを動的に逆最適化するためにコンピュータによって実行される方法であって、前記第1フレームは関連コンパイル済メソッドを有し、このコンパイル済メソッドは、コンパイル済アクティベーションを含んでおり、
前記第1フレームに関連付けられた前記コンパイル済メソッドを逆最適化するステップであって、前記第1フレームは、前記制御スタック上の第2のフレームの下に配置されており、前記コンパイル済アクティベーションを逆最適化するサブステップを含み、前記コンパイル済アクティベーションと等価なインタープリタを生成するサブステップを更に含むステップと、
前記制御スタックから前記第2フレームを除去するステップと、
前記コンパイル済アクティベーションと等価なインタープリタから少なくとも一つのインタープリタフレームを生成するステップと、
この少なくとも一つのインタープリタフレームを前記第1フレームの代わりに前記スタックにプッシュするステップと、を備える方法。
【請求項11】
前記コンパイル済アクティベーションと等価なインタープリタをデータ構造に格納するステップであって、前記データ構造が前記第1フレームに関連付けられているステップを更に備える請求項10記載のコンピュータによって実行される方法。
【請求項12】
前記少なくとも一つのインタープリタフレームが生成された後に前記データ構造を消去するステップを更に備える請求項11記載のコンピュータによって実行される方法。
【請求項13】
コンパイル済メソッドを動的に逆最適化するためにコンピュータによって実行される方法であって、前記コンパイル済メソッドは制御スタック上の複数のフレームから選択された第1のフレームに関連付けられており、前記制御スタックは、前記制御スタック上の現行フレームを識別するように構成されたスタックポインタを含んでおり、
データ構造を生成するステップであって、前記データ構造は前記制御スタックから分離されており、前記データ構造は、前記第1フレームに関するインタープリタ情報及び前記コンパイル済メソッドに関するメソッド情報を含んでおり、前記第1フレームが前記データ構造への参照を含んでいるステップと、
前記コンパイル済メソッドを消去するステップと、
前記スタックポインタが前記第1フレームを前記制御スタック上の前記現行フレームとして識別する場合に、前記データ構造に含まれている前記インタープリタ情報をアンパックするステップであって、少なくとも一つのインタープリタフレームを生成するステップと、
前記少なくとも一つのインタープリタフレームを前記制御スタック上にプッシュするステップであって、前記第1フレームが前記少なくとも一つのインタープリタフレームによって置き換えられるステップと、を備える方法。
【請求項14】
前記コンパイル済メソッドに関連付けられたアクセス情報にアクセスするステップと、
前記インタープリタ情報を前記データ構造内に配置するステップであって、前記アクセス情報を用いて前記インタープリタ情報にアクセスするサブステップを含むステップと、を更に備える請求項13記載のコンピュータによって実行される方法。
【請求項15】
前記インタープリタ情報を前記データ構造内に配置する前記ステップは、
前記コンパイル済メソッドから前記メソッド情報を抽出するサブステップと、
前記第1フレームから前記インタープリタ情報を抽出するサブステップと、
前記インタープリタ情報及び前記メソッド情報を用いて少なくとも一つの解釈済アクティベーションを生成するサブステップと、
前記少なくとも一つの解釈済アクティベーションを前記データ構造中にマイグレートするサブステップと、を含んでいる請求項記載14記載のコンピュータによって実行される方法。
【請求項16】
前記インタープリタ情報がアンパックされる前に前記コンパイル済メソッドが消去される請求項13〜15のいずれかに記載のコンピュータによって実行される方法。
【請求項17】
前記スタック上にマイグレーティングフレームを生成するステップを更に備える請求項13〜16のいずれかに記載のコンピュータによって実行される方法であって、前記マイグレーティングフレームが、前記少なくとも一つのインタープリタフレームを前記制御スタック上の前記複数のフレームから選択された第2のフレームに関連付けるように構成されている方法。
【請求項18】
メソッドを逆最適化するためのコンピュータシステムであって、前記メソッドは第1の最適化状態にあり、前記メソッドは更に、制御スタック上に配置されたフレームに関連付けられており、
前記制御スタックから分離されたデータ構造であって、前記メソッドに関する情報を含むデータ構造と、
前記フレームに関連付けられた参照インジケータであって、前記データ構造を参照するように構成された参照インジケータと、
前記フレームを第2の最適化状態に逆最適化するように構成されたデオプティマイザであって、前記第2の最適化状態は前記第1の最適化状態よりも最適化が進んでおらず、前記メソッドを第2の最適化状態に逆最適化するように構成されているデオプティマイザと、を備えるコンピュータシステム。
【請求項19】
前記データ構造は機械独立であり、前記デオプティマイザは、更に前記第1最適化状態にあるメソッドを消去するように構成されている請求項18記載のコンピュータシステム。
【請求項20】
前記第2最適化状態が解釈済状態である請求項18又は19記載のコンピュータシステム。
【請求項21】
コンパイル済メソッドを逆最適化するように構成されたコンピュータプログラムコード装置を含むコンピュータ読取り可能な媒体であって、前記コンパイル済メソッドは第1の最適化状態にあり、前記コンパイル済メソッドは更に、制御スタック上に配置されたフレームに関連付けられており、
データ構造を生成するコンピュータプログラムコード装置であって、前記データ構造が前記制御スタックから分離されており、前記データ構造が前記メソッドに関する情報を含んでいるコンピュータプログラムコード装置と、
参照インジケータを生成するコンピュータプログラムコード装置であって、前記参照インジケータが前記フレームに関連付けられており、前記参照インジケータが前記データ構造を参照するように構成されているコンピュータプログラムコード装置と、
前記メソッドを第2の最適化状態に逆最適化するコンピュータプログラムコード装置と、を備えるコンピュータ読取り可能な媒体。
【請求項22】
コンパイル済メソッドを逆最適化するためにコンピュータによって実行される方法であって、前記メソッドが第1の最適化状態にあり、更に前記メソッドは、制御スタック上のある場所に関連付けられており、
前記制御スタックから分離されたデータ構造を生成するステップであって、前記データ構造は前記メソッドに関する情報を含んでおり、この情報は、前記メソッド及び前記制御スタック上の前記場所から取得されたものであるステップと、
前記データ構造を前記制御スタックに関連付けるように構成された識別メカニズムを生成するステップと、を備える方法。
【請求項23】
前記データ構造が機械独立であり、
前記データ構造を第1のコンピュータシステムと第2のコンピュータシステムとの間で転送するステップを更に含む請求項22記載のコンピュータによって実行される方法。
【請求項24】
前記データ構造は、前記第1のコンピュータ上で生成され、
このデータ構造に格納された情報を用いて、前記第2のコンピュータ上に新しいフレームを生成するステップを更に含む請求項22又は23記載のコンピュータによって実行される方法。
【請求項25】
前記識別メカニズムは、前記制御スタックから前記データ構造を参照するように構成された参照インジケータである請求項22〜24のいずれかに記載のコンピュータによって実行される方法。
【請求項26】
前記制御スタック上の前記場所がフレームであり、前記識別メカニズムが前記データ構造を前記フレームに関連付けるように構成されている請求項22〜25のいずれかに記載のコンピュータによって実行される方法。
【請求項27】
前記データ構造が生成された後に、前記メソッドを第2の最適化状態に逆コンパイルするステップを更に含む請求項22〜26のいずれかに記載のコンピュータによって実行される方法。
【請求項28】
前記第1の最適化状態において前記メソッドを遅延させるステップを更に含む請求項27記載のコンピュータによって実行される方法。
【請求項29】
前記第2の最適化状態が解釈済状態である請求項28記載のコンピュータによって実行される方法。
【請求項30】
前記メソッドを逆コンパイルするステップは、前記メソッドに含まれる最適化アクティベーションを逆最適化するステップを更に含む請求項27記載のコンピュータによって実行される方法。
【請求項31】
前記逆最適化されたアクティベーションを前記データ構造に格納するステップと、
前記データ構造に格納されている前記逆最適化アクティベーションを用いて新しいフレームを生成するステップと、
この新しいフレームを前記フレームの代わりに前記制御スタック上にプッシュするステップと、を更に含む請求項30記載のコンピュータによって実行される方法。
【請求項32】
前記データ構造が生成された後に、前記メソッドを第2の最適化状態に逆最適化するステップを更に含む請求項22記載のコンピュータによって実行される方法。
【請求項33】
コンパイル済メソッドを動的に逆最適化するためにコンピュータによって実行される方法であって、前記コンパイル済メソッドは制御スタック上の複数のフレームから選択された第1のフレームに関連付けられており、前記制御スタックは、前記制御スタック上の現行フレームを識別するように構成されたスタックポインタを含んでおり、
データ構造を生成するステップであって、前記データ構造は前記制御スタックから分離されており、前記データ構造は前記第1フレームに関するインタープリタ情報及び前記コンパイル済メソッドに関するメソッド情報を含んでおり、前記第1フレームが前記データ構造と関連付けられているステップと、
前記コンパイル済メソッドを遅延させるステップと、
前記スタックポインタが前記第1フレームを前記制御スタック上の前記現行フレームとして識別する場合に、前記データ構造に含まれる前記インタープリタ情報をアンパックするステップであって、前記インタープリタ情報のアンパックが少なくとも一つのインタープリタフレームを生成するステップと、
前記少なくとも一つのインタープリタフレームを前記制御スタック上にプッシュするステップであって、前記第1フレームが前記少なくとも一つのインタープリタフレームによって置き換えられるステップと、を備えるコンピュータによって実行される方法。
【請求項34】
前記第1フレームは、前記データ構造を識別する前記第1フレームへの参照によって、前記データ構造に関連付けられている請求項33記載のコンピュータによって実行される方法。
【請求項35】
メソッドを逆最適化するためのコンピュータシステムであって、前記メソッドが第1の最適化状態にあり、更に前記メソッドは、制御スタック上に配置されたフレームに関連付けられており、
前記制御スタックから分離されたデータ構造であって、前記メソッドに関する情報を含む前記データ構造と、
前記フレームを前記データ構造に関連付けられるように構成された第1のメカニズムと、を備えるコンピュータシステム。
【請求項36】
請求項35記載のコンピュータシステムであって、
前記フレームを第2の最適化状態に逆最適化するデオプティマイザを更に含み、
前記第2の最適化状態は前記第1の最適化状態よりも最適化が進んでおらず、
デオプティマイザは、更に前記メソッドを第2の最適化状態に逆最適化する請求項35記載のコンピュータシステム。
【請求項37】
コンパイル済メソッドの逆最適化は、該コンパイル済メソッドに含まれるコンパイル済アクティベーションの逆最適化を含む請求項36記載のコンピュータシステム。
【請求項38】
前記データ構造が機械独立である請求項35〜37のいずれかに記載のコンピュータシステム。
【請求項39】
前記第1のメカニズムは、前記フレームから前記データ構造を参照する参照インジケータである請求項35〜38のいずれかに記載のコンピュータシステム。
【請求項40】
コンパイル済メソッドを逆最適化するためにコンピュータによって実行される方法であって、前記メソッドが第1の最適化状態にあり、更に前記メソッドは、制御スタック上に配置されたフレームに関連付けられており、
前記メソッドに関する情報を含むデータ構造を生成するステップであって、この情報は、前記メソッド及び前記フレームから取得されたものであるステップと、
前記フレームに対し前記データ構造を識別するように構成されているメカニズムを生成するステップと、を備える方法。
【請求項41】
前記メソッドを第2の最適化状態に逆最適化するステップを更に含む請求項40記載のコンピュータによって実行される方法。
【請求項42】
コンパイル済メソッドを逆最適化するためにコンピュータを実行させる方法であって、前記メソッドが第1の最適化状態にあり、更に前記メソッドは、第1のメモリと関連付けられており、
第1のメモリから分離された第2のメモリ上に配置されると共に前記メソッドに関連付けられた情報を含むデータ構造を生成するステップであって、この情報は、前記第1のメモリから取得されたものであるステップと、
前記第1のメモリを前記第2のメモリに関連付けるように構成された識別メカニズムを生成するステップと、を備えるコンピュータによって実行される方法。
【請求項43】
コンパイル済メソッドを逆最適化するためにコンピュータによって実行される方法であって、前記メソッドが第1の最適化状態にあり、
前記コンパイル済メソッドから情報を取得するステップと、
少なくとも一部が前記情報に基づいているデータ構造を生成するステップであって、前記データ構造が前記コンパイル済メソッドに関する情報を含んでいるステップと、
前記データ構造を用いて前記コンパイル済メソッドを第2の最適化状態に逆最適化するステップと、を備える方法。
【請求項1】
コンパイル済メソッドを逆最適化するためにコンピュータによって実行される方法であって、前記メソッドが第1の最適化状態にあり、更に前記メソッドは、制御スタック上に配置されたフレームに関連付けられており、
データ構造を生成するステップであって、前記データ構造は前記制御スタックから分離されており、前記データ構造は前記メソッドに関する情報を含んでおり、この情報は、前記メソッド及び前記フレームの少なくとも一つから取得されたものであるステップと、
参照インジケータを生成するステップであって、前記参照インジケータは前記フレームに関連付けられており、この参照インジケータは、前記データ構造を参照するように構成されているステップと、
前記データ構造が生成された後に、前記メソッドを第2の最適化状態に逆最適化するステップと、を備える方法。
【請求項2】
前記データ構造が機械独立であり、前記メソッドを逆最適化するステップは、前記第1の最適化状態にあるメソッドを消去するステップを含んでいる、請求項1記載のコンピュータによって実行される方法。
【請求項3】
前記第2の最適化状態が解釈済状態である、請求項1又は2記載のコンピュータによって実行される方法。
【請求項4】
前記フレームが前記制御スタックの中間部に配置されている、請求項1〜3のいずれかに記載のコンピュータによって実行される方法。
【請求項5】
前記メソッドを逆コンパイルするステップは、前記メソッドに含まれる最適化アクティベーションを逆最適化するステップを含んでいる、請求項1〜4のいずれかに記載のコンピュータによって実行される方法。
【請求項6】
逆最適化された前記アクティベーションを前記データ構造に格納するステップを更に備える請求項5記載のコンピュータによって実行される方法。
【請求項7】
前記データ構造に格納されている前記逆最適化アクティベーションを用いて新しいフレームを生成するステップと、
この新しいフレームを前記フレームの代わりに前記制御スタック上にプッシュするステップと、を更に備える請求項6記載のコンピュータによって実行される方法。
【請求項8】
前記データ構造は機械独立であり、
前記データ構造を第1のコンピュータシステムから第2のコンピュータシステムの方向に転送するステップを更に備える請求項1〜7のいずれかに記載のコンピュータによって実行される方法。
【請求項9】
前記データ構造は、前記第1コンピュータシステム上で生成され、
このデータ構造に格納された逆最適化アクティベーションを用いて、前記第2コンピュータシステム上に新しいフレームを生成するステップを更に備える請求項8記載のコンピュータによって実行される方法。
【請求項10】
制御スタック上の第1のフレームを動的に逆最適化するためにコンピュータによって実行される方法であって、前記第1フレームは関連コンパイル済メソッドを有し、このコンパイル済メソッドは、コンパイル済アクティベーションを含んでおり、
前記第1フレームに関連付けられた前記コンパイル済メソッドを逆最適化するステップであって、前記第1フレームは、前記制御スタック上の第2のフレームの下に配置されており、前記コンパイル済アクティベーションを逆最適化するサブステップを含み、前記コンパイル済アクティベーションと等価なインタープリタを生成するサブステップを更に含むステップと、
前記制御スタックから前記第2フレームを除去するステップと、
前記コンパイル済アクティベーションと等価なインタープリタから少なくとも一つのインタープリタフレームを生成するステップと、
この少なくとも一つのインタープリタフレームを前記第1フレームの代わりに前記スタックにプッシュするステップと、を備える方法。
【請求項11】
前記コンパイル済アクティベーションと等価なインタープリタをデータ構造に格納するステップであって、前記データ構造が前記第1フレームに関連付けられているステップを更に備える請求項10記載のコンピュータによって実行される方法。
【請求項12】
前記少なくとも一つのインタープリタフレームが生成された後に前記データ構造を消去するステップを更に備える請求項11記載のコンピュータによって実行される方法。
【請求項13】
コンパイル済メソッドを動的に逆最適化するためにコンピュータによって実行される方法であって、前記コンパイル済メソッドは制御スタック上の複数のフレームから選択された第1のフレームに関連付けられており、前記制御スタックは、前記制御スタック上の現行フレームを識別するように構成されたスタックポインタを含んでおり、
データ構造を生成するステップであって、前記データ構造は前記制御スタックから分離されており、前記データ構造は、前記第1フレームに関するインタープリタ情報及び前記コンパイル済メソッドに関するメソッド情報を含んでおり、前記第1フレームが前記データ構造への参照を含んでいるステップと、
前記コンパイル済メソッドを消去するステップと、
前記スタックポインタが前記第1フレームを前記制御スタック上の前記現行フレームとして識別する場合に、前記データ構造に含まれている前記インタープリタ情報をアンパックするステップであって、少なくとも一つのインタープリタフレームを生成するステップと、
前記少なくとも一つのインタープリタフレームを前記制御スタック上にプッシュするステップであって、前記第1フレームが前記少なくとも一つのインタープリタフレームによって置き換えられるステップと、を備える方法。
【請求項14】
前記コンパイル済メソッドに関連付けられたアクセス情報にアクセスするステップと、
前記インタープリタ情報を前記データ構造内に配置するステップであって、前記アクセス情報を用いて前記インタープリタ情報にアクセスするサブステップを含むステップと、を更に備える請求項13記載のコンピュータによって実行される方法。
【請求項15】
前記インタープリタ情報を前記データ構造内に配置する前記ステップは、
前記コンパイル済メソッドから前記メソッド情報を抽出するサブステップと、
前記第1フレームから前記インタープリタ情報を抽出するサブステップと、
前記インタープリタ情報及び前記メソッド情報を用いて少なくとも一つの解釈済アクティベーションを生成するサブステップと、
前記少なくとも一つの解釈済アクティベーションを前記データ構造中にマイグレートするサブステップと、を含んでいる請求項記載14記載のコンピュータによって実行される方法。
【請求項16】
前記インタープリタ情報がアンパックされる前に前記コンパイル済メソッドが消去される請求項13〜15のいずれかに記載のコンピュータによって実行される方法。
【請求項17】
前記スタック上にマイグレーティングフレームを生成するステップを更に備える請求項13〜16のいずれかに記載のコンピュータによって実行される方法であって、前記マイグレーティングフレームが、前記少なくとも一つのインタープリタフレームを前記制御スタック上の前記複数のフレームから選択された第2のフレームに関連付けるように構成されている方法。
【請求項18】
メソッドを逆最適化するためのコンピュータシステムであって、前記メソッドは第1の最適化状態にあり、前記メソッドは更に、制御スタック上に配置されたフレームに関連付けられており、
前記制御スタックから分離されたデータ構造であって、前記メソッドに関する情報を含むデータ構造と、
前記フレームに関連付けられた参照インジケータであって、前記データ構造を参照するように構成された参照インジケータと、
前記フレームを第2の最適化状態に逆最適化するように構成されたデオプティマイザであって、前記第2の最適化状態は前記第1の最適化状態よりも最適化が進んでおらず、前記メソッドを第2の最適化状態に逆最適化するように構成されているデオプティマイザと、を備えるコンピュータシステム。
【請求項19】
前記データ構造は機械独立であり、前記デオプティマイザは、更に前記第1最適化状態にあるメソッドを消去するように構成されている請求項18記載のコンピュータシステム。
【請求項20】
前記第2最適化状態が解釈済状態である請求項18又は19記載のコンピュータシステム。
【請求項21】
コンパイル済メソッドを逆最適化するように構成されたコンピュータプログラムコード装置を含むコンピュータ読取り可能な媒体であって、前記コンパイル済メソッドは第1の最適化状態にあり、前記コンパイル済メソッドは更に、制御スタック上に配置されたフレームに関連付けられており、
データ構造を生成するコンピュータプログラムコード装置であって、前記データ構造が前記制御スタックから分離されており、前記データ構造が前記メソッドに関する情報を含んでいるコンピュータプログラムコード装置と、
参照インジケータを生成するコンピュータプログラムコード装置であって、前記参照インジケータが前記フレームに関連付けられており、前記参照インジケータが前記データ構造を参照するように構成されているコンピュータプログラムコード装置と、
前記メソッドを第2の最適化状態に逆最適化するコンピュータプログラムコード装置と、を備えるコンピュータ読取り可能な媒体。
【請求項22】
コンパイル済メソッドを逆最適化するためにコンピュータによって実行される方法であって、前記メソッドが第1の最適化状態にあり、更に前記メソッドは、制御スタック上のある場所に関連付けられており、
前記制御スタックから分離されたデータ構造を生成するステップであって、前記データ構造は前記メソッドに関する情報を含んでおり、この情報は、前記メソッド及び前記制御スタック上の前記場所から取得されたものであるステップと、
前記データ構造を前記制御スタックに関連付けるように構成された識別メカニズムを生成するステップと、を備える方法。
【請求項23】
前記データ構造が機械独立であり、
前記データ構造を第1のコンピュータシステムと第2のコンピュータシステムとの間で転送するステップを更に含む請求項22記載のコンピュータによって実行される方法。
【請求項24】
前記データ構造は、前記第1のコンピュータ上で生成され、
このデータ構造に格納された情報を用いて、前記第2のコンピュータ上に新しいフレームを生成するステップを更に含む請求項22又は23記載のコンピュータによって実行される方法。
【請求項25】
前記識別メカニズムは、前記制御スタックから前記データ構造を参照するように構成された参照インジケータである請求項22〜24のいずれかに記載のコンピュータによって実行される方法。
【請求項26】
前記制御スタック上の前記場所がフレームであり、前記識別メカニズムが前記データ構造を前記フレームに関連付けるように構成されている請求項22〜25のいずれかに記載のコンピュータによって実行される方法。
【請求項27】
前記データ構造が生成された後に、前記メソッドを第2の最適化状態に逆コンパイルするステップを更に含む請求項22〜26のいずれかに記載のコンピュータによって実行される方法。
【請求項28】
前記第1の最適化状態において前記メソッドを遅延させるステップを更に含む請求項27記載のコンピュータによって実行される方法。
【請求項29】
前記第2の最適化状態が解釈済状態である請求項28記載のコンピュータによって実行される方法。
【請求項30】
前記メソッドを逆コンパイルするステップは、前記メソッドに含まれる最適化アクティベーションを逆最適化するステップを更に含む請求項27記載のコンピュータによって実行される方法。
【請求項31】
前記逆最適化されたアクティベーションを前記データ構造に格納するステップと、
前記データ構造に格納されている前記逆最適化アクティベーションを用いて新しいフレームを生成するステップと、
この新しいフレームを前記フレームの代わりに前記制御スタック上にプッシュするステップと、を更に含む請求項30記載のコンピュータによって実行される方法。
【請求項32】
前記データ構造が生成された後に、前記メソッドを第2の最適化状態に逆最適化するステップを更に含む請求項22記載のコンピュータによって実行される方法。
【請求項33】
コンパイル済メソッドを動的に逆最適化するためにコンピュータによって実行される方法であって、前記コンパイル済メソッドは制御スタック上の複数のフレームから選択された第1のフレームに関連付けられており、前記制御スタックは、前記制御スタック上の現行フレームを識別するように構成されたスタックポインタを含んでおり、
データ構造を生成するステップであって、前記データ構造は前記制御スタックから分離されており、前記データ構造は前記第1フレームに関するインタープリタ情報及び前記コンパイル済メソッドに関するメソッド情報を含んでおり、前記第1フレームが前記データ構造と関連付けられているステップと、
前記コンパイル済メソッドを遅延させるステップと、
前記スタックポインタが前記第1フレームを前記制御スタック上の前記現行フレームとして識別する場合に、前記データ構造に含まれる前記インタープリタ情報をアンパックするステップであって、前記インタープリタ情報のアンパックが少なくとも一つのインタープリタフレームを生成するステップと、
前記少なくとも一つのインタープリタフレームを前記制御スタック上にプッシュするステップであって、前記第1フレームが前記少なくとも一つのインタープリタフレームによって置き換えられるステップと、を備えるコンピュータによって実行される方法。
【請求項34】
前記第1フレームは、前記データ構造を識別する前記第1フレームへの参照によって、前記データ構造に関連付けられている請求項33記載のコンピュータによって実行される方法。
【請求項35】
メソッドを逆最適化するためのコンピュータシステムであって、前記メソッドが第1の最適化状態にあり、更に前記メソッドは、制御スタック上に配置されたフレームに関連付けられており、
前記制御スタックから分離されたデータ構造であって、前記メソッドに関する情報を含む前記データ構造と、
前記フレームを前記データ構造に関連付けられるように構成された第1のメカニズムと、を備えるコンピュータシステム。
【請求項36】
請求項35記載のコンピュータシステムであって、
前記フレームを第2の最適化状態に逆最適化するデオプティマイザを更に含み、
前記第2の最適化状態は前記第1の最適化状態よりも最適化が進んでおらず、
デオプティマイザは、更に前記メソッドを第2の最適化状態に逆最適化する請求項35記載のコンピュータシステム。
【請求項37】
コンパイル済メソッドの逆最適化は、該コンパイル済メソッドに含まれるコンパイル済アクティベーションの逆最適化を含む請求項36記載のコンピュータシステム。
【請求項38】
前記データ構造が機械独立である請求項35〜37のいずれかに記載のコンピュータシステム。
【請求項39】
前記第1のメカニズムは、前記フレームから前記データ構造を参照する参照インジケータである請求項35〜38のいずれかに記載のコンピュータシステム。
【請求項40】
コンパイル済メソッドを逆最適化するためにコンピュータによって実行される方法であって、前記メソッドが第1の最適化状態にあり、更に前記メソッドは、制御スタック上に配置されたフレームに関連付けられており、
前記メソッドに関する情報を含むデータ構造を生成するステップであって、この情報は、前記メソッド及び前記フレームから取得されたものであるステップと、
前記フレームに対し前記データ構造を識別するように構成されているメカニズムを生成するステップと、を備える方法。
【請求項41】
前記メソッドを第2の最適化状態に逆最適化するステップを更に含む請求項40記載のコンピュータによって実行される方法。
【請求項42】
コンパイル済メソッドを逆最適化するためにコンピュータを実行させる方法であって、前記メソッドが第1の最適化状態にあり、更に前記メソッドは、第1のメモリと関連付けられており、
第1のメモリから分離された第2のメモリ上に配置されると共に前記メソッドに関連付けられた情報を含むデータ構造を生成するステップであって、この情報は、前記第1のメモリから取得されたものであるステップと、
前記第1のメモリを前記第2のメモリに関連付けるように構成された識別メカニズムを生成するステップと、を備えるコンピュータによって実行される方法。
【請求項43】
コンパイル済メソッドを逆最適化するためにコンピュータによって実行される方法であって、前記メソッドが第1の最適化状態にあり、
前記コンパイル済メソッドから情報を取得するステップと、
少なくとも一部が前記情報に基づいているデータ構造を生成するステップであって、前記データ構造が前記コンパイル済メソッドに関する情報を含んでいるステップと、
前記データ構造を用いて前記コンパイル済メソッドを第2の最適化状態に逆最適化するステップと、を備える方法。
さらに、コンパイル済コードが、もはや有効でない仮定に基づいているという理由で逆コンパイル済コードを廃棄しなければならない場合もある。例えば、コンパイル済コードは、新しいクラスがロードされたという理由や、プログラムコードが変更されたという理由で棄却される場合がある。仮定がもはや有効でない、すなわちもはや成り立たない場合、コンピュータシステムがコンパイル済コードを実行し続けるなら、誤った結果が生じるかもしれない。従って、コンピュータシステムは、一般に、コンパイル済コードが現在一つ以上のアクティベーションレコード内で動作しているという場合ですら、誤った結果を警戒するためにコンパイル済コードの実行を停止しなければならない。
コンパイル済フレームが制御スタックのトップに来るまで逆コンパイル済フレームが等価なインタープリタコードに変換されない場合がある。これは、等価インタープリタコードは、しばしばコンパイル済フレームによって要求されるよりも多くの制御スタック上のスペースを要求するという事実による。従って、付加的なスペースを制御スタックの中間に割り当てることができない場合があるので、メソッドに対応するフレームが制御スタックのトップに来るまで、そのメソッドをデコンパイル(逆コンパイル)したりデオプティマイズ(逆最適化)することができない。このため、コンパイル済フレームが制御スタックの中間にあるとき、すなわちコンパイル済フレームが制御スタックの最上フレームでないときは、コンパイル済フレームを対応するインタープリタフレームによって置き換えることはできない。
コンパイル済メソッド316の解釈済表現に関する情報は、コンパイル済メソッド316及びフレーム308bの双方に含まれていることがある。一般に、当業者であれば理解できるように、コンパイル済メソッド316は静的な情報を含み、フレーム308bは動的な情報を含む。図7を参照して後述するように、この情報は、インタープリタアクティベーションを保持するように本質的に構成されたデータ構造を生成する際に用いられる。インタープリタアクティベーションを保持するデータ構造を生成することで、フレーム308bの逆最適化が可能になる。図4は、インタープリタアクティベーションを保持するデータ構造が本発明の実施形態に従って生成された後におけるスタック304の線図である。データ構造324は、バーチャルフレーム(“vframe")アレイと呼ばれ、図3のコンパイル済メソッド316を表すインタープリタアクティベーション328を保持する。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/944,330 US5933635A (en) | 1997-10-06 | 1997-10-06 | Method and apparatus for dynamically deoptimizing compiled activations |
| US08/944330 | 1997-10-06 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH11237991A JPH11237991A (ja) | 1999-08-31 |
| JPH11237991A5 true JPH11237991A5 (ja) | 2006-02-09 |
Family
ID=25481204
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP10319743A Pending JPH11237991A (ja) | 1997-10-06 | 1998-10-06 | コンパイル済アクティベーションを動的に逆最適化する方法及び装置 |
Country Status (5)
| Country | Link |
|---|---|
| US (3) | US5933635A (ja) |
| EP (1) | EP0908820A3 (ja) |
| JP (1) | JPH11237991A (ja) |
| KR (1) | KR100573043B1 (ja) |
| CN (1) | CN1143210C (ja) |
Families Citing this family (43)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5970249A (en) * | 1997-10-06 | 1999-10-19 | Sun Microsystems, Inc. | Method and apparatus for performing byte-code optimization during pauses |
| US5995754A (en) * | 1997-10-06 | 1999-11-30 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing byte-coded programs |
| US5933635A (en) * | 1997-10-06 | 1999-08-03 | Sun Microsystems, Inc. | Method and apparatus for dynamically deoptimizing compiled activations |
| US6865734B2 (en) * | 1997-10-06 | 2005-03-08 | Sun Microsystems, Inc. | Method and apparatus for performing byte-code optimization during pauses |
| US6317796B1 (en) | 1997-10-06 | 2001-11-13 | Sun Microsystems, Inc. | Inline database for receiver types in object-oriented systems |
| US6704927B1 (en) * | 1998-03-24 | 2004-03-09 | Sun Microsystems, Inc. | Static binding of dynamically-dispatched calls in the presence of dynamic linking and loading |
| US6205578B1 (en) * | 1998-08-14 | 2001-03-20 | Ati International Srl | Interpreter for stack-based languages |
| JP2000122875A (ja) * | 1998-10-19 | 2000-04-28 | Internatl Business Mach Corp <Ibm> | 例外処理方法およびシステム |
| GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
| JP3807860B2 (ja) * | 1999-01-29 | 2006-08-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイル方法および装置、並びにメソッド活動度計算方法および装置 |
| US6968549B1 (en) * | 1999-07-02 | 2005-11-22 | Beryl Technical Assays Llc | Method and system for dynamically loading data structures into memory with global constant pool |
| US7150005B2 (en) * | 1999-07-02 | 2006-12-12 | Beryl Technical Assays, Llc | Method and system for global constant management for memory |
| US6714904B1 (en) * | 1999-10-13 | 2004-03-30 | Transmeta Corporation | System for using rate of exception event generation during execution of translated instructions to control optimization of the translated instructions |
| US7761857B1 (en) | 1999-10-13 | 2010-07-20 | Robert Bedichek | Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts |
| JP3356742B2 (ja) * | 1999-11-17 | 2002-12-16 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム実行方法 |
| US6526572B1 (en) * | 2000-02-09 | 2003-02-25 | Hewlett-Packard Company | Mechanism for software register renaming and load speculation in an optimizer |
| US6594821B1 (en) | 2000-03-30 | 2003-07-15 | Transmeta Corporation | Translation consistency checking for modified target instructions by comparing to original copy |
| US6615300B1 (en) | 2000-06-19 | 2003-09-02 | Transmeta Corporation | Fast look-up of indirect branch destination in a dynamic translation system |
| US6973646B1 (en) * | 2000-07-21 | 2005-12-06 | International Business Machines Corporation | Method for compiling program components in a mixed static and dynamic environment |
| US6658656B1 (en) * | 2000-10-31 | 2003-12-02 | Hewlett-Packard Development Company, L.P. | Method and apparatus for creating alternative versions of code segments and dynamically substituting execution of the alternative code versions |
| JP3808755B2 (ja) * | 2001-11-07 | 2006-08-16 | 富士通株式会社 | Jitコンパイラを備えた仮想計算機 |
| US7181732B2 (en) * | 2001-11-14 | 2007-02-20 | Sun Microsystems, Inc. | Method and apparatus for facilitating lazy type tagging for compiled activations |
| US6738969B2 (en) | 2001-11-14 | 2004-05-18 | Sun Microsystems, Inc. | Non-intrusive gathering of code usage information to facilitate removing unused compiled code |
| US6996814B2 (en) | 2001-11-14 | 2006-02-07 | Sun Microsystems, Inc. | Method and apparatus for dynamically compiling byte codes into native code |
| US7020160B1 (en) | 2001-12-17 | 2006-03-28 | Supergate Technology Usa, Inc. | Interface circuits for modularized data optimization engines and methods therefor |
| US7180909B1 (en) * | 2001-12-17 | 2007-02-20 | Supergate Technology Usa, Inc. | Interface receive circuits for modularized data optimization engines and methods therefor |
| US8639849B2 (en) * | 2001-12-17 | 2014-01-28 | Sutech Data Solutions Co., Llc | Integrated circuits for high speed adaptive compression and methods therefor |
| US6973644B2 (en) * | 2002-04-12 | 2005-12-06 | The Mathworks, Inc. | Program interpreter |
| US7051322B2 (en) * | 2002-12-06 | 2006-05-23 | @Stake, Inc. | Software analysis framework |
| US7310723B1 (en) | 2003-04-02 | 2007-12-18 | Transmeta Corporation | Methods and systems employing a flag for deferring exception handling to a commit or rollback point |
| US7743377B2 (en) * | 2004-10-25 | 2010-06-22 | Microsoft Corporation | Cooperative threading in a managed code execution environment |
| US8413162B1 (en) | 2005-06-28 | 2013-04-02 | Guillermo J. Rozas | Multi-threading based on rollback |
| DE602005024399D1 (de) * | 2005-08-30 | 2010-12-09 | Sony Ericsson Mobile Comm Ab | Verfahren und Software für die Optimierung der Positionierung von Software-Funktionen in einem Speicher |
| US8613080B2 (en) | 2007-02-16 | 2013-12-17 | Veracode, Inc. | Assessment and analysis of software security flaws in virtual machines |
| JP2009211190A (ja) * | 2008-02-29 | 2009-09-17 | Hitachi Ltd | 情報処理装置 |
| US20130205282A1 (en) * | 2012-02-07 | 2013-08-08 | Microsoft Corporation | Transferring program execution from compiled code to interpreted code |
| US9286063B2 (en) | 2012-02-22 | 2016-03-15 | Veracode, Inc. | Methods and systems for providing feedback and suggested programming methods |
| US8930920B2 (en) | 2012-12-31 | 2015-01-06 | Oracle International Corporation | Self-optimizing interpreter and snapshot compilation |
| US12124586B2 (en) * | 2013-09-13 | 2024-10-22 | Omnissa, Llc | Risk assessment for managed client devices |
| WO2015057828A1 (en) * | 2013-10-15 | 2015-04-23 | Mill Computing, Inc. | Computer processor employing cache memory storing backless cache lines |
| US9569185B2 (en) | 2014-02-07 | 2017-02-14 | Oracle International Corporation | Changing de-optimization guard representation during the compilation process |
| KR20170047957A (ko) * | 2015-10-26 | 2017-05-08 | 삼성전자주식회사 | 반도체 장치의 동작 방법 및 반도체 시스템 |
| US11029929B2 (en) * | 2019-01-24 | 2021-06-08 | Red Hat, Inc. | Using emulation to improve startup time for just-in-time compilation |
Family Cites Families (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5371747A (en) * | 1992-06-05 | 1994-12-06 | Convex Computer Corporation | Debugger program which includes correlation of computer program source code with optimized object code |
| WO1993025964A1 (en) * | 1992-06-05 | 1993-12-23 | Convex Computer Corporation | Computer program debugging in the presence of compiler synthesized variables |
| US5586328A (en) * | 1994-10-21 | 1996-12-17 | Microsoft Corporation | Module dependency based incremental compiler and method |
| US6021272A (en) * | 1995-10-04 | 2000-02-01 | Platinum Technology, Inc. | Transforming and manipulating program object code |
| US5956479A (en) * | 1995-11-13 | 1999-09-21 | Object Technology Licensing Corporation | Demand based generation of symbolic information |
| US6151618A (en) * | 1995-12-04 | 2000-11-21 | Microsoft Corporation | Safe general purpose virtual machine computing system |
| JP3801643B2 (ja) * | 1996-01-24 | 2006-07-26 | サン・マイクロシステムズ・インコーポレイテッド | スタックを用いる演算マシンのための命令フォールディング処理 |
| US5933635A (en) * | 1997-10-06 | 1999-08-03 | Sun Microsystems, Inc. | Method and apparatus for dynamically deoptimizing compiled activations |
| US6110226A (en) * | 1998-02-19 | 2000-08-29 | Cygnus Solutions | Java development environment using optimizing ahead-of-time compiler |
| US6263489B1 (en) * | 1998-04-30 | 2001-07-17 | Hewlett-Packard Company | Method and apparatus for debugging of optimized code |
| US6434741B1 (en) * | 1998-04-30 | 2002-08-13 | Hewlett-Packard Company | Method and apparatus for debugging of optimized code using emulation |
| US6223340B1 (en) * | 1998-10-09 | 2001-04-24 | Sun Microsystems, Inc. | Method for directly inlining virtual calls without on-stack replacement |
| US6275981B1 (en) * | 1998-11-12 | 2001-08-14 | Hewlett-Packard Company | Method and system for correlating profile data dynamically generated from an optimized executable program with source code statements |
| US6507946B2 (en) * | 1999-06-11 | 2003-01-14 | International Business Machines Corporation | Process and system for Java virtual method invocation |
-
1997
- 1997-10-06 US US08/944,330 patent/US5933635A/en not_active Expired - Lifetime
-
1998
- 1998-09-24 EP EP98307752A patent/EP0908820A3/en not_active Withdrawn
- 1998-10-05 CN CNB981246729A patent/CN1143210C/zh not_active Expired - Fee Related
- 1998-10-06 JP JP10319743A patent/JPH11237991A/ja active Pending
- 1998-10-07 KR KR1019980041794A patent/KR100573043B1/ko not_active Expired - Lifetime
-
1999
- 1999-06-18 US US09/336,123 patent/US6240547B1/en not_active Expired - Fee Related
-
2001
- 2001-04-27 US US09/844,545 patent/US6601235B1/en not_active Expired - Lifetime
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH11237991A5 (ja) | ||
| KR100573043B1 (ko) | 컴파일링된활성화레코드를동적최적화해제하는방법및장치 | |
| KR100289628B1 (ko) | 멀티태스킹 기능의 정보처리시스템을 위한 자원관리방법및 그 장치 | |
| US6578094B1 (en) | Method for preventing buffer overflow attacks | |
| US7203941B2 (en) | Associating a native resource with an application | |
| KR101366402B1 (ko) | 가상 실행 시스템 및 가상 실행 시스템의 성능 향상 방법 | |
| US20110213954A1 (en) | Method and apparatus for generating minimum boot image | |
| KR20040032199A (ko) | 비휘발성 메모리에의 데이터 저장 방법 및 장치 | |
| CN101661486A (zh) | 对包含虚拟机的宿主机硬盘进行碎片整理的方法和系统 | |
| US7406684B2 (en) | Compiler, dynamic compiler, and replay compiler | |
| JP2016541047A (ja) | コードスタック管理 | |
| EP1215577A3 (en) | Fault management and recovery based on task-ID | |
| JP2019506666A (ja) | ハードウェア管理スタック・アーキテクチャにおける呼び出し元により保護されるスタック・リターンアドレス | |
| JP2000347872A (ja) | 例外を正規制御フローとして処理する方法及び装置 | |
| US20170323105A1 (en) | Virtual machine creation method and apparatus | |
| JP4005724B2 (ja) | マルチプルリターンサイトを実現するための方法及び装置 | |
| CN110941516B (zh) | 操作系统还原方法、装置、设备及存储介质 | |
| KR100494499B1 (ko) | 실행중인 파일에 대한 실시간 데이터 수정 방법 및 이를이용한 바이러스 치료방법 | |
| US20040243986A1 (en) | Interpreter and native code execution method | |
| CN106250125A (zh) | 获取日志的方法及装置 | |
| CN112612417B (zh) | 数据迁移方法、装置、设备及存储介质 | |
| CN112596950B (zh) | 虚拟机数据备份方法、装置、设备及存储介质 | |
| US8898625B2 (en) | Optimized storage of function variables | |
| JP2009134565A (ja) | 仮想計算機システム及び仮想計算機システムの制御方法 | |
| WO2002037272A2 (en) | Improved frameworks for invoking methods in virtual machines |