Loading article…
コンピューティングにおいて、コピーアンドパッチコンパイルは、ジャストインタイムコンパイル(JITコンパイル)を目的としたシンプルなコンパイラ技術であり、パターンマッチングを使用して、事前に生成されたテンプレートを抽象構文木(AST)またはバイトコードストリームの一部に照合し、対応する事前に記述されたマシンコード断片を出力します。これらの断片は、メモリ アドレス、レジスタ アドレス、定数、およびその他のパラメータを挿入するようにパッチ処理され、実行可能コードが生成されます。テンプレートに一致しないコードは、通常の方法で解釈されるか、またはインタプリタコードを直接呼び出すように作成されます。
コピーアンドパッチは、より厳密な手法よりも桁違いに高速な「手っ取り早い」コンパイル手法である一方、多くの場合、それらの手法で生成された部分的に最適化されたコードのパフォーマンスに匹敵するコードを生成する。
コピーアンドパッチは、フレドリック・キョルスタッドとハオラン・シューによって2021年の論文で初めて記述されました。[ 1 ]
2023年現在Xuは、インタープリタのプリミティブの高レベル言語記述に基づいてテンプレートを自動的に生成するLuaの実装に取り組んでいた。 [ 2 ]
2024年現在Python 3.13 JIT コンパイラには、バイトコードベースのコピーアンドパッチ実装が使用されました。 [ 3 ] [ 4 ]
2025年に、 R 4.3.2 の修正版で、Rのコピーアンドパッチのバイトコードベースの実装が追加されました。 [ 5 ]