[Yarv-devel] calc constant(was: GC Tech. on Script Lang.)
K.Sasada
ko1 @ namikilab.tuat.ac.jp
2004年 2月 9日 (月) 23:50:17 EST
nobu.nakada at nifty.ne.jp wrote :
[ Re: [Yarv-devel] GC Tech. on Script Lang. ]
at Mon, 09 Feb 2004 23:34:51 +0900
ささだです。定数畳み込みって英語がわかりませんのでテキトー。
>> VM命令(threaded codeの列)を変えるんじゃなくて、
>> dynamic replication でコピーする機械語の列の方を変えるという
>> 手もあるのでは。
>
> ささださんの例でいくと、戻って来たコードも畳み込みを解除しない
> とまずいような気がします。メソッドフレームを自前で管理すれば戻
> り先を書き換えることもできるでしょうが。
>
dynamic replication は同じ命令を複数用意することでプロセッ
サの分岐ミスを減らすというアプローチ、で合ってますよね?
で、私もどのへんがこれの解決につながるのかわかりませんでした。
selective inlining?
## pseudo assembler(optimized) L1
0: put 20
2: send :p, 1
... !!
X: put 20
Y: send :p, 1
#=>
## pseudo assembler L1'
0: InsnSeq1
2: send :p, 1
... !!
X: InsnSeq2
Y: send :p, 1
InsnSeq1 and InsnSeq2: machine assemble
put 10
put 10
send :+, 1
## icache クリアする命令一個発行
>> # そこまでやるならネイティブコードに…とか。
そうですねぇ。
> rbjitというのもあり(あった?)ますが、やはりプリミティブな操作の
> メソッド呼び出しがかなりボトルネックっぽいです。
もう少し詳しく、その経験を教えていただけませんか。
--
// SASADA Koichi @ namikilab.tuat.ac.jp
//
Yarv-devel メーリングリストの案内