YamaKen
yamak****@bp*****
2006年 6月 4日 (日) 12:12:52 JST
At Tue, 30 May 2006 23:57:07 -0700 (PDT), jun.l****@gmail***** wrote: > > YamaKen <yamak****@bp*****> writes: > > > 再々編されたstorage-compact.hを見てみました。細かい部分で色々手 > > を入れたので、まずいところがあったら指摘してください。 > > 特に問題は見当たりませんが、l_freelist が ScmObj というのは疑問。この > list にぶら下がってるのはあくまで cell であって object location ではな > いので conceptual にも ScmCell* が妥当だと思います (別に performance > のためだけに変更したわけじゃありませんよ)。 うーん。私はobject locationのつもりです。 > 実装面で言っても、ScmObj に特殊な encoding rule を採用するにしても初期 > 化時に dereference がどうせ要るし、cell の位置を特定する必要があるわけ > で。それに sweep して freelist に追加するときも手元にあるのは pointer > で、その際に初期化しようとすると、何 object として初期化していいかわか > らないという catch-22 に嵌まるかもしれないので。 後半の「初期化」というのはどの状況のどの操作の事を指すのか分かり ませんが、listを構成する各cellのnextに格納されているのがobject locationである以上、listの先頭を指すl_freelistもobject location として統一的に扱うのが自然と思います。ScmCell *l_freelistとして もobject location <-> pointerの変換コストはpush/pop時点に移動す るだけで消えるわけではないし。 この議論ではstorageモデルの抽象化能力についてお互いが期待してい る限界が違っているような気がするので、実際にl_freelistの型の違い が問題になるような実装(動的heap再配置とか)が出てくるまでは話が平 行線になりそうな気がします。それまでは保留としときませんか? 継続 してメンテする意思のあるヤマケンの案をひとまず採っておくという事 で。 ------------------------------- ヤマケン yamak****@bp*****