Mercurial > hg > Papers > 2019 > anatofuz-prosym
comparison Paper/anatofuz.tex @ 42:1abd6fc0abe8
add detail environment
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 09 Nov 2018 14:21:50 +0900 |
parents | 2a21f7911f92 |
children | f4d4cbf62aea |
comparison
equal
deleted
inserted
replaced
41:de0f0fa18b71 | 42:1abd6fc0abe8 |
---|---|
230 現在のPerl6の仕様を読む場合Roastを確認し,現在rakudo上に実装されている機能を見る場合は公式ドキュメントを確認する必要がある. | 230 現在のPerl6の仕様を読む場合Roastを確認し,現在rakudo上に実装されている機能を見る場合は公式ドキュメントを確認する必要がある. |
231 | 231 |
232 | 232 |
233 \section{CbCによるMoarVM} | 233 \section{CbCによるMoarVM} |
234 この章では改良を行ったPerl6処理系であるMoarVMについて述べる. | 234 この章では改良を行ったPerl6処理系であるMoarVMについて述べる. |
235 今回改良を行ったMoarVMは2018.04.01,nqpは2018.04-3-g45ab6e3バージョンで行っている. | |
235 \subsection{方針} | 236 \subsection{方針} |
236 MoarVMそのものをCbCで書き換えることも考えられるがMoarVM自体既に巨大なプロジェクトである為すべてを書き換える事は困難である. | 237 MoarVMそのものをCbCで書き換えることも考えられるがMoarVM自体既に巨大なプロジェクトである為すべてを書き換える事は困難である. |
237 その為まず比較的CbCで書き換えることが容易な箇所を修正する. | 238 その為まず比較的CbCで書き換えることが容易な箇所を修正する. |
238 前章までに述べた通りCbCのCodeSegmentはコンパイラの基本ブロックに該当する. | 239 前章までに述べた通りCbCのCodeSegmentはコンパイラの基本ブロックに該当する. |
239 従ってMoarVMにおける基本ブロックの箇所をCodeSegmentに書き換える事が可能である. | 240 従ってMoarVMにおける基本ブロックの箇所をCodeSegmentに書き換える事が可能である. |
486 CbCのCodeSegment部分を用いることできめ細やかな記述が出来,デバッグし辛い箇所もbreakpointの設定などが容易になった. | 487 CbCのCodeSegment部分を用いることできめ細やかな記述が出来,デバッグし辛い箇所もbreakpointの設定などが容易になった. |
487 | 488 |
488 今後CbCでの開発をより深く行っていくにあたり,CbCコンパイラそのものの信頼性を向上させる必要がある. | 489 今後CbCでの開発をより深く行っていくにあたり,CbCコンパイラそのものの信頼性を向上させる必要がある. |
489 MoarVMの開発を行うにあたり新たに発見された複数のバグを修正し,より安定するコンパイラにする為に改良を行う. | 490 MoarVMの開発を行うにあたり新たに発見された複数のバグを修正し,より安定するコンパイラにする為に改良を行う. |
490 | 491 |
491 現在CbCMoarVMで直接バイトコードを入力した場合のnqpのテストは\%パスする. | 492 現在CbCMoarVMで直接バイトコードを入力した場合のnqpのテストはおおよそパスする. |
492 また数値の計算と出力などの簡単なNQPの例題を作成し,オリジナルのNQP,moarvmでバイトコード化したものを入力した際も正常に動作している. | 493 また数値の計算と出力などの簡単なNQPの例題を作成し,オリジナルのNQP,moarvmでバイトコード化したものを入力した際も正常に動作している. |
493 今後はさらに複雑な例題やPerl6の独自文法でも動くかどうかの実験を行う. | 494 しかしNQPのセルフビルドは現在オブジェクトの生成に一部失敗している為成功していない. |
495 今後はさらに複雑な例題やNQPのセルフビルド,Perl6の動作を行っていく. | |
494 | 496 |
495 MoarVMではGCからオブジェクトを守る為にMVMROOTというマクロを利用し,局所変数のポインタをスタックに登録する処理を行っている. | 497 MoarVMではGCからオブジェクトを守る為にMVMROOTというマクロを利用し,局所変数のポインタをスタックに登録する処理を行っている. |
496 GCの制御を効率的に行えば本来は必要ない処理であり,実行するとCodeSegmentの優位性が損なわれてしまう. | 498 GCの制御を効率的に行えば本来は必要ない処理であり,実行するとCodeSegmentの優位性が損なわれてしまう. |
497 従ってMoarVMのGCの最適化を行う. | 499 従ってMoarVMのGCの最適化を行う. |
498 | 500 |