diff options
| author | Stefan Monnier | 2009-11-06 18:47:48 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2009-11-06 18:47:48 +0000 |
| commit | 2de9f71c22f9def6adaa6782eea25bc569cb8561 (patch) | |
| tree | 399507700b025f007803c590ef825f5eea3f989d /src/alloc.c | |
| parent | 7ac65b38938cdee2916350bc0b16f21a00dca444 (diff) | |
| download | emacs-2de9f71c22f9def6adaa6782eea25bc569cb8561.tar.gz emacs-2de9f71c22f9def6adaa6782eea25bc569cb8561.zip | |
Let integers use up 2 tags to give them one extra bit and double their range.
* lisp.h (USE_2_TAGS_FOR_INTS): New macro.
(LISP_INT_TAG, case_Lisp_Int, LISP_STRING_TAG, LISP_INT_TAG_P): New macros.
(enum Lisp_Type): Use them. Give explicit values.
(Lisp_Type_Limit): Remove.
(XINT, XUINT, make_number) [!USE_LISP_UNION_TYPE]:
(MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM, INTMASK):
Pay attention to USE_2_TAGS_FOR_INTS.
(INTEGERP): Use LISP_INT_TAG_P.
* fns.c (internal_equal): Simplify the default case.
(sxhash): Use case_Lisp_Int.
* data.c (wrong_type_argument): Don't check against Lisp_Type_Limit any more.
(Ftype_of): Use case_Lisp_Int.
(store_symval_forwarding): Take into account the fact that Ints can
now have more than one tag.
* buffer.c (syms_of_buffer): Use LISP_INT_TAG.
buffer_slot_type_mismatch):
* xfaces.c (face_attr_equal_p):
* print.c (print_object):
* alloc.c (mark_maybe_object, mark_object, survives_gc_p): Use case_Lisp_Int.
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/alloc.c b/src/alloc.c index bb148b37ba3..6241cde424b 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -4149,8 +4149,7 @@ mark_maybe_object (obj) | |||
| 4149 | mark_p = (live_misc_p (m, po) && !XMISCANY (obj)->gcmarkbit); | 4149 | mark_p = (live_misc_p (m, po) && !XMISCANY (obj)->gcmarkbit); |
| 4150 | break; | 4150 | break; |
| 4151 | 4151 | ||
| 4152 | case Lisp_Int: | 4152 | default: |
| 4153 | case Lisp_Type_Limit: | ||
| 4154 | break; | 4153 | break; |
| 4155 | } | 4154 | } |
| 4156 | 4155 | ||
| @@ -5713,7 +5712,7 @@ mark_object (arg) | |||
| 5713 | FLOAT_MARK (XFLOAT (obj)); | 5712 | FLOAT_MARK (XFLOAT (obj)); |
| 5714 | break; | 5713 | break; |
| 5715 | 5714 | ||
| 5716 | case Lisp_Int: | 5715 | case_Lisp_Int: |
| 5717 | break; | 5716 | break; |
| 5718 | 5717 | ||
| 5719 | default: | 5718 | default: |
| @@ -5799,7 +5798,7 @@ survives_gc_p (obj) | |||
| 5799 | 5798 | ||
| 5800 | switch (XTYPE (obj)) | 5799 | switch (XTYPE (obj)) |
| 5801 | { | 5800 | { |
| 5802 | case Lisp_Int: | 5801 | case_Lisp_Int: |
| 5803 | survives_p = 1; | 5802 | survives_p = 1; |
| 5804 | break; | 5803 | break; |
| 5805 | 5804 | ||