【手続補正書】
【提出日】平成23年4月18日(2011.4.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の孤立したバーチャルマシンの間でプログラムモジュールを共用するための機械により実行される方法であって、
複数の孤立したバーチャルマシンによって読取可能な共用可能なメモリ領域から、第一バーチャルマシンの第一プライベートメモリ領域内へ、第一データをコピーするステップであり、前記第一データは、第二バーチャルマシンが（ａ）プログラムモジュールからロードし、（ｂ）当該第二バーチャルマシンの第二プライベートメモリ領域内へ格納し、且つ（ｃ）前記第二プライベートメモリ領域から前記共用可能なメモリ領域内へコピーしたデータである、ステップと、
前記第一バーチャルマシンと、第二データを包含する前記共用可能なメモリ領域の特定の区域と、の間のマッピングを確立するステップであり、前記第二
データは、前記第二バーチャルマシンが（ａ）前記プログラムモジュールからロードし、（ｂ）前記共用可能なメモリ領域の前記特定の区域内へ格納したデータである、ステップと、
を有し、
前記マッピングは、前記第一バーチャルマシンの如何なるプライベートメモリ領域内にも前記第二データのコピーを作成することなく、前記第一バーチャルマシンが前記第二データを読取ることを可能にし、且つ
前記第一プライベートメモリ領域及び前記第二プライベートメモリ領域の双方が同一の仮想アドレスで開始する、
方法。
【請求項２】
前記第一データは、ランタイムにおいて前記第一バーチャルマシンにより使用可能でない第一フォームから、ランタイムにおいて前記第一バーチャルマシン及び前記第二バーチャルマシンの双方によって使用可能な第二フォームへと、前記第二バーチャルマシンが処理したデータを有する、請求項１に記載の方法。
【請求項３】
前記プログラムモジュールはジャバＪＡＲファイルであり、且つ前記第一データは少なくとも１個のジャバクラスに対応している、請求項１に記載の方法。
【請求項４】
前記第一データが前記第一プライベートメモリ領域内にコピーされた後、前記第二データは、（ａ）前記第一プライベートメモリ領域内の仮想アドレス及び（ｂ）前記第二プライベートメモリ領域内の同一の仮想アドレスの双方を参照する少なくとも１個の参照を包含している、請求項１に記載の方法。
【請求項５】
前記プログラムモジュールから直接的に如何なるデータもロードすることなく、前記第一バーチャルマシンが前記第一データ及び前記第二データを使用してプログラムを実行するステップ、を更に有する請求項１に記載の方法。
【請求項６】
前記第一データは、変更可能なエンティティを表し、
前記第二データは、変更不可能なエンティティを表すが、如何なる変更可能なエンティティをも表さない、
請求項１に記載の方法。
【請求項７】
前記第一データが前記共用可能なメモリ領域内に存在する時間の前、前記第二データにおける参照は、前記第二プライベートメモリ領域内の前記第一データのコピー内の特定の仮想メモリアドレスを参照し、
前記第一データが前記第一プライベートメモリ領域内に存在する時間の後、前記第二データにおける前記参照は、前記第一プライベートメモリ領域内の前記第一データのコピー内の同一の特定の仮想メモリアドレスを参照する、
請求項１に記載の方法。
【請求項８】
前記プログラムモジュールから前記第一データをロードすることの一部として、第二ＪＶＭプロセスが、複数個の異なるファンクションポインターベクトルの中から、（ａ）前記プログラムモジュールからデータをロードするクラスローダー及び（ｂ）前記プログラムモジュール、のうちの少なくとも一方に対応する特定のファンクションポインターベクトルを選択し、
前記プログラムモジュールから前記第一データをロードすることの一部として、第二ＪＶＭプロセスが、前記特定のファンクションポインターベクトルが参照する１つ以上のファンクションをコールする、
請求項１に記載の方法。
【請求項９】
前記プログラムモジュールから前記第一データをロードすることの一部として、第二ＪＶＭプロセスが、複数個の別個の共用可能なメモリ領域の中から、該複数個におけるその他のプログラムモジュールではなく該プログラムモジュールに対応する特定の共用可能なメモリ領域を選択し、且つ
第二ＪＶＭプロセスが前記第二プライベートメモリ領域からのデータを前記特定の共用可能なメモリ領域内へコピーする、
請求項１に記載の方法。
【請求項１０】
１つ以上の命令シーケンスを格納した機械読取可能な記憶媒体であって、該命令シーケンスは、１つ以上のプロセッサによって実行されるとき、該１つ以上のプロセッサに：
複数の孤立したバーチャルマシンによって読取可能な共用可能なメモリ領域から、第一バーチャルマシンの第一プライベートメモリ領域内へ、第一データをコピーするステップであり、前記第一データは、第二バーチャルマシンが（ａ）プログラムモジュールからロードし、（ｂ）当該第二バーチャルマシンの第二プライベートメモリ領域内へ格納し、且つ（ｃ）前記第二プライベートメモリ領域から前記共用可能なメモリ領域内へコピーしたデータである、ステップと、
前記第一バーチャルマシンと、第二データを包含する前記共用可能なメモリ領域の特定の区域と、の間のマッピングを確立するステップであり、前記第二
データは、前記第二バーチャルマシンが（ａ）前記プログラムモジュールからロードし且つ（ｂ）前記共用可能なメモリ領域の前記特定の区域内に格納したデータである、ステップと、
を実行させ、
前記マッピングは、前記第一バーチャルマシンの如何なるプライベートメモリ領域内にも前記第二データのコピーを作成することなく、前記第一バーチャルマシンが前記第二データを読取ることを可能とし、
前記第一プライベートメモリ領域及び前記第二プライベートメモリ領域の双方が同一の仮想アドレスで開始する、
機械読取可能な記憶媒体。
【請求項１１】
前記第一データは、ランタイムにおいて前記第一バーチャルマシンによって使用可能でない第一フォームから、ランタイムにおいて前記第一バーチャルマシン及び前記第二バーチャルマシンの双方によって使用可能な第二フォームへと、前記第二バーチャルマシンが処理したデータを有する、請求項１０に記載の機械読取可能な記憶媒体。
【請求項１２】
前記プログラムモジュールはジャバＪＡＲファイルであり、且つ前記第一データは少なくとも１個のジャバクラスに対応している、請求項１０に記載の機械読取可能な記憶媒体。
【請求項１３】
前記第一データが前記第一プライベートメモリ領域内にコピーされた後、前記第二データは、（ａ）前記第一プライベートメモリ領域内の仮想アドレス及び（ｂ）前記第二プライベートメモリ領域内の同一の仮想アドレスの双方を参照する少なくとも１個の参照を包含している、請求項１０に記載の機械読取可能な記憶媒体。
【請求項１４】
前記命令シーケンスは、前記１つ以上のプロセッサに更に、
前記プログラムモジュールから直接的に如何なるデータもロードすることなく、前記第一バーチャルマシンが前記第一データ及び前記第二データを使用してプログラムを実行するステップ、
を実行させる、請求項１０に記載の機械読取可能な記憶媒体。
【請求項１５】
前記第一データは、変更可能なエンティティを表し、
前記第二データは、変更不可能なエンティティを表すが、如何なる変更可能なエンティティをも表さない、
請求項１０に記載の機械読取可能な記憶媒体。
【請求項１６】
前記第一データが前記共用可能なメモリ領域内に存在する時間の前、前記第二データにおける参照は、前記第二プライベートメモリ領域内の前記第一データのコピー内の特定の仮想メモリアドレスを参照し、且つ
前記第一データが前記第一プライベートメモリ領域内に存在する時間の後、前記第二データにおける前記参照は、前記第一プライベートメモリ領域内の前記第一データのコピー内の同一の特定の仮想メモリアドレスを参照する、
請求項１０に記載の機械読取可能な記憶媒体。
【請求項１７】
前記プログラムモジュールから前記第一データをロードすることの一部として、第二ＪＶＭプロセスが、複数個の異なるファンクションポインターベクトルの中から、（ａ）前記プログラムモジュールからデータをロードするクラスローダー、及び（ｂ）前記プログラムモジュール、のうちの少なくとも一方に対応する特定のファンクションポインターベクトルを選択し、
前記プログラムモジュールから前記第一データをロードすることの一部として、第二ＪＶＭプロセスが、前記特定のファンクションポインターベクトルが参照する１つ以上のファンクションをコールする、
請求項１０に記載の機械読取可能な記憶媒体。
【請求項１８】
前記プログラムモジュールから前記第一データをロードすることの一部として、第二ＪＶＭプロセスが、複数個の別個の共用可能なメモリ領域の中から、該プログラムモジュールに対応するが該複数個におけるその他のプログラムモジュールに対応するものではない特定の共用可能なメモリ領域を選択し、
第二ＪＶＭプロセスが前記第二プライベートメモリ領域からのデータを前記特定の共用可能なメモリ領域内へコピーする、
請求項１０に記載の機械読取可能な記憶媒体。
【請求項１９】
複数の孤立したバーチャルマシンの間でプログラムモジュールを共用するためのコンピュータプログラムであって、１つ以上のプロセッサによって実行されるとき、該１つ以上のプロセッサに：
複数の孤立したバーチャルマシンによって読取可能な共用可能なメモリ領域から、第一バーチャルマシンの第一プライベートメモリ領域内へ、第一データをコピーするステップであり、前記第一データは、第二バーチャルマシンが（ａ）プログラムモジュールからロードし、（ｂ）当該第二バーチャルマシンの第二プライベートメモリ領域内へ格納し、且つ（ｃ）前記第二プライベートメモリ領域から前記共用可能なメモリ領域内へコピーしたデータである、ステップと、
前記第一バーチャルマシンと、第二データを包含する前記共用可能なメモリ領域の特定の区域と、の間のマッピングを確立するステップであり、前記第二
データは、前記第二バーチャルマシンが（ａ）前記プログラムモジュールからロードし、（ｂ）前記共用可能なメモリ領域の前記特定の区域内へ格納したデータである、ステップと、
を実行させ、
前記マッピングは、前記第一バーチャルマシンの如何なるプライベートメモリ領域内にも前記第二データのコピーを作成することなく、前記第一バーチャルマシンが前記第二データを読取ることを可能にし、且つ
前記第一プライベートメモリ領域及び前記第二プライベートメモリ領域の双方が同一の仮想アドレスで開始する、
コンピュータプログラム。
【請求項２０】
プログラムモジュールと、
第一バーチャルマシンであり、（ａ）前記プログラムモジュールから当該第一バーチャルマシンの第一プライベートメモリ領域内へ第一データをロードし、（ｂ）前記プログラムモジュールから共用可能なメモリ領域内へ第二データをロードし、（ｃ）前記第一データの処理したバージョンを前記第一プライベートメモリ領域から前記共用可能なメモリ領域内へコピーする第一バーチャルマシンと、
第二バーチャルマシンであり、（ａ）前記共用可能なメモリ領域内の前記第二データに対してマッピングし、（ｂ）前記第一データの前記処理したバージョンを前記共用可能なメモリ領域から当該第二バーチャルマシンの第二プライベートメモリ領域内へロードする第二バーチャルマシンと、
を有し、
前記第一バーチャルマシンは前記第二バーチャルマシンから孤立している、
システム。
【請求項２１】
前記第一プライベートメモリ領域が特定の仮想アドレスにおいて開始し、
前記第二プライベートメモリ領域も前記特定の仮想アドレスにおいて開始し、
前記第一及び第二プライベートメモリ領域が異なる物理的アドレスにおいて開始する、
請求項２０に記載のシステム。
【請求項２２】
前記共用可能なメモリ領域内の前記第二データは、前記特定の仮想アドレスにおいて開始する仮想アドレス領域内の仮想アドレスに対する１つ以上の参照を包含している、請求項２１に記載のシステム。
【請求項２３】
第三バーチャルマシンであり、（ａ）前記共用可能なメモリ領域内の前記第二データに対してマッピングし、（ｂ）前記第一データの前記処理したバージョンを前記共用可能なメモリ領域から当該第三バーチャルマシンの第三プライベートメモリ領域内へロードする第三バーチャルマシン、を更に有し、
前記第三バーチャルマシンは前記第一及び第二バーチャルマシンから孤立している、
請求項２１に記載のシステム。