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

Re: [MD:6474] Meadow-2.20-dev 状況報告



>>>>> [meadow-develop : No.6498] にて
>>>>> 藤井さんは書きました:
藤井> > o lisp.h の cygwin 用のコードにまだマージしていない部分がある。
藤井> >   #ifdef USE_LSB_TAG 〜#endif の間の XTYPE や XINT 等。
藤井> >   よく分からないエラーが生じる。

藤井> この部分のマージを行ないました。
藤井> 確かに良く分からないエラーがかなりでてきました。

藤井> 暫定的な対応を含む対応が幾つか必要でしたので報告します。

おおすばらしい。


藤井> そのためポインタの下位 3bit が 0、つまりアドレスが 8 の倍数
藤井> であることが求められます。このため、XTYPE やXINT の定義を
藤井> CVS HEAD の定義に変更すると、アライメントの問題が発生します。

なるほど、アライメントの問題でしたか。非常に厄介な問題です。


藤井> > o Lisp_Float と Lisp_Cons に GC 用のマークビットを仮に追加
藤井> >   (lisp.h)。pdump の実装を容易にするため。これらの両オブジェクトの
藤井> >   マークビットは下記のようにオブジェクトの外部に移動された。この変
藤井> >   更に、pdumper を対応させるのは面倒(というかよく分からん)だったの
藤井> >   で、このように仮に対処。

藤井> 現在はそれぞれのサイズが 16 バイトになるようにして対応しました。(lisp.h)
藤井> # この対応は、上記仮の対処がなくなれば同時に必要なくなります。

なるほど、Lisp_Float と Lisp_Cons に対する私の変更の影響がありま
したか。

なお、Rev. 3668 の alloc.c に Lisp_Float をきちんと Sync up しよ
うとした変更の残骸があります。VC ではちゃんと動いたように思えたの
ですが、Mingw で問題があったので取消しました。


藤井> (4) PDUMP_OFFSET が 8 の倍数でないので、オフセット値の加減算の過程でア
藤井>     ドレスが 8 の倍数でなくなります。PDUMP_OFFSET の値を 8 の倍数に変更
藤井>     しました。(alloc.c)

藤井> # PDUMP_OFFSET の値に制約はないと判断したので、勝手に変更してますが、
藤井> # ちょっと不安です。

これで問題ないと思います。
    

藤井> (5) ダンプファイルに書き込む各オブジェクトのサイズが 8 の倍数でないと、
藤井>     結果としてアドレスが 8 の倍数でなくなります。

藤井>     以下のマクロを修正して、サイズが 8 の倍数になるよう補正しました。
藤井>     (alloc.c)

これも厄介ですね。よくこの問題に気がついたと思います。

pdumper をだましだまし修正して対応してきましたが、大きく手を入れ
る必要がありそうですね。

--
三好 雅則 http://www.boreas.dti.ne.jp/~miyoshi/