Next: copy_one_queue()
Up: GCのアルゴリズム
Previous: klic_gc
実際にcopyを行う部分。
- 1.
- GCを行うのが最初であれば、gcstackの実体を割りつける。
- 2.
- allocp, ntop, heaptop をnews_space_top とする。
otopをold_space_top とする。osizeを、old_space_sizeとする。
- 3.
- gc_hook_table に登録されている関数群を起動する。
このテーブルには、処理の際に、ゴールレコード以外に、
GCルートとなるような関数群を
register_gc_hook()(runtime/alloc.c) なる関数により
予め登録されている。
現在のKLICでは以下のような名称の関数および処理が登録
されている。
- gc_asyncio_stream:
- 非同期I/Oを行うfile descriptorに毎にある、I/O ストリームの登録先
。
- gc_timer_data:
- タイマ用stream I/Oのための変数の登録先
`REFERtimer。
- gc_signal_stream:
- 割り込み醉うの変数の登録先
(
ページ、第4.1.1章参照)。
- gc_exp_table:
- 輸出表に登録されているデータ群(並列実装)。
- gc_decode_stack:
- メッセージデコード中のデータ群(並列実装)。
- 4.
- 優先度毎にgoal queueをコピーする(copy_one_queue())
(
ページ、第7.7章参照)。
Sekita Daigo
1998-05-18