emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/lisp.h


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/src/lisp.h
Date: Thu, 11 Sep 2003 19:52:18 -0400

Index: emacs/src/lisp.h
diff -c emacs/src/lisp.h:1.467 emacs/src/lisp.h:1.468
*** emacs/src/lisp.h:1.467      Mon Sep  1 11:45:56 2003
--- emacs/src/lisp.h    Thu Sep 11 19:52:17 2003
***************
*** 163,170 ****
  
  /* These values are overridden by the m- file on some machines.  */
  #ifndef VALBITS
! /* The -1 is for the markbit.  */
! #define VALBITS (BITS_PER_EMACS_INT - GCTYPEBITS - 1)
  #endif
  
  #ifndef NO_UNION_TYPE
--- 163,169 ----
  
  /* These values are overridden by the m- file on some machines.  */
  #ifndef VALBITS
! #define VALBITS (BITS_PER_EMACS_INT - GCTYPEBITS)
  #endif
  
  #ifndef NO_UNION_TYPE
***************
*** 183,202 ****
      struct
        {
        EMACS_INT val  : VALBITS;
!       EMACS_INT type : GCTYPEBITS + 1;
        } s;
      struct
        {
        EMACS_UINT val : VALBITS;
!       EMACS_INT type : GCTYPEBITS + 1;
        } u;
      struct
        {
        EMACS_UINT val          : VALBITS;
        enum Lisp_Type type     : GCTYPEBITS;
-       /* The markbit is not really part of the value of a Lisp_Object,
-          and is always zero except during garbage collection.  */
-       EMACS_UINT markbit      : 1;
        } gu;
    }
  Lisp_Object;
--- 182,198 ----
      struct
        {
        EMACS_INT val  : VALBITS;
!       EMACS_UINT type : GCTYPEBITS;
        } s;
      struct
        {
        EMACS_UINT val : VALBITS;
!       EMACS_UINT type : GCTYPEBITS;
        } u;
      struct
        {
        EMACS_UINT val          : VALBITS;
        enum Lisp_Type type     : GCTYPEBITS;
        } gu;
    }
  Lisp_Object;
***************
*** 212,230 ****
  
      struct
        {
!       EMACS_INT type : GCTYPEBITS+1;
        EMACS_INT val  : VALBITS;
        } s;
      struct
        {
!       EMACS_INT type : GCTYPEBITS+1;
        EMACS_UINT val : VALBITS;
        } u;
      struct
        {
-       /* The markbit is not really part of the value of a Lisp_Object,
-          and is always zero except during garbage collection.  */
-       EMACS_UINT markbit      : 1;
        enum Lisp_Type type     : GCTYPEBITS;
        EMACS_UINT val          : VALBITS;
        } gu;
--- 208,223 ----
  
      struct
        {
!       EMACS_UINT type : GCTYPEBITS;
        EMACS_INT val  : VALBITS;
        } s;
      struct
        {
!       EMACS_UINT type : GCTYPEBITS;
        EMACS_UINT val : VALBITS;
        } u;
      struct
        {
        enum Lisp_Type type     : GCTYPEBITS;
        EMACS_UINT val          : VALBITS;
        } gu;
***************
*** 269,275 ****
     Likewise in the type slot of a float and in the size slot of strings.  */
  
  #ifndef MARKBIT
! #define MARKBIT ((EMACS_INT) ((EMACS_UINT) 1 << (VALBITS + GCTYPEBITS)))
  #endif /*MARKBIT */
  
  /* In the size word of a vector, this bit means the vector has been marked.  
*/
--- 262,268 ----
     Likewise in the type slot of a float and in the size slot of strings.  */
  
  #ifndef MARKBIT
! #define MARKBIT ((EMACS_INT) ((EMACS_UINT) 1 << (VALBITS + GCTYPEBITS - 1)))
  #endif /*MARKBIT */
  
  /* In the size word of a vector, this bit means the vector has been marked.  
*/
***************
*** 323,329 ****
      on all machines, but would penalize machines which don't need it)
   */
  #ifndef XTYPE
! #define XTYPE(a) ((enum Lisp_Type) ((a) >> VALBITS))
  #endif
  
  #ifndef XSETTYPE
--- 316,322 ----
      on all machines, but would penalize machines which don't need it)
   */
  #ifndef XTYPE
! #define XTYPE(a) ((enum Lisp_Type) (((EMACS_UINT) (a)) >> VALBITS))
  #endif
  
  #ifndef XSETTYPE
***************
*** 373,397 ****
  #define XGCTYPE(a) ((enum Lisp_Type) (((a) >> VALBITS) & GCTYPEMASK))
  #endif
  
- #if VALBITS + GCTYPEBITS == BITS_PER_EMACS_INT - 1
- /* Make XMARKBIT faster if mark bit is sign bit.  */
- #ifndef XMARKBIT
- #define XMARKBIT(a) ((a) < 0)
- #endif
- #endif /* markbit is sign bit */
- 
- #ifndef XMARKBIT
- #define XMARKBIT(a) ((a) & MARKBIT)
- #endif
- 
- #ifndef XMARK
- #define XMARK(a) ((a) |= MARKBIT)
- #endif
- 
- #ifndef XUNMARK
- #define XUNMARK(a) ((a) &= ~MARKBIT)
- #endif
- 
  #endif /* NO_UNION_TYPE */
  
  #ifndef NO_UNION_TYPE
--- 366,371 ----
***************
*** 432,440 ****
   Outside of garbage collection, all mark bits are always zero.  */
  
  #define XGCTYPE(a) ((a).gu.type)
- #define XMARKBIT(a) ((a).gu.markbit)
- #define XMARK(a) (XMARKBIT(a) = 1)
- #define XUNMARK(a) (XMARKBIT(a) = 0)
  
  #endif /* NO_UNION_TYPE */
  
--- 406,411 ----




reply via email to

[Prev in Thread] Current Thread [Next in Thread]