yarv-dev:443
From: Minero Aoki <aamine loveruby.net>
Date: Sun, 6 Mar 2005 12:52:15 +0900
Subject: [yarv-dev:443] Re: [ANN] YARV - Yet Another RubyVM 0.2.0
青木です。 In mail "[yarv-dev:437] Re: [ANN] YARV - Yet Another RubyVM 0.2.0" SASADA Koichi <ko1 atdot.net> wrote: > ささだです。 > > tunami:~/src/yarv-0.2.0 % gcc --version > > gcc (GCC) 3.4.3 > うーん、3.4 系は試していないのだけれど、なんか思い通りのア > センブル結果になっていないような・・・。なんでだろ。私も 3.4 > 系で試してみないと駄目かな。 -mcpu=ev6 あたりが変なことをしてるのやもしれません。 今度起動したときにでもいくつかフラグを試しときます。 # ちなみに以前「Alpha だと gcc は遅くて」とか言いましたが、 # その後の調べによると、少なくとも Ruby に関しては # ccc (COMPAQ cc) と gcc 3.4 は速度差がないことがわかってます。 > ちなみに、ia32 系(と x86-64系)では、program counter をレ > ジスタに割り付けています。その辺が結構効いているのではないかと > 思います> alpha であんまり速くなってない > > 他の VM の仮想レジスタ類も、マシンレジスタに割り付けてしまえば > きっともっと速くなると思います。でも、gcc のバグか何か知らないけ > ど、上書きしちゃいけないレジスタに上書きするようなコード吐いてく > れるので、安全側に倒して、現状では PC 一個だけを対象にしています。 > (x86-64 で、もうちょっとレジスタに置いてみたんだけどあんまり速 > くならんかったという経緯もあるんですが) > > alpha って何個レジスタ持ってるんですか? 物理的には 32 個ですが、当然ながら calling convention で いくらか制限がかかります。"Alpha Architecture Reference Manual" II-B DIGITAL UNIX Software によると、 * アキュミュレータ 1 * 関数呼び出しで無効 12 * 関数呼び出しをまたいで有効 6 となってます (もちろん fp とか sp は別にある)。 Linux とか NetBSD のような他の UNIX 系 OS も digital UNIX 互換なので同様です。 > あと、GC がどうの、という話ですが、現状では(malloc した) > スタックの領域をすべて mark するようにしているので、遅いです。 > もちろん、使っていないスタック領域をマークする意味は無いのですが、 > その「何処まで使っている」というのを厳密に管理するのがめんどーで、 > さぼっています。それも、直さないと。 そうかあ、YARV に GC は関係ないような気がしてたんですが、 管理データで GC が関ってくるわけですね。大変だなあ。 ------------------------------------------------------------------- 青木峰郎 -- ML: yarv-dev quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
432 2005-03-04 16:02 [ko1 atdot.net ] [ANN] YARV - Yet Another RubyVM 0.2.0 433 2005-03-04 18:15 ┗[aamine loveruby.net ] 434 2005-03-04 19:16 ┗[ko1 atdot.net ] 435 2005-03-04 20:44 ┗[aamine loveruby.net ] 437 2005-03-05 20:03 ┗[ko1 atdot.net ] -> 443 2005-03-06 12:52 ┗[aamine loveruby.net ] 446 2005-03-06 17:06 ┣[ko1 atdot.net ] 449 2005-03-06 19:22 ┃┗[ko1 atdot.net ] 450 2005-03-06 19:51 ┗[shiro lava.net ] 451 2005-03-06 20:13 ┗[ko1 atdot.net ] GC on stack (was: Re: [ANN] YARV - Yet Another RubyVM 0.2.0)