Upgrade to Pro — share decks privately, control downloads, hide ads and more …

mrubyのJITのプレゼン

 mrubyのJITのプレゼン

TCFMミートアップでは話そうと思って作ったのだが、都合で参加できなくてお蔵入りになったスライド

Avatar for Miura Hideki

Miura Hideki

April 29, 2023
Tweet

Other Decks in Programming

Transcript

  1. mrubyのJITはtracing JITを採用しています。ざっくり言う と、命令実行のたびに対応するVMと同等の機械語命令を 命令領域に書きこんでいいき、次にその命令を実行する場 合はその機械語命令を実行するというものです。 OP_LOADSELF R1 OP_LOADI R2, 1

    OP_SEND R1, 1 PC move EAX, 1 move 8(EC X), EAX 命令を実行しつつ、同等の機械語命令を生成する /* A sBx R(A ) := sBx */ SET_INT_VALUE(regs[GETARG_A(i)], GET ARG_sBx(i)); NEXT; 生成コードバッファ mrubyのJITの概要 mrubyのJITはmrubyにJITコンパイラをいれたものです。 機械語生成にXbyakを使用させてもらっています
  2. >>> Test test <<< mrbtest - Embeddable Ruby Test ........................................................................................................................................................................

    ........................................................................................................................................................................ ........................................................................................................................................................................ ........................................................................................................................................................................ ...................................................?................................................................................................................... .........................................F................... Skip: Module#prepend super in alias super does not currently work in aliased methods Fail: multiple assignment (nosplat array rhs) (mrbgems: mruby-test) - Assertion[1] Failed: Expected "Expected to be equal" to be nil Expected: nil Actual: 0 Total: 899 OK: 898 KO: 1 Crash: 0 mrubyのJITはmrubyの5~10倍速い(こと がある)とかあるけど、一番の売りはこれ RubyのJITコンパイラなのに脅威の互換性