[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: [MD:6405] PDUMP_OBJECT_ARRAY_SIZE



すみません遅れました。藤井さん、ありがとうございます。

At Wed, 16 Mar 2005 07:18:53 +0900,
MIYOSHI Masanori wrote:
> >>>>> [meadow-develop : No.6407] にて
> >>>>> 藤井さんは書きました:
> 藤井> src/alloc.c を見てみたところ、PDUMP_OBJECT_ARRAY_SIZE のサイズを必要最
> 藤井> 小限より大きくしても、meadow.dmp のサイズや通常の実行時のメモリサイズ
> 藤井> には悪影響はないと判断しました。そこで、配列のサイズが足りなかったら内
> 藤井> 部で増量する仕組を追加するパッチを作りました。
> 
> 藤井> portable dumper の仕組みを良く分かっている訳ではないので、思い違いがあ
> 藤井> るかもしれませんが、宜しければ使ってみてください。
> 
> 良いと思うのですが、私も portable dumper の仕組みを良く分かってい
> る訳ではないので、確信はありません。
> 
> コメントしてもらえませんか? > 実装した林さんか永野さん

結論から言いますと、PDUMP_OBJECT_ARRAY_SIZE の自動増量は、問題ないどこ
ろか、まさに「本来そうあるべきだったもの」です。どうしてやっていなかっ
たのかというと、単なる手抜きです。

PDUMP_OBJECT_ARRAY_SIZE は、pdump 時に一時的に作る lisp object の pool 
の size です。(その pool というのは、まさに pdump_lisp_object のことで
す。) なので、これを必要以上に大きくしたところで、pdump 時に余分に 
memory を使うくらいで、通常利用時には関係しません。


他にも PDUMP_HASH_SIZE, PDUMP_POINTERS_SIZE やらを #ifndef で #define 
しているところが多数ありますが、これらの値も、明確な根拠はなく、本来は
実行時に決定すべきもの(のはず)です。不思議な値を #define しているのは、
たまたま先頭に書いてある PDUMP_HASH_SIZE が素数であることが望ましい性
質のものだったので、その時の気分で残りも素数にしてしまった、というだけ
のことです。本当は2のべき乗にすべきでした。


> 藤井> # あと、パッチを作成しているときに気になったのですが、
> 藤井> # pdump_lisp_object に格納されている構造体の index メンバと size メン
> 藤井> # バが初期化されていないように見えました。問題ないのでしょうか?
> 
> むむ。確かに初期化されてないように見えますね。ゼロクリアで良いのか
> な?

これもポカミスです(と思います)。関数 pdump の先頭あたりで xmalloc しま
くっている部分は、全部直後に bzero やったほうがいいですね。

-- 
Keiichiro Nagano