Add some comments in new/old gc bridges
[mono.git] / mono / metadata / sgen-old-bridge.c
index a93cc7734ade79befcc811e6a8a4bf05047531a8..d33d5d86815d795db6168cf97b9e0f24b9c3f1ff 100644 (file)
@@ -41,11 +41,12 @@ typedef struct {
        DynArray array;
 } DynSCCArray;
 
-
 /*
+ * Bridge data for a single managed object
+ *
  * FIXME: Optimizations:
  *
- * Don't allocate a scrs array for just one source.  Most objects have
+ * Don't allocate a srcs array for just one source.  Most objects have
  * just one source, so use the srcs pointer itself.
  */
 typedef struct _HashEntry {
@@ -56,8 +57,10 @@ typedef struct _HashEntry {
 
        int finishing_time;
 
+       // "Source" managed objects pointing at this destination
        DynPtrArray srcs;
 
+       // Index in sccs array of SCC this object was folded into
        int scc_index;
 } HashEntry;
 
@@ -66,13 +69,19 @@ typedef struct {
        double weight;
 } HashEntryWithAccounting;
 
+// The graph of managed objects/HashEntries is reduced to a graph of strongly connected components
 typedef struct _SCC {
        int index;
        int api_index;
+
+       // How many bridged objects does this SCC hold references to?
        int num_bridge_entries;
+
+       // Index in global sccs array of SCCs holding pointers to this SCC
        DynIntArray xrefs;              /* these are incoming, not outgoing */
 } SCC;
 
+// Maps managed objects to corresponding HashEntry stricts
 static SgenHashTable hash_table = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_OLD_BRIDGE_HASH_TABLE, INTERNAL_MEM_OLD_BRIDGE_HASH_TABLE_ENTRY, sizeof (HashEntry), mono_aligned_addr_hash, NULL);
 
 static int current_time;