diff Paper/anatofuz.tex @ 32:43e0cf46d40b

add cbc_codesegs.cbc
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Fri, 09 Nov 2018 10:38:08 +0900
parents 5b5fb929c67f
children f01d5bc55dea
line wrap: on
line diff
--- a/Paper/anatofuz.tex	Fri Nov 09 10:19:09 2018 +0900
+++ b/Paper/anatofuz.tex	Fri Nov 09 10:38:08 2018 +0900
@@ -279,12 +279,13 @@
 
 \lstinputlisting[label=cbc_dispatch_c, caption=CbCMoarVMのバイトコードディスパッチ]{./src/cbc-interp-next.cbc}
 
+\lstinputlisting[label=cbc_codesegs_c, caption=CbCMoarVMのバイトコードディスパッチ]{./src/cbc_codesegs.cbc}
 
 \begin{figure}[ht]
      \begin{center}
      \includegraphics[width=70mm]{fig/cbc_next.pdf}
      \end{center}
-     \caption{CbCにおけるインタプリタの関数遷移}
+     \caption{CbCにおけるMoarVMバイトコードインタプリタ内の状態遷移}
     \label{fig:perl6cbcinter}
 \end{figure}
 
@@ -297,7 +298,7 @@
   \item cur\_opなど構造体INTERのメンバ変数はポインタiから参照するように修正する
   \item GC対策のためマクロMVMROOTを使い局所変数のポインタをスタックに積む箇所は,局所変数をstatic化する
   \item 末尾のgoto NEXTをgoto cbc\_next(i)に修正する
-  \item case文で下のcase文に落ちている箇所は,case文に対応するCodeSegmentに遷移する様に末尾を付け加える
+  \item case文で下のcase文に落ちている箇所は,case文に対応するCodeSegmentに遷移する様にgoto文を付け加える
 \end{itemize}
 
 
@@ -477,6 +478,8 @@
 従ってMoarVMのGCの最適化を行う.
 
 また高速化という面では,Perlの特徴である正規表現に着目し,正規表現の表現のみ高速で動く最適化の導入なども検討している.
+他にrakudoのコンパイラ系統からCbCのコードを直接生成させ,それをllvmでコンパイルすることによってLLVMの最適化フェーズを得て
+高速化することも可能であると推測できる.
 
 Perl6の開発は非常に活発に行われている為,CbCMoarVMの最新版の追従も課題となっている.
 現在はinterp.cからPerlスクリプトを用いて自動でCbCのCodeSegmentを生成している.