/* controlling variables */

/* check_heap_stats_order_1  -- controls 1st order heap breakdown display */
int check_heap_stats_order_1 = 1;

/* check_heap_stats_order_2  -- controls 2nd order heap breakdown display */
int check_heap_stats_order_2 = 1;

/* check_reference_trails  -- controls tracing reference trails */
int check_reference_trails = 1; 


#include "heap-utils.h"


void display_stats_for_memory_usage ()
{
  if (check_heap_stats_order_1) {
    display_heap_stats_order_1();
  }
  if (check_heap_stats_order_2) {
    display_heap_stats_order_2();
  }
  if (check_reference_trails) {
    display_reference_trails();
  }
}



#include "break.c"


void display_wrapper_breakpoints()
{
  mps_lib_FILE *stream = mps_lib_get_stdout();
  if (wrapper_breaks_cursor >= 0)
    {
      int i;
      mps_lib_fputs("Object allocation breakpoints\n\n", stream);
      mps_lib_fputs("   (class-name)                                    (count)\n\n", stream);
      for (i = 0; i < wrapper_breaks_cursor + 1; i++) {
	wrapper_stats_t wrapper_record = wrapper_breaks + i;
	char *class_name = class_name_from_wrapper(wrapper_record->wrapper_address);

	mps_lib_fputs_(class_name, class_name_size, stream);
	display_padding_for_string(class_name, ' ', class_name_size, stream);
	display_integer(wrapper_record->usage_size, stream);
	mps_lib_fputc('\n', stream);
      }
    }
  else
    mps_lib_fputs("No active object allocation breakpoints\n\n", stream);
}


syntax highlighted by Code2HTML, v. 0.9.1