タグ

rubyとruntimeに関するnfunatoのブックマーク (3)

  • YARVのバイトコードをRubyに変換する話 - Qiita

    RubyのVMとして知られているYARVのバイトコードをRubyに変換するプログラムを昔書いたことがあるのでその話を書きます。YARVについてはYARV Maniacsを見てもらうのが一番だと思います。 # なぜそんなものを? 昔、YARV2LLVMなるものを作っていました。YarvのバイトコードをLLVMに変換するというプログラムです。効率を上げるために型推論をやったりとかしているのですが、詳細は今回の話とは関係ないので詳しくは、Ruby会議で発表した資料でも見てください。 YARV2LLVMではRubyが実行時に提供しているメタプログラミングの機能をコンパイル時に提供するためにマクロ機能を実装しました。マクロはたとえば次のように定義します。 YARV2LLVM::define_macro :attr_reader do |arg| arg.each do |argele| name =

    YARVのバイトコードをRubyに変換する話 - Qiita
  • あなとみー おぶ mrubyのJIT (その13) - miura1729の日記

    お久しぶりです。ずいぶんと更新をさぼっていたのですが、ときどきバグるけどmrubyのJITは元気です。さて、この半年、mrubyのJITもいろいろいじっていたのですが、多くの変更が 力技 | 黒魔術 って感じでエレガントな記事を望む皆様にはふさわしくないような気もしました。そこで、コミットログをあさってみたら、型推論もどきでガードを消しちゃうよというネタがちょっとアカデミックで良いのではないかと思って書いてみます。 型を格納する構造体 mrubyのJITでは各RITE VMの命令ごとにいろんなコンパイルやネイティブコードの実行に使う情報を格納するmrbjit_code_infoという構造体を用意しています。*1この構造体はこんな感じの定義です。 typedef struct mrbjit_code_info { mrbjit_code_area code_base; mrb_code *p

    あなとみー おぶ mrubyのJIT (その13) - miura1729の日記
  • Ruby 2.1: Out-of-Band GC · computer talk by @tmm1

    29 Jan 2014 Ruby 2.1's GC is better than ever, but ruby still uses a stop-the-world GC implementation. This means collections triggered during request processing will add latency to your response time. One way to mitigate this is by running GC in-between requests, i.e. "Out-of-Band". OOBGC is a popular technique, first introduced by Unicorn and later integrated into Passenger. Traditionally, these

  • 1