XXX: Indirection counting
authorBen Gamari <ben@smart-cactus.org>
Mon, 22 Apr 2019 15:30:38 +0000 (11:30 -0400)
committerBen Gamari <ben@smart-cactus.org>
Wed, 19 Jun 2019 01:44:00 +0000 (21:44 -0400)
rts/Stats.c
rts/StgMiscClosures.cmm

index 20e833f..ec249e3 100644 (file)
@@ -600,6 +600,8 @@ stat_endGC (Capability *cap, gc_thread *initiating_gct, W_ live, W_ copied, W_ s
     }
 }
 
+StgWord ben_IND=0;
+
 /* -----------------------------------------------------------------------------
    Called at the beginning of each Retainer Profiliing
    -------------------------------------------------------------------------- */
@@ -771,6 +773,8 @@ static void free_RTSSummaryStats(RTSSummaryStats * sum)
 
 static void report_summary(const RTSSummaryStats* sum)
 {
+    statsPrintf("ben_IND %lu\n", ben_IND);
+
     // We should do no calculation, other than unit changes and formatting, and
     // we should not not use any data from outside of globals, sum and stats
     // here. See Note [RTS Stats Reporting]
index fdd9f15..d85db82 100644 (file)
@@ -244,6 +244,7 @@ INFO_TABLE(stg_IND,1,0,IND,"IND","IND")
     TICK_ENT_DYN_IND(); /* tick */
     node = UNTAG(StgInd_indirectee(node));
     TICK_ENT_VIA_NODE();
+    W_[ben_IND] = W_[ben_IND] + 1;
     jump %GET_ENTRY(node) (node);
 }
 #else
@@ -252,6 +253,7 @@ INFO_TABLE(stg_IND,1,0,IND,"IND","IND")
     TICK_ENT_DYN_IND(); /* tick */
     R1 = UNTAG(StgInd_indirectee(R1));
     TICK_ENT_VIA_NODE();
+    W_[ben_IND] = W_[ben_IND] + 1;
     jump %GET_ENTRY(R1) [R1];
 }
 #endif
@@ -262,6 +264,7 @@ INFO_TABLE(stg_IND_direct,1,0,IND,"IND","IND")
     TICK_ENT_DYN_IND(); /* tick */
     node = StgInd_indirectee(node);
     TICK_ENT_VIA_NODE();
+    W_[ben_IND] = W_[ben_IND] + 1;
     jump %ENTRY_CODE(Sp(0)) (node);
 }
 
@@ -290,6 +293,7 @@ INFO_TABLE(stg_BLACKHOLE,1,0,BLACKHOLE,"BLACKHOLE","BLACKHOLE")
     P_ p, bq, msg;
 
     TICK_ENT_DYN_IND(); /* tick */
+    W_[ben_IND] = W_[ben_IND] + 1;
 
 retry:
     p = StgInd_indirectee(node);