comparison src/lisp-disunion.h @ 5581:56144c8593a8

Mechanically change INT to FIXNUM in our sources. src/ChangeLog addition: 2011-10-09 Aidan Kehoe <kehoea@parhasard.net> [...] Mechanically change INT (where it refers to non-bignum Lisp integers) to FIXNUM in our sources. Done for the following functions, enums, and macros: Lisp_Type_Int_Even, Lisp_Type_Int_Odd, INT_GCBITS, INT_VALBITS, make_int(), INTP(), XINT(), CHECK_INT(), XREALINT(), INT_PLUS(), INT_MINUS(), EMACS_INT_MAX (to MOST_POSITIVE_FIXNUM), EMACS_INT_MIN (to MOST_NEGATIVE_FIXNUM), NUMBER_FITS_IN_AN_EMACS_INT() to NUMBER_FITS_IN_A_FIXNUM(), XFLOATINT, XCHAR_OR_INT, INT_OR_FLOAT. The EMACS_INT typedef was not changed, it does not describe non-bignum Lisp integers. Script that did the change available in http://mid.gmane.org/20067.17650.181273.12014@parhasard.net . modules/ChangeLog addition: 2011-10-09 Aidan Kehoe <kehoea@parhasard.net> [...] Mechanically change INT to FIXNUM, where the usage describes non-bignum Lisp integers. See the src/ChangeLog entry for more details. man/ChangeLog addition: 2011-10-09 Aidan Kehoe <kehoea@parhasard.net> * internals/internals.texi (How Lisp Objects Are Represented in C): * internals/internals.texi (Integers and Characters): Mechanically change INT to FIXNUM, where the usage describes non-bignum Lisp integers.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 09 Oct 2011 09:51:57 +0100
parents 308d34e9f07d
children 0d05accafc63
comparison
equal deleted inserted replaced
5580:a0e81357194e 5581:56144c8593a8
39 For integral Lisp types, i.e. integers and characters, the value 39 For integral Lisp types, i.e. integers and characters, the value
40 bits are the Lisp object. Some people call such Lisp_Objects "immediate". 40 bits are the Lisp object. Some people call such Lisp_Objects "immediate".
41 41
42 The object is obtained by masking off the type bits. 42 The object is obtained by masking off the type bits.
43 Bit 1 is used as a value bit by splitting the Lisp integer type 43 Bit 1 is used as a value bit by splitting the Lisp integer type
44 into two subtypes, Lisp_Type_Int_Even and Lisp_Type_Int_Odd. 44 into two subtypes, Lisp_Type_Fixnum_Even and Lisp_Type_Fixnum_Odd.
45 By this trickery we get 31 bits for integers instead of 30. 45 By this trickery we get 31 bits for integers instead of 30.
46 46
47 For non-integral types, the value bits of a Lisp_Object contain 47 For non-integral types, the value bits of a Lisp_Object contain
48 a pointer to a structure containing the object. The pointer is 48 a pointer to a structure containing the object. The pointer is
49 obtained by masking off the type and mark bits. 49 obtained by masking off the type and mark bits.
65 Here is a brief description of the following macros: 65 Here is a brief description of the following macros:
66 66
67 XTYPE The type bits of a Lisp_Object 67 XTYPE The type bits of a Lisp_Object
68 XPNTRVAL The value bits of a Lisp_Object storing a pointer 68 XPNTRVAL The value bits of a Lisp_Object storing a pointer
69 XCHARVAL The value bits of a Lisp_Object storing a Ichar 69 XCHARVAL The value bits of a Lisp_Object storing a Ichar
70 XREALINT The value bits of a Lisp_Object storing an integer, signed 70 XREALFIXNUM The value bits of a Lisp_Object storing an integer, signed
71 XUINT The value bits of a Lisp_Object storing an integer, unsigned 71 XUINT The value bits of a Lisp_Object storing an integer, unsigned
72 INTP Non-zero if this Lisp_Object is an integer 72 FIXNUMP Non-zero if this Lisp_Object is an integer
73 Qzero Lisp Integer 0 73 Qzero Lisp Integer 0
74 EQ Non-zero if two Lisp_Objects are identical, not merely equal. */ 74 EQ Non-zero if two Lisp_Objects are identical, not merely equal. */
75 75
76 76
77 typedef EMACS_INT Lisp_Object; 77 typedef EMACS_INT Lisp_Object;
78 78
79 #define Lisp_Type_Int_Bit (Lisp_Type_Int_Even & Lisp_Type_Int_Odd) 79 #define Lisp_Type_Fixnum_Bit (Lisp_Type_Fixnum_Even & Lisp_Type_Fixnum_Odd)
80 #define VALMASK (((1UL << VALBITS) - 1UL) << GCTYPEBITS) 80 #define VALMASK (((1UL << VALBITS) - 1UL) << GCTYPEBITS)
81 #define XTYPE(x) ((enum Lisp_Type) (((EMACS_UINT)(x)) & ~VALMASK)) 81 #define XTYPE(x) ((enum Lisp_Type) (((EMACS_UINT)(x)) & ~VALMASK))
82 #define XPNTRVAL(x) (x) /* This depends on Lisp_Type_Record == 0 */ 82 #define XPNTRVAL(x) (x) /* This depends on Lisp_Type_Record == 0 */
83 #define XCHARVAL(x) ((x) >> GCBITS) 83 #define XCHARVAL(x) ((x) >> GCBITS)
84 #define XREALINT(x) ((x) >> INT_GCBITS) 84 #define XREALFIXNUM(x) ((x) >> FIXNUM_GCBITS)
85 #define XUINT(x) ((EMACS_UINT)(x) >> INT_GCBITS) 85 #define XUINT(x) ((EMACS_UINT)(x) >> FIXNUM_GCBITS)
86 86
87 #define wrap_pointer_1(ptr) ((Lisp_Object) (ptr)) 87 #define wrap_pointer_1(ptr) ((Lisp_Object) (ptr))
88 88
89 DECLARE_INLINE_HEADER ( 89 DECLARE_INLINE_HEADER (
90 Lisp_Object 90 Lisp_Object
91 make_int_verify (EMACS_INT val) 91 make_fixnum_verify (EMACS_INT val)
92 ) 92 )
93 { 93 {
94 Lisp_Object obj = (Lisp_Object) ((val << INT_GCBITS) | Lisp_Type_Int_Bit); 94 Lisp_Object obj = (Lisp_Object) ((val << FIXNUM_GCBITS) | Lisp_Type_Fixnum_Bit);
95 type_checking_assert (XREALINT (obj) == val); 95 type_checking_assert (XREALFIXNUM (obj) == val);
96 return obj; 96 return obj;
97 } 97 }
98 98
99 #define make_int(x) ((Lisp_Object) (((x) << INT_GCBITS) | Lisp_Type_Int_Bit)) 99 #define make_fixnum(x) ((Lisp_Object) (((x) << FIXNUM_GCBITS) | Lisp_Type_Fixnum_Bit))
100 100
101 #define make_char_1(x) ((Lisp_Object) (((x) << GCBITS) | Lisp_Type_Char)) 101 #define make_char_1(x) ((Lisp_Object) (((x) << GCBITS) | Lisp_Type_Char))
102 102
103 #define INTP(x) ((EMACS_UINT)(x) & Lisp_Type_Int_Bit) 103 #define FIXNUMP(x) ((EMACS_UINT)(x) & Lisp_Type_Fixnum_Bit)
104 #define INT_PLUS(x,y) ((x)+(y)-Lisp_Type_Int_Bit) 104 #define FIXNUM_PLUS(x,y) ((x)+(y)-Lisp_Type_Fixnum_Bit)
105 #define INT_MINUS(x,y) ((x)-(y)+Lisp_Type_Int_Bit) 105 #define FIXNUM_MINUS(x,y) ((x)-(y)+Lisp_Type_Fixnum_Bit)
106 #define INT_PLUS1(x) INT_PLUS (x, make_int (1)) 106 #define FIXNUM_PLUS1(x) FIXNUM_PLUS (x, make_fixnum (1))
107 #define INT_MINUS1(x) INT_MINUS (x, make_int (1)) 107 #define FIXNUM_MINUS1(x) FIXNUM_MINUS (x, make_fixnum (1))
108 108
109 #define Qzero make_int (0) 109 #define Qzero make_fixnum (0)
110 #define Qnull_pointer ((Lisp_Object) 0) 110 #define Qnull_pointer ((Lisp_Object) 0)
111 #define EQ(x,y) ((x) == (y)) 111 #define EQ(x,y) ((x) == (y))
112 112
113 /* WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 113 /* WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
114 114