summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/_scm.h1
-rw-r--r--libguile/alist.c1
-rw-r--r--libguile/array-handle.c1
-rw-r--r--libguile/array-map.c1
-rw-r--r--libguile/arrays.c1
-rw-r--r--libguile/async.c1
-rw-r--r--libguile/bitvectors.c1
-rw-r--r--libguile/bytevectors.c1
-rw-r--r--libguile/chars.c2
-rw-r--r--libguile/continuations.c1
-rw-r--r--libguile/control.c1
-rw-r--r--libguile/debug.c1
-rw-r--r--libguile/deprecation.c1
-rw-r--r--libguile/dynwind.c1
-rw-r--r--libguile/eq.c1
-rw-r--r--libguile/eval.c1
-rw-r--r--libguile/evalext.c1
-rw-r--r--libguile/expand.c1
-rw-r--r--libguile/fdes-finalizers.c1
-rw-r--r--libguile/feature.c1
-rw-r--r--libguile/filesys.c1
-rw-r--r--libguile/fluids.c1
-rw-r--r--libguile/foreign.c1
-rw-r--r--libguile/fports.c1
-rw-r--r--libguile/gc.c1
-rw-r--r--libguile/generalized-arrays.c1
-rw-r--r--libguile/goops.c1
-rw-r--r--libguile/guardians.c1
-rw-r--r--libguile/hash.c1
-rw-r--r--libguile/hashtab.c1
-rw-r--r--libguile/hooks.c1
-rw-r--r--libguile/i18n.c1
-rw-r--r--libguile/instructions.c1
-rw-r--r--libguile/ioext.c1
-rw-r--r--libguile/keywords.c1
-rw-r--r--libguile/list.c1
-rw-r--r--libguile/load.c1
-rw-r--r--libguile/loader.c1
-rw-r--r--libguile/memoize.c1
-rw-r--r--libguile/modules.c1
-rw-r--r--libguile/net_db.c1
-rw-r--r--libguile/numbers.c1
-rw-r--r--libguile/objprop.c1
-rw-r--r--libguile/options.c1
-rw-r--r--libguile/ports-internal.h1
-rw-r--r--libguile/ports.c1
-rw-r--r--libguile/posix.c1
-rw-r--r--libguile/print.c5
-rw-r--r--libguile/print.h4
-rw-r--r--libguile/procprop.c1
-rw-r--r--libguile/programs.c1
-rw-r--r--libguile/random.c1
-rw-r--r--libguile/rdelim.c1
-rw-r--r--libguile/read.c1
-rw-r--r--libguile/regex-posix.c1
-rw-r--r--libguile/scmsigs.c1
-rw-r--r--libguile/script.c1
-rw-r--r--libguile/socket.c1
-rw-r--r--libguile/sort.c1
-rw-r--r--libguile/srcprop.c1
-rw-r--r--libguile/srfi-1.c1
-rw-r--r--libguile/srfi-13.c1
-rw-r--r--libguile/srfi-14.c1
-rw-r--r--libguile/srfi-60.c1
-rw-r--r--libguile/stacks.c1
-rw-r--r--libguile/stime.c1
-rw-r--r--libguile/strings.c1
-rw-r--r--libguile/strorder.c1
-rw-r--r--libguile/struct.c1
-rw-r--r--libguile/symbols.c1
-rw-r--r--libguile/threads.c1
-rw-r--r--libguile/throw.c1
-rw-r--r--libguile/trees.c1
-rw-r--r--libguile/values.c1
-rw-r--r--libguile/vectors.c1
-rw-r--r--libguile/vm.c1
-rw-r--r--libguile/weak-list.h3
-rw-r--r--libguile/weak-set.c1
-rw-r--r--libguile/weak-table.c1
-rw-r--r--libguile/weak-vector.c1
80 files changed, 82 insertions, 8 deletions
diff --git a/libguile/_scm.h b/libguile/_scm.h
index 35a5879e8..85c68ec04 100644
--- a/libguile/_scm.h
+++ b/libguile/_scm.h
@@ -36,7 +36,6 @@
/* Include headers for those files central to the implementation. The
rest should be explicitly #included in the C files themselves. */
-#include "libguile/pairs.h" /* Everyone conses. */
#include "libguile/gc.h" /* Everyone allocates. */
#include "libguile/gsubr.h" /* Everyone defines global functions. */
#include "libguile/procs.h" /* Same. */
diff --git a/libguile/alist.c b/libguile/alist.c
index c254e2103..a4e279d2f 100644
--- a/libguile/alist.c
+++ b/libguile/alist.c
@@ -27,7 +27,6 @@
#include "libguile/boolean.h"
#include "libguile/eq.h"
#include "libguile/list.h"
-
#include "libguile/pairs.h"
#include "libguile/numbers.h"
#include "libguile/alist.h"
diff --git a/libguile/array-handle.c b/libguile/array-handle.c
index 8af6d1d3f..f895e3ffd 100644
--- a/libguile/array-handle.c
+++ b/libguile/array-handle.c
@@ -29,6 +29,7 @@
#include "libguile/bitvectors.h"
#include "libguile/list.h"
#include "libguile/arrays.h"
+#include "libguile/pairs.h"
#include "libguile/array-handle.h"
diff --git a/libguile/array-map.c b/libguile/array-map.c
index 1422efb5b..ff5283aff 100644
--- a/libguile/array-map.c
+++ b/libguile/array-map.c
@@ -27,6 +27,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/strings.h"
#include "libguile/arrays.h"
diff --git a/libguile/arrays.c b/libguile/arrays.c
index 945994e5a..025567e56 100644
--- a/libguile/arrays.c
+++ b/libguile/arrays.c
@@ -31,6 +31,7 @@
#include "verify.h"
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/__scm.h"
#include "libguile/eq.h"
diff --git a/libguile/async.c b/libguile/async.c
index 0686674d0..4879048d8 100644
--- a/libguile/async.c
+++ b/libguile/async.c
@@ -24,6 +24,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/atomics-internal.h"
#include "libguile/eval.h"
#include "libguile/throw.h"
diff --git a/libguile/bitvectors.c b/libguile/bitvectors.c
index 1526d2bba..61eee7362 100644
--- a/libguile/bitvectors.c
+++ b/libguile/bitvectors.c
@@ -26,6 +26,7 @@
#include <string.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/__scm.h"
#include "libguile/array-handle.h"
diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c
index b97b3bfd3..cec02490d 100644
--- a/libguile/bytevectors.c
+++ b/libguile/bytevectors.c
@@ -42,6 +42,7 @@
#include "libguile/bytevectors.h"
#include "libguile/generalized-vectors.h"
#include "libguile/list.h"
+#include "libguile/pairs.h"
#include "libguile/strings.h"
#include "libguile/arrays.h"
#include "libguile/array-handle.h"
diff --git a/libguile/chars.c b/libguile/chars.c
index 5c78a5169..9091d8693 100644
--- a/libguile/chars.c
+++ b/libguile/chars.c
@@ -30,8 +30,8 @@
#include "libguile/_scm.h"
#include "libguile/boolean.h"
-
#include "libguile/chars.h"
+#include "libguile/pairs.h"
#include "libguile/srfi-14.h"
diff --git a/libguile/continuations.c b/libguile/continuations.c
index 482cadce1..2707308de 100644
--- a/libguile/continuations.c
+++ b/libguile/continuations.c
@@ -31,6 +31,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/async.h"
#include "libguile/backtrace.h"
diff --git a/libguile/control.c b/libguile/control.c
index 654d203c4..6a0a19c52 100644
--- a/libguile/control.c
+++ b/libguile/control.c
@@ -23,6 +23,7 @@
#include <alloca.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/control.h"
#include "libguile/extensions.h"
#include "libguile/list.h"
diff --git a/libguile/debug.c b/libguile/debug.c
index 356882475..b0b110a40 100644
--- a/libguile/debug.c
+++ b/libguile/debug.c
@@ -44,6 +44,7 @@
#include "libguile/macros.h"
#include "libguile/smob.h"
#include "libguile/struct.h"
+#include "libguile/pairs.h"
#include "libguile/procprop.h"
#include "libguile/srcprop.h"
#include "libguile/alist.h"
diff --git a/libguile/deprecation.c b/libguile/deprecation.c
index 9546a76b3..187fef9d4 100644
--- a/libguile/deprecation.c
+++ b/libguile/deprecation.c
@@ -28,6 +28,7 @@
#include <stdarg.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/deprecation.h"
#include "libguile/list.h"
diff --git a/libguile/dynwind.c b/libguile/dynwind.c
index b33bebb6e..7f395af95 100644
--- a/libguile/dynwind.c
+++ b/libguile/dynwind.c
@@ -30,6 +30,7 @@
#include "libguile/boolean.h"
#include "libguile/dynstack.h"
#include "libguile/eval.h"
+#include "libguile/pairs.h"
#include "libguile/ports.h"
#include "libguile/dynwind.h"
diff --git a/libguile/eq.c b/libguile/eq.c
index 5d19cfca5..e7cbb2fb9 100644
--- a/libguile/eq.c
+++ b/libguile/eq.c
@@ -38,6 +38,7 @@
#include "libguile/generalized-arrays.h"
#include "libguile/goops.h"
#include "libguile/hashtab.h"
+#include "libguile/pairs.h"
#include "libguile/private-options.h"
#include "libguile/smob.h"
#include "libguile/stackchk.h"
diff --git a/libguile/eval.c b/libguile/eval.c
index d4648b274..2d22375a4 100644
--- a/libguile/eval.c
+++ b/libguile/eval.c
@@ -27,6 +27,7 @@
#include <stdarg.h>
#include "libguile/__scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/_scm.h"
#include "libguile/alist.h"
diff --git a/libguile/evalext.c b/libguile/evalext.c
index 3cfa8a66a..84b3dde79 100644
--- a/libguile/evalext.c
+++ b/libguile/evalext.c
@@ -28,6 +28,7 @@
#include "libguile/list.h"
#include "libguile/fluids.h"
#include "libguile/modules.h"
+#include "libguile/pairs.h"
#include "libguile/evalext.h"
diff --git a/libguile/expand.c b/libguile/expand.c
index f2e462c06..295e1913c 100644
--- a/libguile/expand.c
+++ b/libguile/expand.c
@@ -24,6 +24,7 @@
#endif
#include "libguile/__scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/_scm.h"
#include "libguile/alist.h"
diff --git a/libguile/fdes-finalizers.c b/libguile/fdes-finalizers.c
index 6bd5ad785..319560058 100644
--- a/libguile/fdes-finalizers.c
+++ b/libguile/fdes-finalizers.c
@@ -22,6 +22,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/extensions.h"
#include "libguile/eval.h"
diff --git a/libguile/feature.c b/libguile/feature.c
index 8f10223fc..5364c1d2f 100644
--- a/libguile/feature.c
+++ b/libguile/feature.c
@@ -28,6 +28,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/strings.h"
#include "libguile/fluids.h"
diff --git a/libguile/filesys.c b/libguile/filesys.c
index fbb2a56ed..de1887095 100644
--- a/libguile/filesys.c
+++ b/libguile/filesys.c
@@ -80,6 +80,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/async.h"
#include "libguile/dynwind.h"
diff --git a/libguile/fluids.c b/libguile/fluids.c
index c928cd9b4..0a9df1a6d 100644
--- a/libguile/fluids.c
+++ b/libguile/fluids.c
@@ -25,6 +25,7 @@
#include <string.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/alist.h"
#include "libguile/atomics-internal.h"
#include "libguile/bdw-gc.h"
diff --git a/libguile/foreign.c b/libguile/foreign.c
index 9cbf0b297..db52032ab 100644
--- a/libguile/foreign.c
+++ b/libguile/foreign.c
@@ -40,6 +40,7 @@
#include "libguile/keywords.h"
#include "libguile/list.h"
#include "libguile/instructions.h"
+#include "libguile/pairs.h"
#include "libguile/stacks.h"
#include "libguile/threads.h"
#include "libguile/weak-table.h"
diff --git a/libguile/fports.c b/libguile/fports.c
index 623f7beb8..c400be456 100644
--- a/libguile/fports.c
+++ b/libguile/fports.c
@@ -47,6 +47,7 @@
#include <full-write.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/async.h"
#include "libguile/dynwind.h"
diff --git a/libguile/gc.c b/libguile/gc.c
index 7580ccae2..39d4f3298 100644
--- a/libguile/gc.c
+++ b/libguile/gc.c
@@ -24,6 +24,7 @@
#endif
#include "libguile/gen-scmconfig.h"
+#include "libguile/pairs.h"
#include <stdio.h>
#include <errno.h>
diff --git a/libguile/generalized-arrays.c b/libguile/generalized-arrays.c
index 35be23d05..6fbdbafb2 100644
--- a/libguile/generalized-arrays.c
+++ b/libguile/generalized-arrays.c
@@ -28,6 +28,7 @@
#include <string.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/__scm.h"
#include "libguile/array-handle.h"
#include "libguile/generalized-arrays.h"
diff --git a/libguile/goops.c b/libguile/goops.c
index d3c6b7302..a08f06f1d 100644
--- a/libguile/goops.c
+++ b/libguile/goops.c
@@ -40,6 +40,7 @@
#include "libguile/keywords.h"
#include "libguile/macros.h"
#include "libguile/modules.h"
+#include "libguile/pairs.h"
#include "libguile/ports.h"
#include "libguile/ports-internal.h"
#include "libguile/procprop.h"
diff --git a/libguile/guardians.c b/libguile/guardians.c
index cb12663a2..fa5b43b63 100644
--- a/libguile/guardians.c
+++ b/libguile/guardians.c
@@ -50,6 +50,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/bdw-gc.h"
diff --git a/libguile/hash.c b/libguile/hash.c
index 9c5618dce..b9c1c5802 100644
--- a/libguile/hash.c
+++ b/libguile/hash.c
@@ -32,6 +32,7 @@
#include "libguile/_scm.h"
#include "libguile/chars.h"
+#include "libguile/pairs.h"
#include "libguile/ports.h"
#include "libguile/strings.h"
#include "libguile/symbols.h"
diff --git a/libguile/hashtab.c b/libguile/hashtab.c
index ee2ff2e85..c0fe2db1b 100644
--- a/libguile/hashtab.c
+++ b/libguile/hashtab.c
@@ -28,6 +28,7 @@
#include <assert.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/alist.h"
#include "libguile/boolean.h"
#include "libguile/bdw-gc.h"
diff --git a/libguile/hooks.c b/libguile/hooks.c
index 20e6b5dfd..b60c68abb 100644
--- a/libguile/hooks.c
+++ b/libguile/hooks.c
@@ -25,6 +25,7 @@
#include <stdio.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/eval.h"
diff --git a/libguile/i18n.c b/libguile/i18n.c
index 0dcddb850..aa8314185 100644
--- a/libguile/i18n.c
+++ b/libguile/i18n.c
@@ -23,6 +23,7 @@
#include <alloca.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/extensions.h"
#include "libguile/feature.h"
diff --git a/libguile/instructions.c b/libguile/instructions.c
index f6c6a1189..6538d5686 100644
--- a/libguile/instructions.c
+++ b/libguile/instructions.c
@@ -25,6 +25,7 @@
#include "_scm.h"
#include "threads.h"
#include "libguile/list.h"
+#include "libguile/pairs.h"
#include "instructions.h"
#include "extensions.h"
diff --git a/libguile/ioext.c b/libguile/ioext.c
index 53e95dd2a..e63b853c4 100644
--- a/libguile/ioext.c
+++ b/libguile/ioext.c
@@ -28,6 +28,7 @@
#include <errno.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/async.h"
#include "libguile/dynwind.h"
#include "libguile/extensions.h"
diff --git a/libguile/keywords.c b/libguile/keywords.c
index 950743e95..f987a52d9 100644
--- a/libguile/keywords.c
+++ b/libguile/keywords.c
@@ -29,6 +29,7 @@
#include "libguile/_scm.h"
#include "libguile/async.h"
#include "libguile/list.h"
+#include "libguile/pairs.h"
#include "libguile/ports.h"
#include "libguile/smob.h"
#include "libguile/dynwind.h"
diff --git a/libguile/list.c b/libguile/list.c
index b314dedf9..89e63436f 100644
--- a/libguile/list.c
+++ b/libguile/list.c
@@ -24,6 +24,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/eq.h"
diff --git a/libguile/load.c b/libguile/load.c
index 61714c073..97a715983 100644
--- a/libguile/load.c
+++ b/libguile/load.c
@@ -43,6 +43,7 @@
#include "libguile/list.h"
#include "libguile/loader.h"
#include "libguile/modules.h"
+#include "libguile/pairs.h"
#include "libguile/read.h"
#include "libguile/srfi-13.h"
#include "libguile/strings.h"
diff --git a/libguile/loader.c b/libguile/loader.c
index b36eb9e94..cbb3b696e 100644
--- a/libguile/loader.c
+++ b/libguile/loader.c
@@ -44,6 +44,7 @@
#include "elf.h"
#include "eval.h"
#include "extensions.h"
+#include "pairs.h"
#include "programs.h"
#include "loader.h"
diff --git a/libguile/memoize.c b/libguile/memoize.c
index 6ec9498ad..01715e552 100644
--- a/libguile/memoize.c
+++ b/libguile/memoize.c
@@ -25,6 +25,7 @@
#endif
#include "libguile/__scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/_scm.h"
#include "libguile/alist.h"
diff --git a/libguile/modules.c b/libguile/modules.c
index e6a4f3adb..9ff1ec76f 100644
--- a/libguile/modules.c
+++ b/libguile/modules.c
@@ -25,6 +25,7 @@
#include <stdarg.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/eval.h"
diff --git a/libguile/net_db.c b/libguile/net_db.c
index 8528b68ab..34f97565f 100644
--- a/libguile/net_db.c
+++ b/libguile/net_db.c
@@ -46,6 +46,7 @@
#include <arpa/inet.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/feature.h"
#include "libguile/list.h"
diff --git a/libguile/numbers.c b/libguile/numbers.c
index 2c1f7f6c9..16b5a6698 100644
--- a/libguile/numbers.c
+++ b/libguile/numbers.c
@@ -62,6 +62,7 @@
#include "libguile/_scm.h"
#include "libguile/boolean.h"
#include "libguile/feature.h"
+#include "libguile/pairs.h"
#include "libguile/ports.h"
#include "libguile/finalizers.h"
#include "libguile/smob.h"
diff --git a/libguile/objprop.c b/libguile/objprop.c
index f79f1ddd0..8f8b7fb85 100644
--- a/libguile/objprop.c
+++ b/libguile/objprop.c
@@ -27,6 +27,7 @@
#include "libguile/async.h"
#include "libguile/hashtab.h"
#include "libguile/objprop.h"
+#include "libguile/pairs.h"
#include "libguile/weak-table.h"
diff --git a/libguile/options.c b/libguile/options.c
index 4bbee8bba..56b692332 100644
--- a/libguile/options.c
+++ b/libguile/options.c
@@ -23,6 +23,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/list.h"
#include "libguile/mallocs.h"
diff --git a/libguile/ports-internal.h b/libguile/ports-internal.h
index cfc5b7e2e..20d65aa2a 100644
--- a/libguile/ports-internal.h
+++ b/libguile/ports-internal.h
@@ -27,6 +27,7 @@
#include "libguile/_scm.h"
#include "libguile/list.h"
+#include "libguile/pairs.h"
#include "libguile/ports.h"
typedef enum scm_t_port_type_flags {
diff --git a/libguile/ports.c b/libguile/ports.c
index 8dad20e01..bf1e7422b 100644
--- a/libguile/ports.c
+++ b/libguile/ports.c
@@ -39,6 +39,7 @@
#include <striconveh.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/async.h"
#include "libguile/atomics-internal.h"
diff --git a/libguile/posix.c b/libguile/posix.c
index 1104aaf0d..0fc3aaf73 100644
--- a/libguile/posix.c
+++ b/libguile/posix.c
@@ -63,6 +63,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/async.h"
#include "libguile/dynwind.h"
#include "libguile/extensions.h"
diff --git a/libguile/print.c b/libguile/print.c
index c7dd54adc..b801884de 100644
--- a/libguile/print.c
+++ b/libguile/print.c
@@ -31,6 +31,7 @@
#include <unictype.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/chars.h"
#include "libguile/continuations.h"
@@ -262,8 +263,8 @@ scm_i_port_with_print_state (SCM port, SCM print_state)
}
else
port = SCM_COERCE_OUTPORT (port);
- SCM_RETURN_NEWSMOB (scm_tc16_port_with_ps,
- SCM_UNPACK (scm_cons (port, print_state)));
+ return scm_new_double_smob (scm_tc16_port_with_ps,
+ SCM_UNPACK (port), SCM_UNPACK (print_state), 0);
}
static void
diff --git a/libguile/print.h b/libguile/print.h
index 9271c9235..9bbf16774 100644
--- a/libguile/print.h
+++ b/libguile/print.h
@@ -49,8 +49,8 @@ do { \
#define SCM_SET_WRITINGP(pstate, x) { (pstate)->writingp = (x); }
#define SCM_PORT_WITH_PS_P(p) SCM_TYP16_PREDICATE (scm_tc16_port_with_ps, p)
-#define SCM_PORT_WITH_PS_PORT(p) SCM_CAR (SCM_CELL_OBJECT_1 (p))
-#define SCM_PORT_WITH_PS_PS(p) SCM_CDR (SCM_CELL_OBJECT_1 (p))
+#define SCM_PORT_WITH_PS_PORT(p) SCM_CELL_OBJECT_1 (p)
+#define SCM_PORT_WITH_PS_PS(p) SCM_CELL_OBJECT_2 (p)
#define SCM_COERCE_OUTPORT(p) \
(SCM_PORT_WITH_PS_P (p) ? SCM_PORT_WITH_PS_PORT (p) : p)
diff --git a/libguile/procprop.c b/libguile/procprop.c
index a11f20eab..d04081388 100644
--- a/libguile/procprop.c
+++ b/libguile/procprop.c
@@ -24,6 +24,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/alist.h"
diff --git a/libguile/programs.c b/libguile/programs.c
index 78933338f..5c9612702 100644
--- a/libguile/programs.c
+++ b/libguile/programs.c
@@ -28,6 +28,7 @@
#include "eval.h"
#include "extensions.h"
#include "modules.h"
+#include "pairs.h"
#include "programs.h"
#include "procprop.h" /* scm_sym_name */
#include "vm.h"
diff --git a/libguile/random.c b/libguile/random.c
index 640980481..7ecb3f24d 100644
--- a/libguile/random.c
+++ b/libguile/random.c
@@ -39,6 +39,7 @@
#include "libguile/list.h"
#include "libguile/numbers.h"
#include "libguile/feature.h"
+#include "libguile/pairs.h"
#include "libguile/stime.h"
#include "libguile/strings.h"
#include "libguile/arrays.h"
diff --git a/libguile/rdelim.c b/libguile/rdelim.c
index bc3df33b3..4df3f005e 100644
--- a/libguile/rdelim.c
+++ b/libguile/rdelim.c
@@ -21,6 +21,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include <stdio.h>
diff --git a/libguile/read.c b/libguile/read.c
index 6c9466cef..497f1d9a1 100644
--- a/libguile/read.c
+++ b/libguile/read.c
@@ -34,6 +34,7 @@
#include <alloca.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/bytevectors.h"
#include "libguile/chars.h"
diff --git a/libguile/regex-posix.c b/libguile/regex-posix.c
index 101db01eb..1cf45755b 100644
--- a/libguile/regex-posix.c
+++ b/libguile/regex-posix.c
@@ -35,6 +35,7 @@
#include <sys/types.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include <regex.h>
diff --git a/libguile/scmsigs.c b/libguile/scmsigs.c
index 4b2505b01..a0926dc8b 100644
--- a/libguile/scmsigs.c
+++ b/libguile/scmsigs.c
@@ -42,6 +42,7 @@
#include <full-write.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/async.h"
diff --git a/libguile/script.c b/libguile/script.c
index dd3167181..0fcfc5f46 100644
--- a/libguile/script.c
+++ b/libguile/script.c
@@ -31,6 +31,7 @@
#include <uniconv.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/eval.h"
#include "libguile/feature.h"
#include "libguile/fluids.h"
diff --git a/libguile/socket.c b/libguile/socket.c
index 5a33379dc..681be4259 100644
--- a/libguile/socket.c
+++ b/libguile/socket.c
@@ -47,6 +47,7 @@
#include <gmp.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/async.h"
#include "libguile/arrays.h"
#include "libguile/feature.h"
diff --git a/libguile/sort.c b/libguile/sort.c
index 249dbb514..17edc7b14 100644
--- a/libguile/sort.c
+++ b/libguile/sort.c
@@ -40,6 +40,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/eval.h"
#include "libguile/arrays.h"
diff --git a/libguile/srcprop.c b/libguile/srcprop.c
index 037450b91..0f68dfbf2 100644
--- a/libguile/srcprop.c
+++ b/libguile/srcprop.c
@@ -25,6 +25,7 @@
#include <errno.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/async.h"
#include "libguile/smob.h"
#include "libguile/alist.h"
diff --git a/libguile/srfi-1.c b/libguile/srfi-1.c
index 801c1ceab..c202603ee 100644
--- a/libguile/srfi-1.c
+++ b/libguile/srfi-1.c
@@ -25,6 +25,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/eq.h"
diff --git a/libguile/srfi-13.c b/libguile/srfi-13.c
index b0763fc84..ef50c8175 100644
--- a/libguile/srfi-13.c
+++ b/libguile/srfi-13.c
@@ -29,6 +29,7 @@
#include <unictype.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include <libguile/deprecation.h>
#include "libguile/eval.h"
#include "libguile/error.h"
diff --git a/libguile/srfi-14.c b/libguile/srfi-14.c
index 74e59095f..26cd7c211 100644
--- a/libguile/srfi-14.c
+++ b/libguile/srfi-14.c
@@ -28,6 +28,7 @@
#include <unictype.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/chars.h"
#include "libguile/eval.h"
diff --git a/libguile/srfi-60.c b/libguile/srfi-60.c
index 784b0654b..c155b8e57 100644
--- a/libguile/srfi-60.c
+++ b/libguile/srfi-60.c
@@ -25,6 +25,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/eq.h"
#include "libguile/extensions.h"
diff --git a/libguile/stacks.c b/libguile/stacks.c
index 71e37c3f2..d0f5ebcb7 100644
--- a/libguile/stacks.c
+++ b/libguile/stacks.c
@@ -33,6 +33,7 @@
#include "libguile/list.h"
#include "libguile/struct.h"
#include "libguile/macros.h"
+#include "libguile/pairs.h"
#include "libguile/procprop.h"
#include "libguile/modules.h"
#include "libguile/strings.h"
diff --git a/libguile/stime.c b/libguile/stime.c
index 314eee4e6..b77216262 100644
--- a/libguile/stime.c
+++ b/libguile/stime.c
@@ -50,6 +50,7 @@
#include <unistr.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/async.h"
#include "libguile/feature.h"
diff --git a/libguile/strings.c b/libguile/strings.c
index 2e3afe2a6..7a2211147 100644
--- a/libguile/strings.c
+++ b/libguile/strings.c
@@ -36,6 +36,7 @@
#include "striconveh.h"
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/chars.h"
#include "libguile/strings.h"
#include "libguile/ports.h"
diff --git a/libguile/strorder.c b/libguile/strorder.c
index 16aa4bc30..f88465740 100644
--- a/libguile/strorder.c
+++ b/libguile/strorder.c
@@ -25,6 +25,7 @@
#include "libguile/_scm.h"
#include "libguile/boolean.h"
#include "libguile/chars.h"
+#include "libguile/pairs.h"
#include "libguile/strings.h"
#include "libguile/symbols.h"
diff --git a/libguile/struct.c b/libguile/struct.c
index 6dffe43a0..91d18fd47 100644
--- a/libguile/struct.c
+++ b/libguile/struct.c
@@ -37,6 +37,7 @@
#include "libguile/goops.h"
#include "libguile/alist.h"
#include "libguile/hashtab.h"
+#include "libguile/pairs.h"
#include "libguile/ports.h"
#include "libguile/strings.h"
#include "libguile/srfi-13.h"
diff --git a/libguile/symbols.c b/libguile/symbols.c
index f0633e619..81d1e8847 100644
--- a/libguile/symbols.c
+++ b/libguile/symbols.c
@@ -26,6 +26,7 @@
#include <unistr.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/chars.h"
#include "libguile/eval.h"
diff --git a/libguile/threads.c b/libguile/threads.c
index 0e04af3cb..1e0ad56b4 100644
--- a/libguile/threads.c
+++ b/libguile/threads.c
@@ -39,6 +39,7 @@
#endif
#include "libguile/bdw-gc.h"
+#include "libguile/pairs.h"
#include <gc/gc_mark.h>
#include "libguile/_scm.h"
diff --git a/libguile/throw.c b/libguile/throw.c
index 1dbdf7b80..23163e43b 100644
--- a/libguile/throw.c
+++ b/libguile/throw.c
@@ -27,6 +27,7 @@
#include <stdio.h>
#include <unistdio.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/boolean.h"
#include "libguile/smob.h"
#include "libguile/eval.h"
diff --git a/libguile/trees.c b/libguile/trees.c
index c4cc06f46..21bb223c2 100644
--- a/libguile/trees.c
+++ b/libguile/trees.c
@@ -24,6 +24,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/eq.h"
#include "libguile/list.h"
diff --git a/libguile/values.c b/libguile/values.c
index 78fb93928..28cb93ddb 100644
--- a/libguile/values.c
+++ b/libguile/values.c
@@ -22,6 +22,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/eval.h"
#include "libguile/feature.h"
#include "libguile/gc.h"
diff --git a/libguile/vectors.c b/libguile/vectors.c
index 7c8e9bcba..1db079d5c 100644
--- a/libguile/vectors.c
+++ b/libguile/vectors.c
@@ -24,6 +24,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/eq.h"
#include "libguile/list.h"
diff --git a/libguile/vm.c b/libguile/vm.c
index 04f63f7f3..c6ea6ebd9 100644
--- a/libguile/vm.c
+++ b/libguile/vm.c
@@ -34,6 +34,7 @@
#endif
#include "libguile/bdw-gc.h"
+#include "libguile/pairs.h"
#include <gc/gc_mark.h>
#include "libguile/_scm.h"
diff --git a/libguile/weak-list.h b/libguile/weak-list.h
index 989cb7f0a..43e0be966 100644
--- a/libguile/weak-list.h
+++ b/libguile/weak-list.h
@@ -3,7 +3,7 @@
#ifndef SCM_WEAK_LIST_H
#define SCM_WEAK_LIST_H
-/* Copyright (C) 2016 Free Software Foundation, Inc.
+/* Copyright (C) 2016, 2018 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -24,6 +24,7 @@
#include "libguile/__scm.h"
+#include "libguile/pairs.h"
#include "libguile/weak-vector.h"
diff --git a/libguile/weak-set.c b/libguile/weak-set.c
index 30830895d..7a4d8dab1 100644
--- a/libguile/weak-set.c
+++ b/libguile/weak-set.c
@@ -25,6 +25,7 @@
#include <assert.h>
#include "libguile/_scm.h"
+#include "libguile/pairs.h"
#include "libguile/finalizers.h"
#include "libguile/hash.h"
#include "libguile/eval.h"
diff --git a/libguile/weak-table.c b/libguile/weak-table.c
index 7ef2e1b9b..f2ddf08d5 100644
--- a/libguile/weak-table.c
+++ b/libguile/weak-table.c
@@ -25,6 +25,7 @@
#include <assert.h>
#include "libguile/bdw-gc.h"
+#include "libguile/pairs.h"
#include <gc/gc_typed.h>
#include "libguile/_scm.h"
diff --git a/libguile/weak-vector.c b/libguile/weak-vector.c
index 66815a091..f2868eab4 100644
--- a/libguile/weak-vector.c
+++ b/libguile/weak-vector.c
@@ -28,6 +28,7 @@
#include "libguile/_scm.h"
#include "libguile/extensions.h"
#include "libguile/list.h"
+#include "libguile/pairs.h"
#include "libguile/weak-vector.h"