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

Re: [MD:7362] Re: 整数のビット数



>>>>> [meadow-develop : No.7371] にて
>>>>> 白井さんは書きました:
> > > meadow:
> > > #define VALBITS (BITS_PER_EMACS_INT - (GCTYPEBITS + 1))
> > > => 32-(3+1) == 28bits
> > 
> > #define ARRAY_MARK_FLAG ((EMACS_INT) ((EMACS_UINT) 1 << (VALBITS + GCTYPEBITS - 2)))

> > > emacs:
> > > #define VALBITS (BITS_PER_EMACS_INT - GCTYPEBITS)
> > > => 32-3 == 29bits
> > 
> > #define ARRAY_MARK_FLAG ((EMACS_INT) ((EMACS_UINT) 1 << (VALBITS + GCTYPEBITS - 1)))

> これらを直しちゃいますね。

> # なにか問題があるなら revert してくれ、ということで。

昔の話なので、すっかり忘れてしまっているのですが、MSVC の場合でも、
多分問題があると思います。

;; この関係はかなり注意深くやった記憶はあるのですが、今となっては
;; さっぱりわかりません。:-(

GC用のマークビットを完全に捨て切れていないので、その分を確保する必
要があったような気がします。他の理由だったかもしれません。

>>>>> In [meadow-develop: 6474]
> o Lisp_Float と Lisp_Cons に GC 用のマークビットを仮に追加
>   (lisp.h)。pdump の実装を容易にするため。これらの両オブジェクトの
>   マークビットは下記のようにオブジェクトの外部に移動された。この変
>   更に、pdumper を対応させるのは面倒(というかよく分からん)だったの
>   で、このように仮に対処。
> 
> alloc.c:
> > struct float_block
> > {
> >   /* Place `floats' at the beginning, to ease up FLOAT_INDEX's job.  */
> >   struct Lisp_Float floats[FLOAT_BLOCK_SIZE];
> >   int gcmarkbits[1 + FLOAT_BLOCK_SIZE / (sizeof(int) * CHAR_BIT)];
> >   struct float_block *next;
> > };


もはやメンテ不能となっている pdump を Meadow から切り離したいと以
前から思っています。どなたかやってもらえないでしょうか?

--
三好 雅則 http://miyoshi.meadowy.org/