scm_i_init_guardians_for_gc ();
scm_i_clear_mark_space ();
-
+ scm_i_find_heap_calls = 0;
/* Mark every thread's stack and registers */
scm_threads_mark_stacks ();
{
/* We are in debug mode. Check the ptr exhaustively. */
- valid_cell = valid_cell && (scm_i_find_heap_segment_containing_object (ptr) >= 0);
+ valid_cell = valid_cell && scm_in_heap_p (ptr);
}
#endif
unsigned long scm_cells_allocated = 0;
unsigned long scm_last_cells_allocated = 0;
unsigned long scm_mallocated = 0;
-
+long int scm_i_find_heap_calls = 0;
/* Global GC sweep statistics since the last full GC. */
scm_t_sweep_statistics scm_i_gc_sweep_stats = { 0, 0 };
SCM_SYMBOL (sym_gc_mark_time_taken, "gc-mark-time-taken");
SCM_SYMBOL (sym_times, "gc-times");
SCM_SYMBOL (sym_cells_marked, "cells-marked");
+SCM_SYMBOL (sym_cells_marked_conservatively, "cells-marked-conservatively");
SCM_SYMBOL (sym_cells_swept, "cells-swept");
SCM_SYMBOL (sym_malloc_yield, "malloc-yield");
SCM_SYMBOL (sym_cell_yield, "cell-yield");
unsigned long int local_scm_gc_times;
unsigned long int local_scm_gc_mark_time_taken;
unsigned long int local_protected_obj_count;
+ unsigned long int local_conservative_scan_count;
double local_scm_gc_cells_swept;
double local_scm_gc_cells_marked;
double local_scm_total_cells_allocated;
/* Below, we cons to produce the resulting list. We want a snapshot of
* the heap situation before consing.
*/
+ local_conservative_scan_count = scm_i_find_heap_calls;
local_scm_mtrigger = scm_mtrigger;
local_scm_mallocated = scm_mallocated;
local_scm_heap_size =
scm_from_double (local_scm_total_cells_allocated)),
scm_cons (sym_heap_size,
scm_from_ulong (local_scm_heap_size)),
+ scm_cons (sym_cells_marked_conservatively,
+ scm_from_ulong (local_conservative_scan_count)),
scm_cons (sym_mallocated,
scm_from_ulong (local_scm_mallocated)),
scm_cons (sym_mtrigger,