changeset 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
files Paper/anatofuz.pdf Paper/anatofuz.tex
diffstat 2 files changed, 7 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
Binary file Paper/anatofuz.pdf has changed
--- 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インタプリタの一部改良とその手法を示した.