[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 メーリングリストの案内