diff --git a/src/mapping.h b/src/mapping.h
index a148d51e709866129335d8f39a0264d1301f5b89..5ea107891dde0ddb04d5ad007a70136e9f60a07d 100644
--- a/src/mapping.h
+++ b/src/mapping.h
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: mapping.h,v 1.30 2000/08/09 12:49:28 grubba Exp $
+ * $Id: mapping.h,v 1.31 2000/09/03 23:16:22 mast Exp $
  */
 #ifndef MAPPING_H
 #define MAPPING_H
@@ -30,21 +30,25 @@ struct mapping_data
   INT32 size, hashsize;
   INT32 num_keypairs;
   TYPE_FIELD ind_types, val_types;
+  INT16 flags;
   struct keypair *free_list;
   struct keypair *hash[1 /* hashsize */ ];
   /* struct keypair data_block[ hashsize * AVG_LINK_LENGTH ] */
 };
 
+#undef MAPPING_SIZE_DEBUG
+/* This debug doesn't work with stealth_check_mapping_for_destruct and
+ * gc_recurse_weak_mapping. */
+
 struct mapping
 {
   INT32 refs;
 #ifdef PIKE_SECURITY
   struct object *prot;
 #endif
-#ifdef PIKE_DEBUG
+#ifdef MAPPING_SIZE_DEBUG
   INT32 debug_size;
 #endif
-  INT16 flags;
   struct mapping_data *data;
   struct mapping *next, *prev;
 };
@@ -57,6 +61,7 @@ extern struct mapping *gc_internal_mapping;
 #define m_sizeof(m) ((m)->data->size)
 #define m_ind_types(m) ((m)->data->ind_types)
 #define m_val_types(m) ((m)->data->val_types)
+#define mapping_get_flags(m) ((m)->data->flags)
 
 
 #define NEW_MAPPING_LOOP(md) \
@@ -85,6 +90,7 @@ void really_free_mapping_data(struct mapping_data *md);
 void do_free_mapping(struct mapping *m);
 struct mapping_data *copy_mapping_data(struct mapping_data *md);
 void mapping_fix_type_field(struct mapping *m);
+void mapping_set_flags(struct mapping *m, int flags);
 void low_mapping_insert(struct mapping *m,
 			struct svalue *key,
 			struct svalue *val,