Next: Up: Previous:

インスタンス変数の配置

  インスタンス変数の配置には自由度がある. 例えば, インスタンス 変数を大きくてフラットなレコードにいれるならば, become の操作は, そのオブジェクトのインスタンス変数の数と同数の ロード/ストア命令のペアを要求することで, 効率的にレコード全体を生成する. この表現は小さいオブジェクトに対して, 特に世代的ごみ集めのある環境で 非常に効率的である(なぜなら確保は一般に早く, 変更は一般に高コストである. ).

大きなオブジェクトは図2.4のように, chunkの木によって表現 することができる. 更新は新しい木を作成し, 修正されていない chunk を再利用する. インスタンス変数を chunk に分割することは 更新と参照のコストに影響を与える. 一般に, 一つのbecomeで 更新される一群のインスタンス変数は一つの chunk に分割される べきである. 特別な場合として, もしいくつかのインスタンス変数が 定数もしくはほとんど変化しないならば(これはプログラマによるアノテーション もしくは大域的なメソッドボディの検査で行なう), それらのために 別のレコードを持つ. 現在の実装はフラットレコードのみを 使用しており, レイアウトを決定するアルゴリズムはまだ 開発していない.



Mitsubishi Research Institute,Inc.
Mon Feb 24 19:24:01 JST 1997