Mercurial > hg > Papers > 2019 > anatofuz-prosym
diff Paper/anatofuz.tex @ 80:dec42afa6aaa
update
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 30 Nov 2018 11:44:49 +0900 |
parents | 7aa749f9d936 |
children | 1b1089b0aef5 |
line wrap: on
line diff
--- a/Paper/anatofuz.tex Fri Nov 30 09:11:54 2018 +0900 +++ b/Paper/anatofuz.tex Fri Nov 30 11:44:49 2018 +0900 @@ -425,13 +425,6 @@ これはJavaのinterface, Haskellの型クラスに該当する概念であり, 次のCodeGearにInterface経由で継続する事が可能である. Interfaceは現在のCbCMoarVMの実装には用いていないが, 今後ThreadedCodeの実装を行うにあたり命令コードディスパッチ箇所に導入を検討している. -\subsection{他手法との比較} -本稿ではPerl6処理系の改良としてCbCを用い, 初期の実装を行った. -CbCを用い無い場合のMoarVMの改良方法としては, 命令コードに対応する処理をCの関数として記述し, この関数のポインタを利用する方法が考えられる. -関数ポインタの配列を作成し, 次の命令コードに対応する関数をポインタ経由で実行する. -Cの関数ポインタを利用した場合, CbCと同様に処理のモジュール化は可能である. -しかし, CbCとは違い軽量継続ではなく関数呼び出しで処理をする為, Cのスタックフレームが非常に巨大になる. -Cの関数呼び出しのコストから, 通常のcase文やラベルジャンプを利用した場合と速度差的に優位にならない. \section{MoarVMのデバッグ} @@ -605,6 +598,13 @@ 従ってThreadedCodeを実現するにあたり新たな処理系を開発する必要がなく, 既存の資源を利用してThreadedCodeが実現出来る. これを繰り返す事でperlccなどと比較してより高速化したThrededCodeが実現できる. +CbCを使わずにバイトコードディスパッチの箇所を改良する際に, 関数ポインタを利用する場合も考えられる. +この場合は, 関数ポインタの配列を作成し, 次の命令コードに対応する関数をポインタ経由で実行する. +Cの関数ポインタを利用した場合, CbCと同様に処理のモジュール化は可能である. +しかし, CbCとは違い軽量継続ではなく関数呼び出しで処理をする為, Cのスタックフレームが非常に巨大になる. +Cの関数呼び出しのコストから, 通常のcase文やラベルジャンプを利用した場合と速度差的に優位にならない. +また, ThreadedCodeの観点では, 命令列に対応した関数をThreadedCode用に大幅に修正する必要がある. +その為, CbCの様に関数そのものの並びでThreadedCodeに対応させることは出来ない. \section{まとめ} 本稿ではCbCによってPerl6の処理系であるMoarVMインタプリタの一部改良とその手法を示した.