YamaKen
yamak****@bp*****
2006年 6月 5日 (月) 11:07:22 JST
At Sun, 04 Jun 2006 11:08:09 -0700 (PDT), jun.l****@gmail***** wrote: > > YamaKen <yamak****@bp*****> writes: > > > 後半の「初期化」というのはどの状況のどの操作の事を指すのか分かり > > ませんが、listを構成する各cellのnextに格納されているのがobject > > locationである以上、listの先頭を指すl_freelistもobject location > > として統一的に扱うのが自然と思います。ScmCell *l_freelistとして > > もobject location <-> pointerの変換コストはpush/pop時点に移動す > > るだけで消えるわけではないし。 > > Next の中身が object location というのは任意です。Next のためにはあく > まで十分に大きい slot が置いてあるだけであって、それが pointer か > location か整数かそれ以外かは accessor の interface 次第です。だから > 「next が location だから〜」というのは間違い。 うーん。どうもobject locationという用語で指してるものが食い違っ てるようですね。私の方ではこの用語を借りるのやめます。 私の言いたいのは、freelist操作のレベルではScmCell *を介在させた くないという事です。 l_freelist = SCM_FREECELL_NEXT(l_freelist) > でも最初の投稿書きながらチラッとは考えましたが、動的 heap 再配置って何 > に使います? Copy GC と比べたときの得失を考えると、有用性のほどは? 有用になり得るかどうかは微妙ですが、以下のような特性は組み込み環 境では意味を持つかもしれません。 ・再配置中のメモリ消費が少ない ・単なる連続メモリ領域としてコピーできる ・速い ・これらの副作用として、電力消費を低減できる 例えば大きめのオンチップ非キャッシュメモリを持つプロセッサ (XScale等)で重い作業の前に全heapを手元にフェッチしてしまうとか、 Palmのようなmemory handleベースのシステムでOS側が勝手に再配置す るとかに使えるかもしれません。 もっともらしい理由を並べてみましたが、大したペナルティの無いうち は可能性の芽を摘まないという設計上の基本方針によるところが大きい です。 ------------------------------- ヤマケン yamak****@bp*****