【事件の表示】
　特願２００７−　４７９８９「高速パッチベースメソッドコール」拒絶査定不服審判事件〔平成１９年　９月１３日出願公開，特開２００７−２３４０２２〕について，次のとおり審決する。
【結　論】
　本件審判の請求は，成り立たない。
【理　由】
第１．手続の経緯
　本願は，平成１９年２月２７日（パリ条約による優先権主張２００６年２月２８日　アメリカ合衆国）の出願であって，
　平成２２年２月２６日付けで審査請求がなされ，平成２４年７月６日付けで審査官により拒絶理由が通知され，これに対して平成２４年１０月１０日付けで意見書が提出されると共に手続補正がなされたが，平成２５年４月３０日付けで審査官により拒絶査定がなされ，これに対して平成２５年９月９日付けで審判請求がなされたものである。
　
第２．本願発明について
　本願の請求項１に係る発明は，平成２４年１０月１０日付けの手続補正により補正された特許請求の範囲の請求項１に記載された，次のとおりのものである。
　
「マシンにより実現される方法において，
　複数のコールを行うメソッドに対するコードを格納部内に格納するステップであって，該複数のコールを行うメソッドの各々に対する該コードは，命令において特定されるパラメータに基づき，実行をターゲットメソッドに直接ブランチさせる該命令を有する，ステップと；
　該ターゲットメソッドの状態変化の前に，該ターゲットメソッドと，該実行を該ターゲットメソッドに直接ブランチさせる該複数のコールを行うメソッドの各々の該命令との間の関連性を記録するステップと；
　該ターゲットメソッドの現在の状態から新たな状態への状態変化に応答して，該状態変化に応答してパッチされる特定の命令として該複数のコールを行うメソッドの各々の該命令を識別するために，該関連性を使用するステップであって，該現在の状態は，アンコンパイルされた状態であり，且つ該新たな状態は，該ターゲットメソッドが実行可能なコードにコンパイルされている，コンパイルされた状態である，ステップと；
　該新たな状態におけるターゲットメソッドに直接ブランチすることを容易にするために更新されたアドレスを示すように，該複数のコールを行うメソッドの各々のパラメータをパッチするステップと；
　該パラメータの値を使用して，該複数のコールを行うメソッドの少なくとも１つの命令を実行するステップと；
を有することを特徴とする方法。」
　
第３．引用刊行物に記載の発明
　原審における平成２４年７月６日付けの拒絶理由（以下，これを「原審拒絶理由」という）に引用された，本願の第１国出願前に既に公知である，特表２００３−５２６１３５号公報（２００３年９月２日公表，以下，これを「引用刊行物」という）には，関連する図面と共に，次の事項が記載されている。
　
Ａ．「   【０１６３】
　本発明は望ましくは，問題となるオブジェクトのクラスが仮想マシンにより動的にロードおよび（または）発見されるオブジェクト指向（ＯＯ）プログラムを実行する仮想マシン（ＶＭ）に関する。
・・・・・・・（中略）・・・・・・
　本発明は，方法の継承（ｉｎｈｅｒｉｔａｎｃｅ）に関し，
「方法」は，既に述べたように，例えば円の「面積」のようなファンクション，および「再生」，「点灯」などのような他の任意のファンクションに対するジャバその他のプログラミング言語における用語である
  ファイナルでないインスタンス「方法」の直接的な呼出しを許容するクラス・ローダの使用に関する本願の部分において，
「方法」（大文字「Ｍ」を付す）は，プログラミング言語の方法に関して用いられ
  ・・・・（以下，省略）」（下線は，当審にて説明の都合上附加したものである。以下，同じ。）
　
Ｂ．「  【０１７５】
　
グルー・コードは，インタプリタに対し，部分４０３４に対応するコードのコンパイルされないバージョンの実行を開始するよう通知する
  ・・・・（以下，省略）」
　
Ｃ．「   【０２０１】
　自己修正環境は，コンパイル・コードのセクションが実行中に動的に作成され削除される環境である。このような環境は，エージェント資料第１に記載されている。多重スレッド環境は，幾つかのプロセスすなわちスレッドが同じ作業スペースにおいて非同期的に動作する環境である。
　自己修正環境においては，コードの２つの部分間に実行の移転を可能にするため，コンパイル・コードの第１のセクションと作業スペースのどこか他の場所に置かれるコンパイル・コードの第２のセクション間にリンクが作られねばならない状況があり得る。コードの１つの部分から他の部分へ実行を移転するプロセスは，一般に，レジスタ値と共にスタックにおけるコードの第１の部分のアドレスを置き，コードの第２の部分の場所を識別するコードの中間部分へ実行を移転し，次いでコードの第２の部分へ実行を移転する多くのステップを呼出す。このように実行を移転することの問題は，比較的多くの時間が移転の実施に費やされることである。
　本発明の第１の特質において，自己修正多重スレッド型コンピュータ・システムにおいて
コンパイル・コードの２つの部分間にリンクを設ける方法であって，コンパイル・コードの１つの部分から他の部分へパッチを挿入することを含む方法が提供される
　
コンパイル・コードの１つの部分から他の部分へパッチを提供することにより，パッチが作らなかった場合より迅速に実行が移転することができる
　
パッチを挿入するステップは，コンパイル・コード内の制御移転命令を変更することを含む。制御移転命令は，ジャンプ命令または呼出し命令のような，実行を別のアドレスへ移転させる任意の命令でよい。この制御移転命令は，パッチが行われるコードの部分のアドレスを指示するように変更することができる
　制御移転命令の変更ステップは，アトミックに行われる。アトミックにとは，他のスレッドが部分的に変更される形態において変更される領域を見ることができないことを意味することが望ましい。これは，パッチを挿入するステップが１つの書込み動作として行われることを保証することにより，単一プロセッサ・システムにおいて達成される。あるいはまた，一部のプロセッサは，アトミック性を保証するよう定義される１つ以上の特殊な命令あるいは一連の特殊な命令を提供し，このような命令は単一プロセッサ・システムおよび多プロセッサ・システムにおけるアトミック性を保証するため用いられる。このように，作業スペースに影響を及ぼすかも知れない他の任意の動作が行われる前にパッチの操作が完了することを保証することができる。
　本発明の第１の特質は，自己修正多重スレッド型コンピュータ・システムにおいてコンパイル・コードの２つの部分間にリンクを設ける装置であって，コンパイル・コードの１つの部分から他の部分へパッチを挿入する手段を含む装置をも提供する。
     【０２０２】
　
本発明の第１の特質は，実行の２つのあり得るパスを含むコードをコンパイルする方法であって，実行パスの１つに対応するコードをコンパイルすることを含み，コンパイルされたコードにおいてコードの別の部分のアドレスを指示するようにアトミックに変更することができる制御移転命令を含む方法をも提供する
　このように，特に他のパスを実行することを可能にするため，コンパイル・コードは，コードがコンパイルされた後に，コードの別の部分に対するパッチを行うことができるように構成することができる。
　制御移転命令は，この制御移転命令の最も最適な形態が用いられた場合よりもそれ自体のアドレスとは更に別のアドレスを指示できるタイプであることが望ましい。このような特徴は，パッチが他の場合よりも離れたコードの部分にさせ得る。
　当該方法は，制御の転送命令を含むコードの外部のセクションを形成することを含む。
　本発明の第１の特質はまた，コンパイル・コードの上記方法のいずれかを実施するためのコンパイラを提供する。
・・・・（以下，省略）」
　
Ｄ．「   【０２０５】
　次に第１の事例について，図１２Ａおよび図１２Ｂに関して記述する。この事例は，非ネイティブ・コードが呼出し命令を含む場合に関する。
　
図１２Ａにおいて，第１のコード部分２３００２は，アドレスａａａに呼出し命令２３００３を有する。元の非ネイティブ・コードでは，この呼出し命令はサブルーチン「バー」を呼出した。コンパイルの間，このサブルーチン「バー」は，（例えば，バーのどのバージョンが使用されるかが確かでなかったゆえに）コンパイルされなかったが，その代わり，バーが呼出される状況を処理するため外部コード２３００４の部分が作成された。呼出し命令２３００３は，外部コードにおけるアドレスａｂｄを指す。このアドレスでは，実行をグルー・コードの部分へ移す呼出し命令２３００５が存在する
　次に図１２Ｂにおいて，ある後の時点に，
サブルーチン・バーがコンパイルされる。バーのコンパイル・バージョンは，当例ではアドレスｘｙｚにコンパイル・コード２３００６として格納される。次に，パッチ２３００８は，直接にあるいは外れたコード２３００４を介して，コード断片２３００２からコンパイル・コード２３００６に対して行われる
　図１２Ｂは，パッチが直接行われる場合を示している。この場合，呼出し命令２３００３が，直接アドレスｘｙｚを指すように変更される。これは，呼出し命令２３００３がアドレスｘｙｚにアトミックにパッチ可能である形態でコンパイルされたならば可能である
　図１２Ｃは，アウトライア２３００４を介してパッチが行われる場合を示している。この場合，アウトライアにおけるアドレスａｂｃのジャンプ命令２３００７がアドレスｘｙｚへジャンプするようにセットされ，呼出し命令２３００３はアドレスａｂｃを指すように変更される。あるいはまた，呼出し命令２３００３はアドレスａｂｃを恒久的に指すことができ，この場合は，ジャンプ命令２３００７が（グルー・コードを呼出すため）最初アドレスａｂｄを指し，次に（パッチを行うため）アドレスｘｙｚを指すように変更される。
　いずれ場合も，アドレスｘｙｚを指すように変更される命令は，比較的離れたアドレスへの転送を許す長い形態である。このため，コードをコンパイルするとき，そのためのアローアンスがなされなければならない。例えば，呼出し命令２３００３は，この命令がアドレスａｂｄを指すだけの場合に必要なよりも長いバージョンになるようにすることができ，命令を将来における更に離れたアドレスを指すように変更させる。命令がこれが指すアドレスをアトミックに変更させ得るタイプであることもまた保証されねばならない。」
　
Ｅ．「  【０２０７】
　コード・バッファの削除時に，バッファに出入りするパッチがあるかどうか知るために，コード・バッファが調べられる。コード・バッファに入るパッチは，例えば，パッチをグルー・コードまたはアウトライア・コードの部分へ送り直すことによって，バッファを削除することなく実行を継続させるように指向し直される。バッファから出されるパッチに関するデータ構造は，オーバーヘッドを再利用するために除去される。
　
先に述べたように，パッチが行われるとき，パッチに関する情報はパッチ・ブロックに格納される。各パッチ・ブロックは，これが関連するパッチの「から」アドレスおよび「へ」アドレスを与える
　削除されるべきバッファへいくパッチを見出すために，ハッシュは（ハッシュ・テーブルと同じ数学ファンクションを用いて），パッチがパッチ「へ」に関するパッチ・ブロックを含むチェーンを見出すために転送を生じるバッファのアドレスから作られる。チェーンにおけるパッチ・ブロックは，削除されるバッファに対するハッシュと関連するかどうかを知るために調べられる。このようなパッチ・ブロックが見出されると，これが関連するパッチが，例えばグルー・コードまたはアウトライア・コードの部分へ送り直され，パッチ・ブロック自体はチェーンから除去される。グルー・コードは，例えば，以降の命令の解釈により，あるいはコンパイル・コードの別の部分へジャンプすることによって，ある一般的な検査を行い，実行のフローの継続を生じるように意図される。グルー・コードの動作の更なる論議については，エージェント資料第１に見出すことができる。
　削除されるバッファからのパッチが存在するかどうかも決定することができる。これは，先に述べた第１のチェーンを用いて削除されるバッファに格納されたパッチ・ブロックのチェーンを調べることによって行うことができる。このチェーンにおけるパッチ・ブロックが調べられ，まだ削除されていないパッチが存在するならば，このパッチが削除される。このように，パッチと関連するオーバーヘッドを再利用することができる。」
　
Ｆ．「  【０２１０】
　図１２Ｇに示された仮想マシンが一般にソフトウエアの形態でありホスト・コンピュータ２３０４４のメモリに格納されることが理解されよう。
 ・・・・・・・（中略）・・・・・・
　すなわち，
本発明は，コンピュータ・システムを動作させる方法において具現され，コンピュータ・システム自体において具現され，コンピュータ・システムを動作させる方法を実行するようプログラムされあるいは実行するためのコンピュータ・システムにおいて具現され，および（または）コンピュータ・システムを動作させる方法に従って動作するためのプログラムが記録されたコンピュータ読取り可能な記憶媒体において具現されよう
      【０２１１】
　
本文に用いられるように，用語「コンピュータ・システム」は，「コンピュータ」，「システム」，「装備」，「装置」，「マシン」などの用語と互換であり得る
  ・・・・・・・（中略）・・・・・・
　
先に使用された用語のあるものは，ジャバ言語およびジャバ・タイプの言語に特有のものである
他の言語の使用において適用可能である
・・・・（以下，省略）」
　
１．上記Ｃの「本発明の第１の特質は，実行の２つのあり得るパスを含むコードをコンパイルする方法であって，実行パスの１つに対応するコードをコンパイルすることを含み，コンパイルされたコードにおいてコードの別の部分のアドレスを指示するようにアトミックに変更することができる制御移転命令を含む方法をも提供する」という記載から，
　引用刊行物においては，
“コンパイルされたコードが，コードの別の部分のアドレスを指示する制御移転命令を含む”ものであることが読み取れ，
　同じく上記Ｃの「パッチを挿入するステップは，コンパイル・コード内の制御移転命令を変更することを含む。制御移転命令は，ジャンプ命令または呼出し命令のような，実行を別のアドレスへ移転させる任意の命令でよい。この制御移転命令は，パッチが行われるコードの部分のアドレスを指示するように変更することができる」という記載から，上記「制御移転命令」は，“ジャンプ命令または呼出し命令のような，実行を別のアドレスへ移転させる任意の命令”であることが読み取れるので，上記で引用したＣ内の２箇所の記載内容から，引用刊行物においては，
“コンパイルされたコードが，コードの別の部分のアドレスを指示する，実行を別のアドレスへ移転させる呼出し命令を含む”ものであることが読み取れる。
　
２．上記Ｄの「図１２Ａにおいて，第１のコード部分２３００２は，アドレスａａａに呼出し命令２３００３を有する」という記載，及び，同じく上記Ｄの「これは，呼出し命令２３００３がアドレスｘｙｚにアトミックにパッチ可能である形態でコンパイルされたならば可能である」という記載から，引用刊行物においては，
“パッチを実現するために，コンパイル時の呼出し命令の位置を特定するための情報が保持されている”ことは明らかである。
　
３．上記Ｄの「第１のコード部分２３００２は，アドレスａａａに呼出し命令２３００３を有する。元の非ネイティブ・コードでは，この呼出し命令はサブルーチン「バー」を呼出した。コンパイルの間，このサブルーチン「バー」は，（例えば，バーのどのバージョンが使用されるかが確かでなかったゆえに）コンパイルされなかったが，その代わり，バーが呼出される状況を処理するため外部コード２３００４の部分が作成された。呼出し命令２３００３は，外部コードにおけるアドレスａｂｄを指す。このアドレスでは，実行をグルー・コードの部分へ移す呼出し命令２３００５が存在する」という記載，及び，同じく，上記Ｄの「サブルーチン・バーがコンパイルされる。バーのコンパイル・バージョンは，当例ではアドレスｘｙｚにコンパイル・コード２３００６として格納される。次に，パッチ２３００８は，直接にあるいは外れたコード２３００４を介して，コード断片２３００２からコンパイル・コード２３００６に対して行われる。
　図１２Ｂは，パッチが直接行われる場合を示している。この場合，呼出し命令２３００３が，直接アドレスｘｙｚを指すように変更される。これは，呼出し命令２３００３がアドレスｘｙｚにアトミックにパッチ可能である形態でコンパイルされたならば可能である」という記載，並びに，上記Ｅの「パッチが行われるとき，パッチに関する情報はパッチ・ブロックに格納される。各パッチ・ブロックは，これが関連するパッチの「から」アドレスおよび「へ」アドレスを与える」という記載から，引用刊行物においては，
“コンパイルされていないサブルーチン・バーが，コンパイルされると，コンパイルされたサブルーチン・バーが，アドレスｘｙｚに格納され，呼出し命令が，直接アドレスｘｙｚを指すように変更される”こと，及び，当該“変更”が，“パッチ”を用いて行われることが読み取れる。
　そして，上記「サブルーチン・バー」とは，「コード」に他ならず，また，上記「アドレスｘｙｚ」は，“格納されたサブルーチン・バーの先頭アドレス”であることは明らかであるから，結局，上記引用のＤの記載内容から，引用刊行物においては，
“コンパイルされていないコードが，コンパイルされると，コンパイルされたコードが，所定のアドレスを先頭アドレスとして格納され，呼出し命令が，直接，前記先頭アドレスを指すように，パッチを用いて変更される”ことが読み取れる。
　
４．加えて，上記１．において検討した事項における“コードの別の部分のアドレス”とは，上記３．において検討した“コンパイルされていないサブルーチンの位置を指し示すアドレス”を含むことは明らかであり，更に，上記３．において検討した事項から引用刊行物において，
“呼出し命令が，前記先頭アドレスを指すと，前記先頭アドレスから格納されている，前記コンパイルされたコードが実行される”ことは明らかである。
　
５．そして，上記Ｆの「本発明は，コンピュータ・システムを動作させる方法において具現され，コンピュータ・システム自体において具現され，コンピュータ・システムを動作させる方法を実行するようプログラムされあるいは実行するためのコンピュータ・システムにおいて具現され，および（または）コンピュータ・システムを動作させる方法に従って動作するためのプログラムが記録されたコンピュータ読取り可能な記憶媒体において具現されよう」という記載から，上記４．において検討した“コードの実行”は，「コンピュータ・システム」において行われるものであることが読み取れ，同じく上記Ｆの「本文に用いられるように，用語「コンピュータ・システム」は，「コンピュータ」，「システム」，「装備」，「装置」，「マシン」などの用語と互換であり得る」という記載から，引用刊行物において，「コンピュータシステム」は，「マシン」と互換であることから，
　上記１．〜４．において検討した事項，及び，上記Ｆの記載内容から，上記１．〜４．において検討した事項は，何れも，「マシン上において実行される」ものであることは明らかである。
　
　以上，１．〜５．において検討した事項から，引用刊行物には，次の発明（以下，これを「引用発明」という）が記載されているものと認める。
　
　コンパイルされたコードが，コードの別の部分のアドレスを指示する，実行を別のアドレスへ移転させる呼出し命令を含み，
　「パッチ」を実現するために，コンパイル時の呼出し命令の位置を特定するための情報が保持され，
　コンパイルされていないコードの別の部分が，コンパイルされると，コンパイルされたコードの別の部分が，所定のアドレスを先頭アドレスとして格納され，呼出し命令が，直接，前記先頭アドレスを指すように，パッチを用いて変更され，
　呼出し命令が，前記先頭アドレスを指すと，前記先頭アドレスから格納されている，前記コンパイルされたコードが実行される，
　マシン上において実行される方法。
　
第４．本願発明と引用発明との対比
１．引用発明において，「マシン上において実行される方法」における「実行」は，「実現」と同義に用いられていることは明らかであるから，
　引用発明における「マシン上において実行される方法」は，
　本願発明における「マシン上において実現される方法」に相当する。
　
２．引用発明における「コード」に関して，引用刊行物においては，上記Ａに引用したとおり，段落【０１６３】に，「「方法」は，既に述べたように，例えば円の「面積」のようなファンクション，および「再生」，「点灯」などのような他の任意のファンクションに対するジャバその他のプログラミング言語における用語である」，及び，「「方法」（大文字「Ｍ」を付す）は，プログラミング言語の方法に関して用いられ」と記載されていて，上記引用記載中の「「方法」（大文字「Ｍ」を付す）」は，引用刊行物の英語原文に相当する国際公開第００／０２９９３７号（２０００年５月２５日公開）に，上記Ａに引用した日本語文の原文として，
　
Ｇ．「The invention is concerned with Method inheritance, “Method” being a term in Java and other programming languages for functions such as, say, “area” of a circle and any of the other functions such as “play”, “turn on lights” and so on, as already discussed above. 」（１０２頁１２行〜１４行）
　
Ｈ．「 the term“Method”(with capital “M”) will be used to relate to Methods of the programming language 」（１０２頁１６行〜１７行）
　
　と記載されていて，上記引用の英語原文の記載内容からみて，引用刊行物に記載の「「方法」（大文字「Ｍ」を付す）」における「方法」は，オブジェクト指向プログラミング等で用いられる用語である「メソッド」と同一のものであることは明らかである。
　したがって，引用発明においても，「メソッド」に関して言及されており，引用発明における「コード」は，「メソッド」を含むものである，即ち，前記「コード」が，「メソッド」を表現したものを含むことも，当該技術分野にあっては周知の技術事項であるから，
　引用発明における「コンパイルされたコードが，コードの別の部分のアドレスを指示する，実行を別のアドレスへ移転させる任意の命令である呼出し命令を含み」は，
「コンパイルされたメソッドを表現するコードが，コードの別の部分のアドレスを指示する，実行を別のアドレスへ移転させる任意の命令である呼出し命令を含」むものであると言え，
　さらに，引用発明において，「コンパイルされたメソッドを表現するコード」の例として，引用刊行物には，上記Ｄに引用した記載内容のとおり，「非ネイティブ・コード」が示されており，該「非ネイティブ・コード」は，同じく上記Ｄに引用した記載から，「サブルーチン・バー」を呼び出していて，該「サブルーチン・バー」が，引用発明における「コードの別の部分」に相当するものであるから，
　引用発明における「コンパイルされたコードが，コードの別の部分のアドレスを指示する，実行を別のアドレスへ移転させる呼出し命令を含」むとは，
“コンパイルされたメソッドを表現するコードが，他のメソッドを表現するコードの部分のアドレスを指示する，実行を別のアドレスへ移転させる呼出し命令を含む”という構成を含むものである。
　そして，本願発明における「パラメータ」とは，本願発明の「直接ブランチすることを容易にするために更新されたアドレスを示すように，該複数のコールを行うメソッドの各々のパラメータをパッチする」という構成から，「アドレス」を意味することは明らかであるから，上記において検討した事項から，
　引用発明における「コンパイルされたコード」，「コードの別の部分」，「アドレス」が，
　本願発明における「コールを行うメソッドに対するコード」，「命令において特定されるパラメータ」，「ターゲットメソッド」に，それぞれ相当し，
　引用発明において，「呼出し命令」は，「実行」を，「コードの別の部分」に，「アドレス」によって分岐されるものに他ならないので，
　引用発明における「呼出し命令」が，
　本願発明における「実行をターゲットメソッドに直接ブランチさせる該命令」に相当する。
　そして，引用発明においても，コンパイルされたコードは，マシン内のメモリ等，記憶手段に格納されることは明らかであるから，
　したがって，引用発明における「コンパイルされたメソッドを表現するコードが，コードの別の部分のアドレスを指示する，実行を別のアドレスへ移転させる任意の命令である呼出し命令を含み」と，
　本願発明における「複数のコールを行うメソッドに対するコードを格納部内に格納するステップであって，該複数のコールを行うメソッドの各々に対する該コードは，命令において特定されるパラメータに基づき，実行をターゲットメソッドに直接ブランチさせる該命令を有する，ステップ」とは，
“コールを行うメソッドに対するコードを格納部内に格納するステップであって，該コールを行うメソッドに対するコードは，命令において特定されるパラメータに基づき，実行をターゲットメソッドにブランチさせる該命令を有する，ステップ”
　である点で共通する。
　
３．引用発明においても，“パッチを実現するために，コンパイル時の呼出し命令の位置を特定するための情報が保持され”該情報には，上記Ｄにおいて引用した記載内容にあるとおり，呼び出される，“呼出し先のアドレス”が含まれており，引用発明における「コンパイル」は，上記Ｄに引用した記載内容にあるとおり，「サブルーチン・バーがコンパイルされる」前に行われているのであるから，引用発明における「情報」は，「サブルーチン・バー」が，“コンパイルされていない状態から，コンパイルされた状態に，状態変化する前に，保持されるものである”ことは明らかであって，
　引用発明における「コンパイル時の呼出し命令の位置を特定するための情報」が，
　本願発明における「関連性」に相当するものであるから，
　引用発明における「パッチを実現するために，コンパイル時の呼出し命令の位置を特定するための情報が保持され」ることと，
　本願発明における「該ターゲットメソッドの状態変化の前に，該ターゲットメソッドと，該実行を該ターゲットメソッドに直接ブランチさせる該複数のコールを行うメソッドの各々の該命令との間の関連性を記録するステップ」とは，
“ターゲットメソッドの状態変化の前に，該ターゲットメソッドと，実行を該ターゲットメソッドにブランチさせるコールを行うメソッドの命令との間の関連性を保存するステップ”である点で共通する。
　
４．引用発明において，「コンパイルされていないコードが，コンパイルされると」，
　上記３．において検討した上記Ｄの記載内容にあるとおり，引用発明において，「コードの別の部分」は，“コンパイルされていない状態”から，“コンパイルされた状態”へと，状態が変化し，このとき，「パッチ」を可能とするために，「コンパイルされたコード」の「呼出し命令」の“位置情報”，即ち，「関連性」が必要になることは明らかであるから，引用発明において上記において検討したことと，
　本願発明における「該ターゲットメソッドの現在の状態から新たな状態への状態変化に応答して，該状態変化に応答してパッチされる特定の命令として該複数のコールを行うメソッドの各々の該命令を識別するために，該関連性を使用するステップであって，該現在の状態は，アンコンパイルされた状態であり，且つ該新たな状態は，該ターゲットメソッドが実行可能なコードにコンパイルされている，コンパイルされた状態である，ステップ」とは，
“該ターゲットメソッドの現在の状態から新たな状態への状態変化に応答して，該状態変化に応答してパッチされる特定の命令として該コールを行うメソッドの該命令を識別するために，該関連性を使用するステップであって，該現在の状態は，アンコンパイルされた状態であり，且つ該新たな状態は，該ターゲットメソッドが実行可能なコードにコンパイルされている，コンパイルされた状態である，ステップ”である点で共通する。
　
５．上記１．において検討したとおり，引用発明における「アドレス」は，本願発明における「パラメータ」に相当するものであり，
　引用発明において，「コンパイルされたコードの別の部分が，所定のアドレスを先頭アドレスとして格納され，呼出し命令が，直接，前記先頭アドレスを指すように，パッチを用いて変更され」るとは，
“「コンパイルされたコード」の「呼出し命令」が指し示していた“呼出し先アドレス”を，上記「先頭アドレス」によって置き換えるという，「パッチ」処理”
　を表すものであるから，
　引用発明における「コンパイルされたコードの別の部分が，所定のアドレスを先頭アドレスとして格納され，呼出し命令が，直接，前記先頭アドレスを指すように，パッチを用いて変更され」ることは，
　本願発明における「該新たな状態におけるターゲットメソッドに直接ブランチすることを容易にするために更新されたアドレスを示すように，該複数のコールを行うメソッドの各々のパラメータをパッチするステップ」に相当する。
　
６．そして，引用発明における「呼出し命令が，前記先頭アドレスを指すと，前記先頭アドレスから格納されている，前記コンパイルされたコードが実行される」ことと，
　本願発明における「該パラメータの値を使用して，該複数のコールを行うメソッドの少なくとも１つの命令を実行するステップ」とは，
“パラメータの値を使用して，コールを行うメソッドの命令を実行するステップ”である点で共通する。
　
　以上，１．〜６．において検討した事項から，本願発明と，引用発明との一致点，及び，相違点は，次のとおりである。
　
［一致点］
　マシン上において実現される方法において，
　コールを行うメソッドに対するコードを格納部内に格納するステップであって，該コールを行うメソッドに対するコードは，命令において特定されるパラメータに基づき，実行をターゲットメソッドにブランチさせる該命令を有する，ステップと，
　該ターゲットメソッドの状態変化の前に，該ターゲットメソッドと，該実行を該ターゲットメソッドにブランチさせるコールを行うメソッドの該命令との間の関連性を保存するステップと，
　該ターゲットメソッドの現在の状態から新たな状態への状態変化に応答して，該状態変化に応答してパッチされる特定の命令として該コールを行うメソッドの該命令を識別するために，該関連性を使用するステップであって，該現在の状態は，アンコンパイルされた状態であり，且つ該新たな状態は，該ターゲットメソッドが実行可能なコードにコンパイルされている，コンパイルされた状態である，ステップと，
　該新たな状態におけるターゲットメソッドに直接ブランチすることを容易にするために更新されたアドレスを示すように，該複数のコールを行うメソッドの各々のパラメータをパッチするステップと，
　パラメータの値を使用して，コールを行うメソッドの命令を実行するステップと，
　を有する方法。
　
［相違点１］
　“コールを行うメソッドに対するコード”に関して，
　本願発明においては，「複数のコールを行うメソッドに対するコード」であるのに対して，
　引用発明においては，「コンパイルされたコード」が，“複数の呼出し”を行う点については，特に言及されていない点。
　
［相違点２］
“実行をターゲットメソッドにブランチさせる該命令”に関して，
　本願発明においては，「実行をターゲットメソッドに直接ブランチさせる該命令」であるのに対して，
　引用発明においては，「直接」と明言はしていない点。
　
［相違点３］
“コールを行うメソッドの該命令との間の関連性”に関して，
　本願発明においては，「複数のコールを行うメソッドの各々の該命令との間の関連性」であるのに対して，
　引用発明においては，「複数」である点については，特に言及されていない点。
　
［相違点４］
“該コールを行うメソッドの該命令を識別するために，該関連性を使用するステップ”に関して，
　本願発明においては，「複数のコールを行うメソッドの各々の該命令を識別するために，該関連性を使用するステップ」であるのに対して，
　引用発明においては，「コール」が複数ある点については，特に言及されていない点。
　
［相違点５］
“コールを行うメソッドの命令を実行する”に関して，
　本願発明においては，「該複数のコールを行うメソッドの少なくとも１つの命令を実行する」ものであるに対して，
　引用発明においては，“複数あるうちの，少なくとも１の命令を実行する”点については，特に言及されていない点。
　
第５．相違点についての当審の判断
１．［相違点１］，及び，［相違点３］〜［相違点５］について
　引用発明においても，「呼出し命令」を含む「コード」において，複数の「呼出し命令」を含むよう“プログラミング”することは，当業者が適宜なし得る事項に過ぎず，「呼出し命令」が複数存在する場合に，それに対応して，該「呼出し命令」に“関連する情報”を，該「呼出し命令」に対応して，複数保持するよう構成すること，及び，“複数あるうちの，少なくとも１の命令を実行する”よう構成することも，当業者が適宜なし得る事項である。
　よって，相違点１，及び，相違点３〜相違点５は，格別のものではない。
　
２．［相違点２］について
　引用発明の「呼出し命令」に関して，上記Ｄにおいて引用した記載内容に，
「 図１２Ａにおいて，第１のコード部分２３００２は，アドレスａａａに呼出し命令２３００３を有する。元の非ネイティブ・コードでは，この呼出し命令はサブルーチン「バー」を呼出した。コンパイルの間，このサブルーチン「バー」は，（例えば，バーのどのバージョンが使用されるかが確かでなかったゆえに）コンパイルされなかったが，その代わり，バーが呼出される状況を処理するため外部コード２３００４の部分が作成された。呼出し命令２３００３は，外部コードにおけるアドレスａｂｄを指す。このアドレスでは，実行をグルー・コードの部分へ移す呼出し命令２３００５が存在する」
　とあり，上記引用の記載内容における「非ネイティブ・コード」，「サブルーチン・バー」が，本願発明における「複数のコールを行うメソッド」，「ターゲットメソッド」に対応するので，上記引用記載に従えば，引用発明における「呼出し命令」は，“サブルーチン・バーがコンパイルされていないとき”は，“グルーコードを呼出し”ており，「サブルーチン・バー」を“直接呼び出していない”ように見える。
　しかしながら，これは，“サブルーチン・バーが，コンパイルされていないため，呼出し先アドレスが確定出来ず，そのため，直接呼出しが可能な，グルーコードを呼び出す命令を実行するよう変更している”に過ぎず，引用発明における「呼出し命令」も，設定されている「アドレス」が確定していれば，該「アドレス」に応じて，“直接サブルーチン・バー”を呼び出すものであるから，本願発明における「命令」と格別相違しない。
　また，本願発明の「命令」に関して，本願明細書の発明の詳細な説明には，例えば，段落【００２９】に，
　
Ｉ．「次に図２Ｂを参照すると，コードキャッシュ１０５はコールを行うメソッド２０２の実行可能なコード，及び省略記号２１１により示したようにその他の実行可能なコードを格納する。
ターゲットメソッド２０８はコンパイルされていない状態にあり且つコードキャッシュ１０５内に格納されていない。直接的ブランチアンドリンク命令２０４の命令パラメータ２０６が１組のコード２１０を参照する値を格納しており，該コードは，実行された場合に，実行をインタプリタへ遷移させ，次いで，該インタプリタはアンコンパイルされているターゲットメソッドを実行する
ｉｎｖｏｋｅＩｎｔｅｒｐｒｅｔｅｒコード２１０は，基礎となるＪＶＭの特定のインプリメンテーションに依存してコードキャッシュ１０５内に存在する場合があるか又は存在しない場合のあるヘルパーグルーコードであり，説明の便宜上，図２Ｂにおいては，このｉｎｖｏｋｅＩｎｔｅｒｐｒｅｔｅｒコードはコードキャッシュ１０５の外側に図示してある
　
　という記載が存在し，該記載内容に従えば，“コンパイルされていない状態では，実行をインタプリタに遷移させる”点が記載されていて，該“遷移させるコード”が，「グルーコード」であることが記載されていて，引用発明における，上記Ｄに引用した記載内容においては，該グルーコードは，「サブルーチン・バーの翻訳」を行っているが，引用刊行物には，上記Ｂにおいて引用したように“グルー・コードは，インタプリタに対し通知する”構成が示されているので，引用刊行物におけるこれらの記載内容を総合勘案すれば，仮に，本願発明における「命令」を，本願明細書の発明の詳細な説明に記載された構成のものとして解釈したとしても，該「命令」の構成は，引用発明から，当業者が容易に導き出せる構成である。
　よって，相違点２は，格別のものではない。
　
　上記で検討したごとく，相違点１〜相違点５はいずれも格別のものではなく，そして，本願発明の構成によってもたらされる効果も，当業者であれば容易に予測できる程度のものであって，格別なものとは認められない。
　
第６．むすび
　したがって，本願発明は，本願の特許出願前に日本国内又は外国において頒布された刊行物に記載された発明又は電気通信回線を通じて公衆に利用可能となった発明に基づいて当業者が容易に発明をすることができたものであるので，特許法第２９条第２項の規定により特許を受けることができない。
　
　よって，結論のとおり審決する。