From b6b3b29458fefcf7f31a0b14d6484cf262db2e54 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 6 Nov 2012 12:48:35 -0800 Subject: [PATCH] Restore some duplicate definitions. This undoes part of the 2012-11-03 changes. Some people build with plain -g rather than with -g3, and they need the duplicate definitions for .gdbinit to work; see . * lisp.h (GCTYPEBITS, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Define as macros, as well as as enums or as constants. --- src/ChangeLog | 9 +++++++++ src/lisp.h | 19 ++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 6b9d77d2275..37907cd555a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2012-11-06 Paul Eggert + + Restore some duplicate definitions (Bug#12814). + This undoes part of the 2012-11-03 changes. Some people build + with plain -g rather than with -g3, and they need the duplicate + definitions for .gdbinit to work; see . + * lisp.h (GCTYPEBITS, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): + Define as macros, as well as as enums or as constants. + 2012-11-06 Jan Djärv * nsterm.m (convert_ns_to_X_keysym, keyDown:): Add NSNumericPadKeyMask diff --git a/src/lisp.h b/src/lisp.h index 97764eb24bd..88d9b766f38 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -152,15 +152,18 @@ extern bool suppress_checking EXTERNALLY_VISIBLE; on the few static Lisp_Objects used: all the defsubr as well as the two special buffers buffer_defaults and buffer_local_symbols. */ -/* Number of bits in a Lisp_Object tag. This can be used in #if. */ +enum Lisp_Bits + { + /* Number of bits in a Lisp_Object tag. This can be used in #if, + and for GDB's sake also as a regular symbol. */ + GCTYPEBITS = #define GCTYPEBITS 3 + GCTYPEBITS, -/* 2**GCTYPEBITS. This must be a macro that expands to a literal - integer constant, for MSVC. */ + /* 2**GCTYPEBITS. This must be a macro that expands to a literal + integer constant, for MSVC. */ #define GCALIGNMENT 8 -enum Lisp_Bits - { /* Number of bits in a Lisp_Object value, not counting the tag. */ VALBITS = BITS_PER_EMACS_INT - GCTYPEBITS, @@ -378,11 +381,15 @@ enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE = 0 }; /* In the size word of a vector, this bit means the vector has been marked. */ +static ptrdiff_t const ARRAY_MARK_FLAG #define ARRAY_MARK_FLAG PTRDIFF_MIN + = ARRAY_MARK_FLAG; /* In the size word of a struct Lisp_Vector, this bit means it's really some other vector-like object. */ +static ptrdiff_t const PSEUDOVECTOR_FLAG #define PSEUDOVECTOR_FLAG (PTRDIFF_MAX - PTRDIFF_MAX / 2) + = PSEUDOVECTOR_FLAG; /* In a pseudovector, the size field actually contains a word with one PSEUDOVECTOR_FLAG bit set, and one of the following values extracted @@ -464,7 +471,9 @@ enum lsb_bits #else /* not USE_LSB_TAG */ +static EMACS_INT const VALMASK #define VALMASK VAL_MAX + = VALMASK; #define XTYPE(a) ((enum Lisp_Type) ((EMACS_UINT) XLI (a) >> VALBITS)) -- 2.39.5