Mercurial > hg > xemacs-beta
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 |