* pthread-threads.h: New, implement pthread-like API by deferring to
[bpt/guile.git] / libguile / gc.h
index 7161e38..6e1fec9 100644 (file)
@@ -107,10 +107,10 @@ typedef struct scm_t_cell
 #define SCM_GC_CLEAR_CARD_FLAG(card, shift) \
     (SCM_GC_SET_CARD_FLAGS (card, SCM_GC_GET_CARD_FLAGS(card) & ~(1L << (shift))))
 
-#define SCM_GC_CARDF_DOUBLECELL 0
-
-#define SCM_GC_CARD_DOUBLECELLP(card)    SCM_GC_GET_CARD_FLAG (card, SCM_GC_CARDF_DOUBLECELL)
-#define SCM_GC_SET_CARD_DOUBLECELL(card) SCM_GC_SET_CARD_FLAG (card, SCM_GC_CARDF_DOUBLECELL)
+/*
+  Remove card flags. They hamper lazy initialization, and aren't used
+  anyways.
+ */
 
 /* card addressing. for efficiency, cards are *always* aligned to
    SCM_GC_CARD_SIZE. */
@@ -218,6 +218,7 @@ typedef unsigned long scm_t_c_bvec_long;
 #define SCM_SET_CELL_TYPE(x, t) SCM_SET_CELL_WORD_0 (x, t)
 
 
+
 /* Freelists consist of linked cells where the type entry holds the value
  * scm_tc_free_cell and the second entry holds a pointer to the next cell of
  * the freelist.  Due to this structure, freelist cells are not cons cells
@@ -245,7 +246,12 @@ typedef unsigned long scm_t_c_bvec_long;
 
 
 #if (SCM_DEBUG_CELL_ACCESSES == 1)
-SCM_API unsigned int scm_debug_cell_accesses_p;
+/* Set this to != 0 if every cell that is accessed shall be checked:
+ */
+SCM_API int scm_debug_cell_accesses_p;
+SCM_API int scm_expensive_debug_cell_accesses_p;
+SCM_API int scm_debug_cells_gc_interval ;
+void scm_i_expensive_validation_check (SCM cell);
 #endif
 
 SCM_API int scm_block_gc;
@@ -274,17 +280,18 @@ SCM_API size_t scm_max_segment_size;
   Deprecated scm_freelist, scm_master_freelist.
   No warning; this is not a user serviceable part.
  */
-SCM_API SCM scm_i_freelist;
-SCM_API struct scm_t_cell_type_statistics scm_i_master_freelist;
-SCM_API SCM scm_i_freelist2;
-SCM_API struct scm_t_cell_type_statistics scm_i_master_freelist2;
+extern SCM scm_i_freelist;
+extern struct scm_t_cell_type_statistics scm_i_master_freelist;
+extern SCM scm_i_freelist2;
+extern struct scm_t_cell_type_statistics scm_i_master_freelist2;
+
 
 SCM_API unsigned long scm_gc_cells_swept;
 SCM_API unsigned long scm_gc_cells_collected;
 SCM_API unsigned long scm_gc_cells_collected;
 SCM_API unsigned long scm_gc_malloc_collected;
 SCM_API unsigned long scm_gc_ports_collected;
-SCM_API long scm_cells_allocated;
+SCM_API unsigned long scm_cells_allocated;
 SCM_API int scm_gc_cell_yield_percentage;
 SCM_API int scm_gc_malloc_yield_percentage;
 SCM_API unsigned long scm_mallocated;