aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Schwab <[email protected]>2005-11-15 13:53:09 +0000
committerAndreas Schwab <[email protected]>2005-11-15 13:53:09 +0000
commit3a623feeb50955cabd0cd855cf96ed4d9e05a0ce (patch)
tree2a79ae93eab16db528ce0a8ae0e75acbcaaa40ee
parent8014739509be6f7932725b18614328165431949e (diff)
(struct Lisp_Cons): Make cdr a union.
(XCDR_AS_LVALUE): Adjust. (struct Lisp_Float): Make data a union. (XFLOAT_DATA): Adjust.
-rw-r--r--src/lisp.h30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/lisp.h b/src/lisp.h
index 7178ef01cb..80d45e2004 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -600,9 +600,19 @@ struct Lisp_Cons
/* Please do not use the names of these elements in code other
than the core lisp implementation. Use XCAR and XCDR below. */
#ifdef HIDE_LISP_IMPLEMENTATION
- Lisp_Object car_, cdr_;
+ Lisp_Object car_;
+ union
+ {
+ Lisp_Object cdr_;
+ struct Lisp_Cons *chain;
+ } u;
#else
- Lisp_Object car, cdr;
+ Lisp_Object car;
+ union
+ {
+ Lisp_Object cdr;
+ struct Lisp_Cons *chain;
+ } u;
#endif
};
@@ -615,10 +625,10 @@ struct Lisp_Cons
invalidated at arbitrary points.) */
#ifdef HIDE_LISP_IMPLEMENTATION
#define XCAR_AS_LVALUE(c) (XCONS ((c))->car_)
-#define XCDR_AS_LVALUE(c) (XCONS ((c))->cdr_)
+#define XCDR_AS_LVALUE(c) (XCONS ((c))->u.cdr_)
#else
#define XCAR_AS_LVALUE(c) (XCONS ((c))->car)
-#define XCDR_AS_LVALUE(c) (XCONS ((c))->cdr)
+#define XCDR_AS_LVALUE(c) (XCONS ((c))->u.cdr)
#endif
/* Use these from normal code. */
@@ -1275,17 +1285,21 @@ union Lisp_Misc
/* Lisp floating point type */
struct Lisp_Float
{
+ union
+ {
#ifdef HIDE_LISP_IMPLEMENTATION
- double data_;
+ double data_;
#else
- double data;
+ double data;
#endif
+ struct Lisp_Float *chain;
+ } u;
};
#ifdef HIDE_LISP_IMPLEMENTATION
-#define XFLOAT_DATA(f) (XFLOAT (f)->data_)
+#define XFLOAT_DATA(f) (XFLOAT (f)->u.data_)
#else
-#define XFLOAT_DATA(f) (XFLOAT (f)->data)
+#define XFLOAT_DATA(f) (XFLOAT (f)->u.data)
#endif
/* A character, declared with the following typedef, is a member