+
+void
+sgen_pin_stats_register_global_remset (char *obj)
+{
+ GlobalRemsetClassEntry empty_entry;
+ GlobalRemsetClassEntry *entry;
+
+ memset (&empty_entry, 0, sizeof (GlobalRemsetClassEntry));
+ entry = lookup_class_entry (&global_remset_class_hash_table, ((MonoVTable*)SGEN_LOAD_VTABLE (obj))->klass, &empty_entry);
+
+ ++entry->num_remsets;
+}
+
+void
+sgen_pin_stats_print_class_stats (void)
+{
+ char *name;
+ PinnedClassEntry *pinned_entry;
+ GlobalRemsetClassEntry *remset_entry;
+
+ g_print ("\n%-50s %10s %10s %10s\n", "Class", "Stack", "Static", "Other");
+ SGEN_HASH_TABLE_FOREACH (&pinned_class_hash_table, name, pinned_entry) {
+ int i;
+ g_print ("%-50s", name);
+ for (i = 0; i < PIN_TYPE_MAX; ++i)
+ g_print (" %10ld", pinned_entry->num_pins [i]);
+ g_print ("\n");
+ } SGEN_HASH_TABLE_FOREACH_END;
+
+ g_print ("\n%-50s %10s\n", "Class", "#Remsets");
+ SGEN_HASH_TABLE_FOREACH (&global_remset_class_hash_table, name, remset_entry) {
+ g_print ("%-50s %10ld\n", name, remset_entry->num_remsets);
+ } SGEN_HASH_TABLE_FOREACH_END;
+}
+
+size_t
+sgen_pin_stats_get_pinned_byte_count (int pin_type)
+{
+ return pinned_byte_counts [pin_type];
+}
+
+ObjectList*
+sgen_pin_stats_get_object_list (void)
+{
+ return pinned_objects;
+}
+
+#endif /* HAVE_SGEN_GC */