* gc.h (SCM_VALIDATE_CELL): Rewritten.
authorMikael Djurfeldt <djurfeldt@nada.kth.se>
Sun, 11 Jun 2000 19:50:09 +0000 (19:50 +0000)
committerMikael Djurfeldt <djurfeldt@nada.kth.se>
Sun, 11 Jun 2000 19:50:09 +0000 (19:50 +0000)
(SCM_CELL_WORD, SCM_CELL_OBJECT, SCM_SET_CELL_WORD,
SCM_SET_CELL_OBJECT): Use new version of SCM_VALIDATE_CELL.
(Thanks to Han-Wen Nienhuys.)

libguile/gc.h

index bebfeb9..01b2520 100644 (file)
@@ -85,37 +85,40 @@ typedef scm_cell * SCM_CELLPTR;
 /* Low level cell data accessing macros:
  */
 
-#define SCM_VALIDATE_CELL(x) \
-        ((void) \
-        (SCM_DEBUG_CELL_ACCESSES ? (!scm_cellp (x) ? (abort (), 0) : 1) : 1))
+#if SCM_DEBUG_CELL_ACCESSES == 1
+#define SCM_VALIDATE_CELL(cell, expr) \
+  (!scm_cellp (cell) ? abort (), 0 : (expr))
+#else
+#define SCM_VALIDATE_CELL(cell, expr) expr
+#endif
 
-#define SCM_CELL_WORD(x, n) \
-    ((SCM_VALIDATE_CELL (x)), \
-     (((scm_bits_t *) SCM2PTR (x)) [n]))
+#define SCM_CELL_WORD(x, n)                                    \
+    SCM_VALIDATE_CELL ((x),                                    \
+                      ((scm_bits_t *) SCM2PTR (x)) [n])
 #define SCM_CELL_WORD_0(x) SCM_CELL_WORD (x, 0)
 #define SCM_CELL_WORD_1(x) SCM_CELL_WORD (x, 1)
 #define SCM_CELL_WORD_2(x) SCM_CELL_WORD (x, 2)
 #define SCM_CELL_WORD_3(x) SCM_CELL_WORD (x, 3)
 
-#define SCM_CELL_OBJECT(x, n) \
-    ((SCM_VALIDATE_CELL (x)), \
-     (SCM_PACK (((scm_bits_t *) SCM2PTR (x)) [n])))
+#define SCM_CELL_OBJECT(x, n)                                          \
+    SCM_VALIDATE_CELL ((x),                                            \
+                      SCM_PACK (((scm_bits_t *) SCM2PTR (x)) [n]))
 #define SCM_CELL_OBJECT_0(x) SCM_CELL_OBJECT (x, 0)
 #define SCM_CELL_OBJECT_1(x) SCM_CELL_OBJECT (x, 1)
 #define SCM_CELL_OBJECT_2(x) SCM_CELL_OBJECT (x, 2)
 #define SCM_CELL_OBJECT_3(x) SCM_CELL_OBJECT (x, 3)
 
-#define SCM_SET_CELL_WORD(x, n, v) \
-    ((SCM_VALIDATE_CELL (x)), \
-     ((((scm_bits_t *) SCM2PTR (x)) [n]) = (scm_bits_t) (v)))
+#define SCM_SET_CELL_WORD(x, n, v)                                         \
+    SCM_VALIDATE_CELL ((x),                                                \
+                      ((scm_bits_t *) SCM2PTR (x)) [n] = (scm_bits_t) (v))
 #define SCM_SET_CELL_WORD_0(x, v) SCM_SET_CELL_WORD (x, 0, v)
 #define SCM_SET_CELL_WORD_1(x, v) SCM_SET_CELL_WORD (x, 1, v)
 #define SCM_SET_CELL_WORD_2(x, v) SCM_SET_CELL_WORD (x, 2, v)
 #define SCM_SET_CELL_WORD_3(x, v) SCM_SET_CELL_WORD (x, 3, v)
 
-#define SCM_SET_CELL_OBJECT(x, n, v) \
-    ((SCM_VALIDATE_CELL (x)), \
-     ((((scm_bits_t *) SCM2PTR (x)) [n]) = SCM_UNPACK (v)))
+#define SCM_SET_CELL_OBJECT(x, n, v)                                     \
+    SCM_VALIDATE_CELL ((x),                                              \
+                      ((scm_bits_t *) SCM2PTR (x)) [n] = SCM_UNPACK (v))
 #define SCM_SET_CELL_OBJECT_0(x, v) SCM_SET_CELL_OBJECT (x, 0, v)
 #define SCM_SET_CELL_OBJECT_1(x, v) SCM_SET_CELL_OBJECT (x, 1, v)
 #define SCM_SET_CELL_OBJECT_2(x, v) SCM_SET_CELL_OBJECT (x, 2, v)