+
+Lisp_Object *staticvec_nodump[200];
+int staticidx_nodump;
+
+/* Put an entry in staticvec_nodump, pointing at the variable whose address is given
+ */
+void
+staticpro_nodump (Lisp_Object *varaddress)
+{
+ /* #### This is now a dubious assert() since this routine may be called */
+ /* by Lisp attempting to load a DLL. */
+ assert (staticidx_nodump < countof (staticvec_nodump));
+ staticvec_nodump[staticidx_nodump++] = varaddress;
+}
+
+
+struct pdump_dumpstructinfo dumpstructvec[200];
+int dumpstructidx;
+
+/* Put an entry in dumpstructvec, pointing at the variable whose address is given
+ */
+void
+dumpstruct (void *varaddress, const struct struct_description *desc)
+{
+ assert (dumpstructidx < countof (dumpstructvec));
+ dumpstructvec[dumpstructidx].data = varaddress;
+ dumpstructvec[dumpstructidx].desc = desc;
+ dumpstructidx++;
+}
+
+struct pdump_dumpopaqueinfo dumpopaquevec[250];
+int dumpopaqueidx;
+
+/* Put an entry in dumpopaquevec, pointing at the variable whose address is given
+ */
+void
+dumpopaque (void *varaddress, size_t size)
+{
+ assert (dumpopaqueidx < countof (dumpopaquevec));
+
+ dumpopaquevec[dumpopaqueidx].data = varaddress;
+ dumpopaquevec[dumpopaqueidx].size = size;
+ dumpopaqueidx++;
+}
+
+Lisp_Object *pdump_wirevec[50];
+int pdump_wireidx;
+
+/* Put an entry in pdump_wirevec, pointing at the variable whose address is given
+ */
+void
+pdump_wire (Lisp_Object *varaddress)
+{
+ assert (pdump_wireidx < countof (pdump_wirevec));
+ pdump_wirevec[pdump_wireidx++] = varaddress;
+}
+
+
+Lisp_Object *pdump_wirevec_list[50];
+int pdump_wireidx_list;
+
+/* Put an entry in pdump_wirevec_list, pointing at the variable whose address is given
+ */
+void
+pdump_wire_list (Lisp_Object *varaddress)
+{
+ assert (pdump_wireidx_list < countof (pdump_wirevec_list));
+ pdump_wirevec_list[pdump_wireidx_list++] = varaddress;
+}
+
+#ifdef ERROR_CHECK_GC
+#define GC_CHECK_LHEADER_INVARIANTS(lheader) do { \
+ struct lrecord_header * GCLI_lh = (lheader); \
+ assert (GCLI_lh != 0); \
+ assert (GCLI_lh->type < lrecord_type_count); \
+ assert (! C_READONLY_RECORD_HEADER_P (GCLI_lh) || \
+ (MARKED_RECORD_HEADER_P (GCLI_lh) && \
+ LISP_READONLY_RECORD_HEADER_P (GCLI_lh))); \
+} while (0)
+#else
+#define GC_CHECK_LHEADER_INVARIANTS(lheader)
+#endif
+