Standalone Dart VMのソース構成

闇鍋プログラミング勉強会Dartの処理系のひとつであるfrogcについて発表します。

さて、Dart SDKにはもうひとつdart(1)というコマンドが付属していますが、こちらについては上記の勉強会では触れないのでここにメモしておきます。

ますソースコードは以下から入手。Standalone VMのほうです。

このDartVMはC++で書かれたJITコンパイラ付き仮想マシンです。

ファイル構成はざっと以下のとおり。

  • runtime/vm/* - パーサー、コンパイラ、コードジェネレータ、GCなど基本要素
  • runtime/lib/* - boolやStringなど組み込みクラス
  • runtime/bin/* - FileやIOなどのシステムコールを要求する標準ライブラリ
  • corelib/* - MapやIterableなどの標準ライブラリ
  • lib/ - JSONUTF-8/16/32などの標準ライブラリ
  • tests/* テスト

まだ追いきれてませんが、V8のようにすべてJITコンパイルして実行するようです。gc_marker.ccとgc_sweeper.ccというファイルがあるので、mark & sweep GCなのでしょう。

C++部分はV8を思わせる黒魔術コードですが、V8からの流用ではないよう。かなり本格的な処理系となっています。