# HG changeset patch # User Takahiro SHIMIZU # Date 1541759487 -32400 # Node ID 619edd118aabd4c6bfbab6591574b67c8af503c5 # Parent 933dbfa8f06fdd14a8c4bbdbc508384a95ba2797 add about test diff -r 933dbfa8f06f -r 619edd118aab Paper/anatofuz.pdf Binary file Paper/anatofuz.pdf has changed diff -r 933dbfa8f06f -r 619edd118aab Paper/anatofuz.tex --- a/Paper/anatofuz.tex Fri Nov 09 19:24:53 2018 +0900 +++ b/Paper/anatofuz.tex Fri Nov 09 19:31:27 2018 +0900 @@ -382,7 +382,7 @@ \section{MoarVMのデバッグ} MoarVM自体のデバッグはMoarVMのリポジトリにテストコードが付随していない為単体では実行不可能である. -本研究ではMoarVMのデバッグにおけるCデバッガの使用方法とMoarVMのテスト方法についても考案する. +本研究ではMoarVMのデバッグにおけるCデバッガの使用方法とMoarVMのテスト方法についても示す.   \subsection{MoarVMのBytecodeのデバッグ} moarに対してMoarVM bytecodeをdumpオプションを付けて読み込ませるとMoarVMのbytecodeがアセンブラの様に出力される. @@ -413,8 +413,8 @@ オリジナル版では実際に実行する命令処理はラベルに変換されてしまう為名前をデバッガ上では出力できないが, CbCでは出力する事が可能である. CbCとオリジナルのCODES, LABELの添字は対応している為,ログの解析を行う際はそれぞれの添字を抽出し違いが発生している箇所を探索する. -これらはscriptコマンドが作成したログを元に異なる箇所を発見するスクリプトを用意し自動化する.(Code \ref{logs2.txt}) -\lstinputlisting[label=logs2.txt, caption=バイトコードの差分検知の一部分]{./src/logs2.txt} +これらはscriptコマンドが作成したログを元に異なる箇所を発見するスクリプトを用意し自動化する.(Code \ref{logs2}) +\lstinputlisting[label=logs2, caption=バイトコードの差分検知の一部分]{./src/logs2.txt} 違いが生じている箇所が発見できた場合, その前後のCodeGear及びディスパッチ部分にbreak pointをかけ,それぞれの変数の挙動を比較する. 主にcbc\_return系の命令が実行されている場合は, その直前で命令を切り替えるcbc\_invoke系統の命令が呼ばれているが,この周辺で何かしらの違いが発生している可能性が高い. @@ -423,8 +423,9 @@ \subsection{MoarVMのテスト方法} MoarVMは単体で実行する事が不可能である. -またNQPのリポジトリに付随するテストはnqpで書かれている為, MoarVMのテストはNQPリポジトリのファイルを直接使う場合は出来ない. -今回は正常に動くMoarVM, NQPを用意しnqpを経由してデバッグ +またNQPのリポジトリに付随するテストはnqpで書かれている為, NQPをビルド出来ない場合MoarVMのテストを行う事が出来ない. +その為, 正常に動作しているMoarVMとNQPを用意し, このNQP側からMoarVMByteCodeにNQPのテストを変換する. +変換されたMoarVMByteCodeはMoarバイナリに渡す事で実行可能であり, テストを行う事が出来る. \subsection{CbCコンパイラによるバグ} 現在までのCbCは複数個の入出力をCodeGearに与えるユースケースで利用していた.