タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

rubyとJITに関するkyabのブックマーク (2)

  • msumimz's diary

    JITコンパイルの生成元を、ASTからYARVインストラクションへ変更した話です。 JITコンパイルを行う元となる情報として、プログラムをパースした結果の構文木(AST)と、それをさらにコード化したYARVインストラクションがあります。今まではASTに基づいてCFGを生成していました。 ASTを使うことには、以下の利点があります。 安定している。文法が変わらない限り、ASTが変わることはあまりありません。YARVインストラクションは最適化の対象なので、いつ変更されるかわかりません。 生成されるCFGを最適化しやすい。YARVインストラクションはMRIの実行エンジンで効率的に実行できるように設計されており、JITコンパイラにとって最適とは限りません。ASTを直接変換した方が効率的なCFGを生成しやすいといえます。 疎結合。ASTは文法の表現であるという意味でYARVインストラクションより抽象

    msumimz's diary
    kyab
    kyab 2014/07/16
  • ごあいさつ - msumimz's diary

    このブログは、RubyにJITコンパイラを実装する個人的なプロジェクトの情報を発信するブログです。ちなみにまだコードは1行も書いていません。 プロジェクトの目標は次の通りです。 家より高速に動作するRubyエンジンを実装する。 家との100%互換性を維持する。 具体的には、MRIにJITコンパイラを追加します。現在のMRIで使われているいわゆるyarv実行エンジンと共存し、アプリケーションのホットスポットだけJITコンパイルするイメージです。JITコンパイラ以外の部分はMRIにそのまま乗っかることで、外部ライブラリを含めた互換性を維持します。家と互換性がないと、いくら速くても限定的な用途にしか使われないのはpypyをみれば明らかで、互換性維持は至上命題です。 以前、個人的にスクラッチからRuby実装を書いたことがあり、JITコンパイラも実装していましたが、MRIよりも遅い性能しか出ま

    ごあいさつ - msumimz's diary
    kyab
    kyab 2014/07/03
  • 1