- repeatedly
- 7025
- 3
- 18
- 0
@omasanori Rustのsegmented stackってどういう実装になってたんでしょう?#[fixed_stack_segment]とか#[rust_stack]みたいなのがsegmented stackの制御に使われている?
2013-11-15 20:14:07@repeatedly ランタイムを新しくするときに廃止しました。設計を練りなおしてまた導入する言っていましたが、今のところは入ってないかと。
2013-11-15 20:16:25@repeatedly unique_ptrやshared_ptrのようなセマンティクスで管理できる(GCを取り除く前から出来た)はず
2013-11-15 20:22:15@repeatedly いや、付けなかったら足りなくなった時点でスタックを割り当てて切り替えていました(呼び出す都度割り当てたりはしない)。
2013-11-15 20:24:43Goroutineのsegmented stackってどういう実装なんだろ?ってつぶやけば誰かが解説してくれそう.こんなに盛り上がってるわけだし,皆ランタイムのソースコードくらい読んでいるはずだ
2013-11-15 20:32:23Rustとかも関数側で制御出来るのを見るに,あるTask(Goroutine)が関数を読んだ場合に,今現在貯まっているスタックと呼び出そうとしている関数で必要なスタックのサイズを計算して,足りなかったら自分のスタックを増やすというのがpopularな実装?
2013-11-15 20:37:47@omasanori LLVMにはそもそも解説があるのか!これってつまり,RustやGoでの関数呼び出しは,いわゆるD言語とかのその辺の工夫のない言語に比べると,1関数呼び出しに多少のオーバーヘッドがある,という理解でいいのかいな?
2013-11-15 20:42:42@objectxplosive これ,外部の関数を呼び出した場合に,その分結構なサイズスタックを伸ばす必要が出てくると思うんですが,その辺の問題に関してはどっかに書かれてないんですかね?
2013-11-15 20:46:21segmented stackを採用する時に,初期のstack sizeを小さくするってのはどこでやるんだろ?Rustのコード見てもよく分からん(segmented sizeに関する変更点が多すぎて,git diffでは限界が…
2013-11-15 20:53:53