svf-tools 1.0.527 → 1.0.528

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -897,7 +897,7 @@ Additional Inherited Members</h2></td></tr>
897
897
  <p>Statistics of CHA and callgraph. </p>
898
898
 
899
899
  <p class="definition">Definition at line <a class="el" href="TypeAnalysis_8cpp_source.html#l00097">97</a> of file <a class="el" href="TypeAnalysis_8cpp_source.html">TypeAnalysis.cpp</a>.</p>
900
- <div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;{</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a> *<a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a> = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a>&gt;(<a class="code" href="classSVF_1_1PointerAnalysis.html#ae2cc7cd0803dbd90639140e71b06b1b5">getCHGraph</a>());</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (chgraph == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;dumpCHAStats only implemented for standard CHGraph.\n&quot;</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pure_abstract_class_num = 0,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; multi_inheritance_class_num = 0;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it-&gt;second;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;class &quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1CHNode.html#af6e71c1a932464b1b615fc177f5af089">getName</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; pure_abstract_class_num++;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a224a394537fae62e64cf62a0d4fdd430">isMultiInheritance</a>())</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; multi_inheritance_class_num++;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;class_num:\t&quot;</span> &lt;&lt; chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;pure_abstract_class_num:\t&quot;</span> &lt;&lt; pure_abstract_class_num &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;multi_inheritance_class_num:\t&quot;</span> &lt;&lt; multi_inheritance_class_num &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> * count the following info:</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> * vtblnum</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> * total vfunction</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> * vtbl max vfunction</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> * pure abstract class</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vtblnum = 0,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; vfunc_total = 0,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; vtbl_max = 0,</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; pure_abstract = 0;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; set&lt;const SVFFunction*&gt; allVirtualFunctions;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it-&gt;second;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; pure_abstract++;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vfuncs_size = 0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> vector&lt;CHNode::FuncVector&gt;&amp; vecs = node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a5df1cf4d51bf3406d188c96bc9aae0af">getVirtualFunctionVectors</a>();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">for</span> (vector&lt;CHNode::FuncVector&gt;::const_iterator vit = vecs.begin(),</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; veit = vecs.end(); vit != veit; ++vit)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; vfuncs_size += (*vit).size();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">for</span> (vector&lt;const SVFFunction*&gt;::const_iterator fit = (*vit).begin(),</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; feit = (*vit).end(); fit != feit; ++fit)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = *fit;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; allVirtualFunctions.insert(func);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (vfuncs_size &gt; 0)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; vtblnum++;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (vfuncs_size &gt; vtbl_max)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; vtbl_max = vfuncs_size;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; vfunc_total = allVirtualFunctions.size();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;vtblnum:\t&quot;</span> &lt;&lt; vtblnum &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;vtbl_average:\t&quot;</span> &lt;&lt; (double)(vfunc_total)/vtblnum &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;vtbl_max:\t&quot;</span> &lt;&lt; vtbl_max &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
900
+ <div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;{</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a> *<a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a> = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a>&gt;(<a class="code" href="classSVF_1_1PointerAnalysis.html#ae2cc7cd0803dbd90639140e71b06b1b5">getCHGraph</a>());</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (chgraph == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;dumpCHAStats only implemented for standard CHGraph.\n&quot;</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pure_abstract_class_num = 0,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; multi_inheritance_class_num = 0;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it-&gt;second;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;class &quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1CHNode.html#af6e71c1a932464b1b615fc177f5af089">getName</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; pure_abstract_class_num++;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a224a394537fae62e64cf62a0d4fdd430">isMultiInheritance</a>())</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; multi_inheritance_class_num++;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;class_num:\t&quot;</span> &lt;&lt; chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;pure_abstract_class_num:\t&quot;</span> &lt;&lt; pure_abstract_class_num &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;multi_inheritance_class_num:\t&quot;</span> &lt;&lt; multi_inheritance_class_num &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> * count the following info:</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> * vtblnum</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> * total vfunction</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> * vtbl max vfunction</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> * pure abstract class</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vtblnum = 0,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; vfunc_total = 0,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; vtbl_max = 0,</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; pure_abstract = 0;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; set&lt;const SVFFunction*&gt; allVirtualFunctions;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it-&gt;second;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; pure_abstract++;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vfuncs_size = 0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> vector&lt;CHNode::FuncVector&gt;&amp; vecs = node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a5df1cf4d51bf3406d188c96bc9aae0af">getVirtualFunctionVectors</a>();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">for</span> (vector&lt;CHNode::FuncVector&gt;::const_iterator vit = vecs.begin(),</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; veit = vecs.end(); vit != veit; ++vit)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; vfuncs_size += (*vit).size();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">for</span> (vector&lt;const SVFFunction*&gt;::const_iterator fit = (*vit).begin(),</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; feit = (*vit).end(); fit != feit; ++fit)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = *fit;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; allVirtualFunctions.insert(func);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (vfuncs_size &gt; 0)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; vtblnum++;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (vfuncs_size &gt; vtbl_max)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; vtbl_max = vfuncs_size;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; vfunc_total = allVirtualFunctions.size();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;vtblnum:\t&quot;</span> &lt;&lt; vtblnum &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;vtbl_average:\t&quot;</span> &lt;&lt; (double)(vfunc_total)/vtblnum &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;vtbl_max:\t&quot;</span> &lt;&lt; vtbl_max &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;pure_abstract:\t&quot;</span> &lt;&lt; pure_abstract &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
901
901
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00418">GenericGraph.h:418</a></div></div>
902
902
  <div class="ttc" id="classSVF_1_1CHNode_html"><div class="ttname"><a href="classSVF_1_1CHNode.html">SVF::CHNode</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00104">CHG.h:104</a></div></div>
903
903
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
@@ -484,7 +484,7 @@ Additional Inherited Members</h2></td></tr>
484
484
  <p>Reimplemented from <a class="el" href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497">SVF::PTAStat</a>.</p>
485
485
 
486
486
  <p class="definition">Definition at line <a class="el" href="VersionedFlowSensitiveStat_8cpp_source.html#l00035">35</a> of file <a class="el" href="VersionedFlowSensitiveStat_8cpp_source.html">VersionedFlowSensitiveStat.cpp</a>.</p>
487
- <div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// Largely based on that in FlowSensitiveStat. Would be better to split the FSStat version</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// and reuse code rather than copy.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; assert(SVFUtil::isa&lt;VersionedFlowSensitive&gt;(<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>) &amp;&amp; <span class="stringliteral">&quot;VFSStat::performStat: not given VFSPTA.&quot;</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afe854f7416ea408104721a083ee9fee0">endClk</a>();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a6664f28eab3052988ab9e89766373981">clearStat</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *pag = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ad7fe08f5d684e3411f8f28ec346bd814">versionStat</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#acbe0a777f2c00b142a94ce2b974fd5d5">ptsSizeStat</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fiObjNumber = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fsObjNumber = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;SymID&gt;</a> nodeSet;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVFIR::const_iterator</a> it = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = it-&gt;second;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ObjVar&gt;(pagNode))</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a> *memObj = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(nodeId);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> baseId = memObj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (nodeSet.insert(baseId).second)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (memObj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>()) fiObjNumber++;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">else</span> fsObjNumber++;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">unsigned</span> numOfCopy = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">unsigned</span> numOfStore = 0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">unsigned</span> numOfNode = 0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVFG::iterator</a> it = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; numOfNode++;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* svfgNode = it-&gt;second;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CopySVFGNode&gt;(svfgNode)) numOfCopy++;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;StoreSVFGNode&gt;(svfgNode)) numOfStore++;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497">PTAStat::performStat</a>();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a25001a6d794d91056f37d954d9660910">TotalAnalysisTime</a>] = (<a class="code" href="classSVF_1_1PTAStat.html#a267ba4aac2e7ceb65f008f9486d3d9f7">endTime</a> - <a class="code" href="classSVF_1_1PTAStat.html#a59e0fe6fa506f1cf319b5acaf9d28be9">startTime</a>)/<a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;SolveTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a4202f837e863a48712765cc346d8b514">solveTime</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;SCCTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#af496fa9aa2f4d59594950b2ad121deff">sccTime</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;ProcessTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72">processTime</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;PropagationTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#ac4d4b42bb96006801597f81ed3c4b337">propagationTime</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;DirectPropaTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#ae086de68233375be42185f0af706687a">directPropaTime</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;IndirectPropaTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a2feaa4b7a72989b311e9084a81320254">indirectPropaTime</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;Strong/WeakUpdTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#af5a94d14096ae2bbc47b3b3b9f723226">updateTime</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;AddrTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b">addrTime</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;CopyTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a888d6334e5e226c634680e4c0674dcfb">copyTime</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;GepTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a282126e5b67ed4e19aa40c81180b8290">gepTime</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;LoadTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067">loadTime</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;StoreTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a82b76087363b26fbe749653935569de7">storeTime</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;UpdateCGTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#afc140b6c8e78dc2d962f64fdf53b1e07">updateCallGraphTime</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;PhiTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#aee7d59b7ad00cf1cf6e3fba19513aa42">phiTime</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;meldLabelingTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a4a594c8d6ccaa27b5328c6388fdb258d">meldLabelingTime</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;PrelabelingTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a77a5dd9578def9a8e2b48e8b90d9b996">prelabelingTime</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;VersionPropTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451">versionPropTime</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a1a4d418fd9e5413e7ffbbfe57f5e0560">TotalNumOfPointers</a>] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a0212f3fe2f37363e8060f292c8cf7668">getValueNodeNum</a>() + pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a8a24e0bf9f95fc1519d4013e0e82dec9">getFieldValNodeNum</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#acd9848f15aa359550e86c7b857df84ed">TotalNumOfObjects</a>] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a82528aff779ccf8f723f57507dd2d991">getObjectNodeNum</a>() + pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3bbaafd80dfcae6ccc82c3d8b9d303ea">getFieldObjNodeNum</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a218748b401bdd3d5eebd45eea0026b12">NumOfPointers</a>] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a0212f3fe2f37363e8060f292c8cf7668">getValueNodeNum</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a5c09f41916e40d784a63e301584511f9">NumOfMemObjects</a>] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a82528aff779ccf8f723f57507dd2d991">getObjectNodeNum</a>();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a164249b9d35606387e628529c643d119">NumOfGepFieldPointers</a>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a8a24e0bf9f95fc1519d4013e0e82dec9">getFieldValNodeNum</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a16f9bdb5387471d0bd825c4a9cbcb22e">NumOfGepFieldObjects</a>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3bbaafd80dfcae6ccc82c3d8b9d303ea">getFieldObjNodeNum</a>();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalVersions&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a7efe89e95b5989f861d934d52d0bbce0">_NumVersions</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxVersionsForObj&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#aacce301a2c2613591dcd2afaccfcb380">_MaxVersions</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalNonEmptyVPts&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a59f2b0ca53d3b94ce596cd2a934e6976">_NumNonEmptyVersions</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalEmptyVPts&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a585f952ecdbd9fb559d2a5754a77d7b4">_NumEmptyVersions</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalExistingVPts&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac938f088c33346ad01ace37160ea8e81">_NumUsedVersions</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalSingleVObjs&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a54c05a4b7ca2af66bf74a5f87cd2c416">_NumSingleVersion</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a97a8b662356fc89cdd2cb9463fa5578b">NumOfCopys</a>] = numOfCopy;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a656ad9980ff05af396ed6754c50916e7">NumOfStores</a>] = numOfStore;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ae95fb0771a71ead27da79a45cac47a36">NumOfIterations</a>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1WPASolver.html#ab3369caa278da03e6e6697a839985cd6">numOfIteration</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ad51d2bd924f049e440b3d0dd0d423524">NumOfIndirectEdgeSolved</a>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad2c8654a6672472f9bf17681aa9b60bb">getNumOfResolvedIndCallEdge</a>();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;StrongUpdates&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305">svfgHasSU</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxPtsSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a99a7d0bbea0f015f5a656c33ee3ab88d">_MaxPtsSize</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxTopLvlPtsSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac07c5308abfe6cdb6b242a7548fe71c5">_MaxTopLvlPtsSize</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxVersionPtsSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8c4bfeab6bb30a16689d3c3c54a1057d">_MaxVersionPtsSize</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;AvgPtsSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a637485a4ee7fd5bfd5b78ee140fb3108">_AvgPtsSize</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;AvgTopLvlPtsSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8bf7eeabb0c390d4f5405d87ffad0492">_AvgTopLvlPtsSize</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;AvgVersionPtsSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a2e3c24fbb1faaf345e6806e99a07f782">_AvgVersionPtsSize</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedAddr&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#ae4253bc632ffffe2498263c90f456ca7">numOfProcessedAddr</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedCopy&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54">numOfProcessedCopy</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedGep&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e">numOfProcessedGep</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedLoad&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268">numOfProcessedLoad</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedStore&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a669e8f1dd8572b7dcff373c9787a923d">numOfProcessedStore</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedPhi&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#ac39abcb40e4b568ab59b7cf48ed10f70">numOfProcessedPhi</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedAParam&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#abdc30e45347579986c42795a436a1251">numOfProcessedActualParam</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedFRet&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#ae048cc5350cf2b075c05f5d84777a3c5">numOfProcessedFormalRet</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedMSSANode&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#af71a5ae3aef022c569e89f40515072cf">numOfProcessedMSSANode</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfNodesInSCC&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a9f3fe97202db8170fa9f47c5684bce75">numOfNodesInSCC</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxSCCSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#aa3d4703756a6297ab5c0756172024fe4">maxSCCSize</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfSCC&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3">numOfSCC</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;AverageSCCSize&quot;</span>] = (<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3">numOfSCC</a> == 0) ? 0 :</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; ((<span class="keywordtype">double</span>)<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a9f3fe97202db8170fa9f47c5684bce75">numOfNodesInSCC</a> / <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3">numOfSCC</a>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n****Versioned Flow-Sensitive Pointer Analysis Statistics****\n&quot;</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">PTAStat::printStat</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_ae2e58d18abcdddc7a5a87f4edc5f3b72"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72">SVF::FlowSensitive::processTime</a></div><div class="ttdeci">double processTime</div><div class="ttdoc">time of processNode. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00303">FlowSensitive.h:303</a></div></div>
487
+ <div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// Largely based on that in FlowSensitiveStat. Would be better to split the FSStat version</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// and reuse code rather than copy.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; assert(SVFUtil::isa&lt;VersionedFlowSensitive&gt;(<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>) &amp;&amp; <span class="stringliteral">&quot;VFSStat::performStat: not given VFSPTA.&quot;</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afe854f7416ea408104721a083ee9fee0">endClk</a>();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a6664f28eab3052988ab9e89766373981">clearStat</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *pag = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ad7fe08f5d684e3411f8f28ec346bd814">versionStat</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#acbe0a777f2c00b142a94ce2b974fd5d5">ptsSizeStat</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fiObjNumber = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fsObjNumber = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;SymID&gt;</a> nodeSet;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVFIR::const_iterator</a> it = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = it-&gt;first;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = it-&gt;second;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ObjVar&gt;(pagNode))</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a> *memObj = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(nodeId);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> baseId = memObj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (nodeSet.insert(baseId).second)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (memObj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>()) fiObjNumber++;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">else</span> fsObjNumber++;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ad1a7e7aec8f272017be7d0b6acda86a4">NumberOfFieldInsensitiveObj</a>] = fiObjNumber;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ab62eb21c7dc03f68b0509c31451b2e98">NumberOfFieldSensitiveObj</a>] = fsObjNumber;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">unsigned</span> numOfCopy = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordtype">unsigned</span> numOfStore = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVFG::iterator</a> it = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* svfgNode = it-&gt;second;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CopySVFGNode&gt;(svfgNode)) numOfCopy++;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;StoreSVFGNode&gt;(svfgNode)) numOfStore++;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497">PTAStat::performStat</a>();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a25001a6d794d91056f37d954d9660910">TotalAnalysisTime</a>] = (<a class="code" href="classSVF_1_1PTAStat.html#a267ba4aac2e7ceb65f008f9486d3d9f7">endTime</a> - <a class="code" href="classSVF_1_1PTAStat.html#a59e0fe6fa506f1cf319b5acaf9d28be9">startTime</a>)/<a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;SolveTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a4202f837e863a48712765cc346d8b514">solveTime</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;SCCTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#af496fa9aa2f4d59594950b2ad121deff">sccTime</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;ProcessTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72">processTime</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;PropagationTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#ac4d4b42bb96006801597f81ed3c4b337">propagationTime</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;DirectPropaTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#ae086de68233375be42185f0af706687a">directPropaTime</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;IndirectPropaTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a2feaa4b7a72989b311e9084a81320254">indirectPropaTime</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;Strong/WeakUpdTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#af5a94d14096ae2bbc47b3b3b9f723226">updateTime</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;AddrTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b">addrTime</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;CopyTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a888d6334e5e226c634680e4c0674dcfb">copyTime</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;GepTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a282126e5b67ed4e19aa40c81180b8290">gepTime</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;LoadTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067">loadTime</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;StoreTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a82b76087363b26fbe749653935569de7">storeTime</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;UpdateCGTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#afc140b6c8e78dc2d962f64fdf53b1e07">updateCallGraphTime</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;PhiTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#aee7d59b7ad00cf1cf6e3fba19513aa42">phiTime</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;meldLabelingTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a4a594c8d6ccaa27b5328c6388fdb258d">meldLabelingTime</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;PrelabelingTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a77a5dd9578def9a8e2b48e8b90d9b996">prelabelingTime</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;VersionPropTime&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451">versionPropTime</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a1a4d418fd9e5413e7ffbbfe57f5e0560">TotalNumOfPointers</a>] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a0212f3fe2f37363e8060f292c8cf7668">getValueNodeNum</a>() + pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a8a24e0bf9f95fc1519d4013e0e82dec9">getFieldValNodeNum</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#acd9848f15aa359550e86c7b857df84ed">TotalNumOfObjects</a>] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a82528aff779ccf8f723f57507dd2d991">getObjectNodeNum</a>() + pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3bbaafd80dfcae6ccc82c3d8b9d303ea">getFieldObjNodeNum</a>();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a218748b401bdd3d5eebd45eea0026b12">NumOfPointers</a>] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a0212f3fe2f37363e8060f292c8cf7668">getValueNodeNum</a>();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a5c09f41916e40d784a63e301584511f9">NumOfMemObjects</a>] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a82528aff779ccf8f723f57507dd2d991">getObjectNodeNum</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a164249b9d35606387e628529c643d119">NumOfGepFieldPointers</a>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a8a24e0bf9f95fc1519d4013e0e82dec9">getFieldValNodeNum</a>();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a16f9bdb5387471d0bd825c4a9cbcb22e">NumOfGepFieldObjects</a>] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3bbaafd80dfcae6ccc82c3d8b9d303ea">getFieldObjNodeNum</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalVersions&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a7efe89e95b5989f861d934d52d0bbce0">_NumVersions</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxVersionsForObj&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#aacce301a2c2613591dcd2afaccfcb380">_MaxVersions</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalNonEmptyVPts&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a59f2b0ca53d3b94ce596cd2a934e6976">_NumNonEmptyVersions</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalEmptyVPts&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a585f952ecdbd9fb559d2a5754a77d7b4">_NumEmptyVersions</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalExistingVPts&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac938f088c33346ad01ace37160ea8e81">_NumUsedVersions</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalSingleVObjs&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a54c05a4b7ca2af66bf74a5f87cd2c416">_NumSingleVersion</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a97a8b662356fc89cdd2cb9463fa5578b">NumOfCopys</a>] = numOfCopy;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a656ad9980ff05af396ed6754c50916e7">NumOfStores</a>] = numOfStore;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ae95fb0771a71ead27da79a45cac47a36">NumOfIterations</a>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1WPASolver.html#ab3369caa278da03e6e6697a839985cd6">numOfIteration</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ad51d2bd924f049e440b3d0dd0d423524">NumOfIndirectEdgeSolved</a>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ad2c8654a6672472f9bf17681aa9b60bb">getNumOfResolvedIndCallEdge</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;StrongUpdates&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305">svfgHasSU</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxPtsSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a99a7d0bbea0f015f5a656c33ee3ab88d">_MaxPtsSize</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxTopLvlPtsSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac07c5308abfe6cdb6b242a7548fe71c5">_MaxTopLvlPtsSize</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxVersionPtsSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8c4bfeab6bb30a16689d3c3c54a1057d">_MaxVersionPtsSize</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;AvgPtsSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a637485a4ee7fd5bfd5b78ee140fb3108">_AvgPtsSize</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;AvgTopLvlPtsSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8bf7eeabb0c390d4f5405d87ffad0492">_AvgTopLvlPtsSize</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;AvgVersionPtsSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a2e3c24fbb1faaf345e6806e99a07f782">_AvgVersionPtsSize</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedAddr&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#ae4253bc632ffffe2498263c90f456ca7">numOfProcessedAddr</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedCopy&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54">numOfProcessedCopy</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedGep&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e">numOfProcessedGep</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedLoad&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268">numOfProcessedLoad</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedStore&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a669e8f1dd8572b7dcff373c9787a923d">numOfProcessedStore</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedPhi&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#ac39abcb40e4b568ab59b7cf48ed10f70">numOfProcessedPhi</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedAParam&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#abdc30e45347579986c42795a436a1251">numOfProcessedActualParam</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedFRet&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#ae048cc5350cf2b075c05f5d84777a3c5">numOfProcessedFormalRet</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;ProcessedMSSANode&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#af71a5ae3aef022c569e89f40515072cf">numOfProcessedMSSANode</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfNodesInSCC&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a9f3fe97202db8170fa9f47c5684bce75">numOfNodesInSCC</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxSCCSize&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#aa3d4703756a6297ab5c0756172024fe4">maxSCCSize</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfSCC&quot;</span>] = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3">numOfSCC</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;AverageSCCSize&quot;</span>] = (<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3">numOfSCC</a> == 0) ? 0 :</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; ((<span class="keywordtype">double</span>)<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a9f3fe97202db8170fa9f47c5684bce75">numOfNodesInSCC</a> / <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3">numOfSCC</a>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n****Versioned Flow-Sensitive Pointer Analysis Statistics****\n&quot;</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">PTAStat::printStat</a>();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;}</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_ae2e58d18abcdddc7a5a87f4edc5f3b72"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ae2e58d18abcdddc7a5a87f4edc5f3b72">SVF::FlowSensitive::processTime</a></div><div class="ttdeci">double processTime</div><div class="ttdoc">time of processNode. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00303">FlowSensitive.h:303</a></div></div>
488
488
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_a8bf7eeabb0c390d4f5405d87ffad0492"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#a8bf7eeabb0c390d4f5405d87ffad0492">SVF::VersionedFlowSensitiveStat::_AvgTopLvlPtsSize</a></div><div class="ttdeci">double _AvgTopLvlPtsSize</div><div class="ttdoc">Average points-to set size for top-level pointers. </div><div class="ttdef"><b>Definition:</b> <a href="WPAStat_8h_source.html#l00216">WPAStat.h:216</a></div></div>
489
489
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
490
490
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_a2feaa4b7a72989b311e9084a81320254"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a2feaa4b7a72989b311e9084a81320254">SVF::FlowSensitive::indirectPropaTime</a></div><div class="ttdeci">double indirectPropaTime</div><div class="ttdoc">time of points-to propagation of top-level pointers </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00306">FlowSensitive.h:306</a></div></div>
@@ -514,8 +514,8 @@ Additional Inherited Members</h2></td></tr>
514
514
  <div class="ttc" id="classSVF_1_1PTAStat_html_a97a8b662356fc89cdd2cb9463fa5578b"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a97a8b662356fc89cdd2cb9463fa5578b">SVF::PTAStat::NumOfCopys</a></div><div class="ttdeci">static const char * NumOfCopys</div><div class="ttdoc">SVFIR copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00069">PTAStat.h:69</a></div></div>
515
515
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_ac39abcb40e4b568ab59b7cf48ed10f70"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ac39abcb40e4b568ab59b7cf48ed10f70">SVF::FlowSensitive::numOfProcessedPhi</a></div><div class="ttdeci">u32_t numOfProcessedPhi</div><div class="ttdoc">Number of processed Gep node. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00290">FlowSensitive.h:290</a></div></div>
516
516
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_a2e3c24fbb1faaf345e6806e99a07f782"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#a2e3c24fbb1faaf345e6806e99a07f782">SVF::VersionedFlowSensitiveStat::_AvgVersionPtsSize</a></div><div class="ttdeci">double _AvgVersionPtsSize</div><div class="ttdoc">Average points-to set size for address-taken objects. </div><div class="ttdef"><b>Definition:</b> <a href="WPAStat_8h_source.html#l00218">WPAStat.h:218</a></div></div>
517
- <div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_ad7fe08f5d684e3411f8f28ec346bd814"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#ad7fe08f5d684e3411f8f28ec346bd814">SVF::VersionedFlowSensitiveStat::versionStat</a></div><div class="ttdeci">void versionStat(void)</div><div class="ttdoc">For all version-related statistics. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitiveStat_8cpp_source.html#l00152">VersionedFlowSensitiveStat.cpp:152</a></div></div>
518
- <div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_acbe0a777f2c00b142a94ce2b974fd5d5"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#acbe0a777f2c00b142a94ce2b974fd5d5">SVF::VersionedFlowSensitiveStat::ptsSizeStat</a></div><div class="ttdeci">void ptsSizeStat(void)</div><div class="ttdoc">For all PTS size related statistics not handled by versionStat. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitiveStat_8cpp_source.html#l00196">VersionedFlowSensitiveStat.cpp:196</a></div></div>
517
+ <div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_ad7fe08f5d684e3411f8f28ec346bd814"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#ad7fe08f5d684e3411f8f28ec346bd814">SVF::VersionedFlowSensitiveStat::versionStat</a></div><div class="ttdeci">void versionStat(void)</div><div class="ttdoc">For all version-related statistics. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitiveStat_8cpp_source.html#l00153">VersionedFlowSensitiveStat.cpp:153</a></div></div>
518
+ <div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_acbe0a777f2c00b142a94ce2b974fd5d5"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#acbe0a777f2c00b142a94ce2b974fd5d5">SVF::VersionedFlowSensitiveStat::ptsSizeStat</a></div><div class="ttdeci">void ptsSizeStat(void)</div><div class="ttdoc">For all PTS size related statistics not handled by versionStat. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitiveStat_8cpp_source.html#l00197">VersionedFlowSensitiveStat.cpp:197</a></div></div>
519
519
  <div class="ttc" id="classSVF_1_1PTAStat_html_a267ba4aac2e7ceb65f008f9486d3d9f7"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a267ba4aac2e7ceb65f008f9486d3d9f7">SVF::PTAStat::endTime</a></div><div class="ttdeci">double endTime</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00153">PTAStat.h:153</a></div></div>
520
520
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af15bb6be283fee2fcc4b1fb7d8190451"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af15bb6be283fee2fcc4b1fb7d8190451">SVF::VersionedFlowSensitive::versionPropTime</a></div><div class="ttdeci">double versionPropTime</div><div class="ttdoc">Time to propagate versions to versions which rely on them. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00234">VersionedFlowSensitive.h:234</a></div></div>
521
521
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_a0e1a0bdbf4f81a3600ac26ac011ac268"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268">SVF::FlowSensitive::numOfProcessedLoad</a></div><div class="ttdeci">u32_t numOfProcessedLoad</div><div class="ttdoc">Number of processed Phi node. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00291">FlowSensitive.h:291</a></div></div>
@@ -536,6 +536,7 @@ Additional Inherited Members</h2></td></tr>
536
536
  <div class="ttc" id="namespaceSVF_html_ad11fe2412b2182365a662ff0e4639b48"><div class="ttname"><a href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SVF::SymID</a></div><div class="ttdeci">unsigned SymID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
537
537
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
538
538
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_a59f2b0ca53d3b94ce596cd2a934e6976"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#a59f2b0ca53d3b94ce596cd2a934e6976">SVF::VersionedFlowSensitiveStat::_NumNonEmptyVersions</a></div><div class="ttdeci">u32_t _NumNonEmptyVersions</div><div class="ttdoc">Number of versions with non-empty points-to sets (since versioning is over-approximate). </div><div class="ttdef"><b>Definition:</b> <a href="WPAStat_8h_source.html#l00197">WPAStat.h:197</a></div></div>
539
+ <div class="ttc" id="classSVF_1_1PTAStat_html_ab62eb21c7dc03f68b0509c31451b2e98"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ab62eb21c7dc03f68b0509c31451b2e98">SVF::PTAStat::NumberOfFieldSensitiveObj</a></div><div class="ttdeci">static const char * NumberOfFieldSensitiveObj</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00096">PTAStat.h:96</a></div></div>
539
540
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_a6664f28eab3052988ab9e89766373981"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#a6664f28eab3052988ab9e89766373981">SVF::VersionedFlowSensitiveStat::clearStat</a></div><div class="ttdeci">void clearStat()</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitiveStat_8cpp_source.html#l00018">VersionedFlowSensitiveStat.cpp:18</a></div></div>
540
541
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_a585f952ecdbd9fb559d2a5754a77d7b4"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#a585f952ecdbd9fb559d2a5754a77d7b4">SVF::VersionedFlowSensitiveStat::_NumEmptyVersions</a></div><div class="ttdeci">u32_t _NumEmptyVersions</div><div class="ttdoc">Number of versions with empty points-to sets (actually empty, not never-accessed). </div><div class="ttdef"><b>Definition:</b> <a href="WPAStat_8h_source.html#l00199">WPAStat.h:199</a></div></div>
541
542
  <div class="ttc" id="classSVF_1_1PTAStat_html_a164249b9d35606387e628529c643d119"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a164249b9d35606387e628529c643d119">SVF::PTAStat::NumOfGepFieldPointers</a></div><div class="ttdeci">static const char * NumOfGepFieldPointers</div><div class="ttdoc">SVFIR gep value node (field value, dynamically created dummy node) </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00099">PTAStat.h:99</a></div></div>
@@ -561,6 +562,7 @@ Additional Inherited Members</h2></td></tr>
561
562
  <div class="ttc" id="classSVF_1_1PTAStat_html_a59e0fe6fa506f1cf319b5acaf9d28be9"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a59e0fe6fa506f1cf319b5acaf9d28be9">SVF::PTAStat::startTime</a></div><div class="ttdeci">double startTime</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00152">PTAStat.h:152</a></div></div>
562
563
  <div class="ttc" id="classSVF_1_1PTAStat_html_a218748b401bdd3d5eebd45eea0026b12"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a218748b401bdd3d5eebd45eea0026b12">SVF::PTAStat::NumOfPointers</a></div><div class="ttdeci">static const char * NumOfPointers</div><div class="ttdoc">SVFIR value node, each of them maps to a llvm value. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00098">PTAStat.h:98</a></div></div>
563
564
  <div class="ttc" id="classSVF_1_1PTAStat_html_acd9848f15aa359550e86c7b857df84ed"><div class="ttname"><a href="classSVF_1_1PTAStat.html#acd9848f15aa359550e86c7b857df84ed">SVF::PTAStat::TotalNumOfObjects</a></div><div class="ttdeci">static const char * TotalNumOfObjects</div><div class="ttdoc">Total SVFIR object node. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00061">PTAStat.h:61</a></div></div>
565
+ <div class="ttc" id="classSVF_1_1PTAStat_html_ad1a7e7aec8f272017be7d0b6acda86a4"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ad1a7e7aec8f272017be7d0b6acda86a4">SVF::PTAStat::NumberOfFieldInsensitiveObj</a></div><div class="ttdeci">static const char * NumberOfFieldInsensitiveObj</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00095">PTAStat.h:95</a></div></div>
564
566
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_a54c05a4b7ca2af66bf74a5f87cd2c416"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#a54c05a4b7ca2af66bf74a5f87cd2c416">SVF::VersionedFlowSensitiveStat::_NumSingleVersion</a></div><div class="ttdeci">u32_t _NumSingleVersion</div><div class="ttdoc">Number of objects which have a single version. </div><div class="ttdef"><b>Definition:</b> <a href="WPAStat_8h_source.html#l00201">WPAStat.h:201</a></div></div>
565
567
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_ac07c5308abfe6cdb6b242a7548fe71c5"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#ac07c5308abfe6cdb6b242a7548fe71c5">SVF::VersionedFlowSensitiveStat::_MaxTopLvlPtsSize</a></div><div class="ttdeci">u32_t _MaxTopLvlPtsSize</div><div class="ttdoc">Max points-to set size in top-level pointers. </div><div class="ttdef"><b>Definition:</b> <a href="WPAStat_8h_source.html#l00206">WPAStat.h:206</a></div></div>
566
568
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_a19e017f3ed6429fa30687018e64dae54"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54">SVF::FlowSensitive::numOfProcessedCopy</a></div><div class="ttdeci">u32_t numOfProcessedCopy</div><div class="ttdoc">Number of processed Addr node. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00288">FlowSensitive.h:288</a></div></div>
@@ -603,8 +605,8 @@ Additional Inherited Members</h2></td></tr>
603
605
 
604
606
  <p>For all PTS size related statistics not handled by versionStat. </p>
605
607
 
606
- <p class="definition">Definition at line <a class="el" href="VersionedFlowSensitiveStat_8cpp_source.html#l00196">196</a> of file <a class="el" href="VersionedFlowSensitiveStat_8cpp_source.html">VersionedFlowSensitiveStat.cpp</a>.</p>
607
- <div class="fragment"><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalValidTopLvlPointers = 0;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalTopLvlPtsSize = 0;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> it = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a5c3b194ebada47baaccf0e9f3ab1a139">isValidTopLevelPtr</a>(it-&gt;second)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a> = it-&gt;first;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; totalValidTopLvlPointers++;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> size = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(p).<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; totalTopLvlPtsSize += size;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (size &gt; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac07c5308abfe6cdb6b242a7548fe71c5">_MaxTopLvlPtsSize</a>) <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac07c5308abfe6cdb6b242a7548fe71c5">_MaxTopLvlPtsSize</a> = size;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (totalValidTopLvlPointers != 0) <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8bf7eeabb0c390d4f5405d87ffad0492">_AvgTopLvlPtsSize</a> = (double)totalTopLvlPtsSize / (<span class="keywordtype">double</span>)totalValidTopLvlPointers;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a5ae1833ae26af8bcb819dad24e2390de">_TotalPtsSize</a> += totalTopLvlPtsSize;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a59f2b0ca53d3b94ce596cd2a934e6976">_NumNonEmptyVersions</a> + totalValidTopLvlPointers != 0)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a637485a4ee7fd5bfd5b78ee140fb3108">_AvgPtsSize</a> = (double)<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a5ae1833ae26af8bcb819dad24e2390de">_TotalPtsSize</a> / (<span class="keywordtype">double</span>)(<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a59f2b0ca53d3b94ce596cd2a934e6976">_NumNonEmptyVersions</a> + totalValidTopLvlPointers);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a99a7d0bbea0f015f5a656c33ee3ab88d">_MaxPtsSize</a> = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8c4bfeab6bb30a16689d3c3c54a1057d">_MaxVersionPtsSize</a> &gt; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac07c5308abfe6cdb6b242a7548fe71c5">_MaxTopLvlPtsSize</a> ? <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8c4bfeab6bb30a16689d3c3c54a1057d">_MaxVersionPtsSize</a> : <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac07c5308abfe6cdb6b242a7548fe71c5">_MaxTopLvlPtsSize</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;}</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_a8bf7eeabb0c390d4f5405d87ffad0492"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#a8bf7eeabb0c390d4f5405d87ffad0492">SVF::VersionedFlowSensitiveStat::_AvgTopLvlPtsSize</a></div><div class="ttdeci">double _AvgTopLvlPtsSize</div><div class="ttdoc">Average points-to set size for top-level pointers. </div><div class="ttdef"><b>Definition:</b> <a href="WPAStat_8h_source.html#l00216">WPAStat.h:216</a></div></div>
608
+ <p class="definition">Definition at line <a class="el" href="VersionedFlowSensitiveStat_8cpp_source.html#l00197">197</a> of file <a class="el" href="VersionedFlowSensitiveStat_8cpp_source.html">VersionedFlowSensitiveStat.cpp</a>.</p>
609
+ <div class="fragment"><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;{</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalValidTopLvlPointers = 0;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalTopLvlPtsSize = 0;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> it = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a5c3b194ebada47baaccf0e9f3ab1a139">isValidTopLevelPtr</a>(it-&gt;second)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a> = it-&gt;first;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; totalValidTopLvlPointers++;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> size = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(p).<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; totalTopLvlPtsSize += size;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (size &gt; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac07c5308abfe6cdb6b242a7548fe71c5">_MaxTopLvlPtsSize</a>) <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac07c5308abfe6cdb6b242a7548fe71c5">_MaxTopLvlPtsSize</a> = size;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">if</span> (totalValidTopLvlPointers != 0) <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8bf7eeabb0c390d4f5405d87ffad0492">_AvgTopLvlPtsSize</a> = (double)totalTopLvlPtsSize / (<span class="keywordtype">double</span>)totalValidTopLvlPointers;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a5ae1833ae26af8bcb819dad24e2390de">_TotalPtsSize</a> += totalTopLvlPtsSize;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a59f2b0ca53d3b94ce596cd2a934e6976">_NumNonEmptyVersions</a> + totalValidTopLvlPointers != 0)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a637485a4ee7fd5bfd5b78ee140fb3108">_AvgPtsSize</a> = (double)<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a5ae1833ae26af8bcb819dad24e2390de">_TotalPtsSize</a> / (<span class="keywordtype">double</span>)(<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a59f2b0ca53d3b94ce596cd2a934e6976">_NumNonEmptyVersions</a> + totalValidTopLvlPointers);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a99a7d0bbea0f015f5a656c33ee3ab88d">_MaxPtsSize</a> = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8c4bfeab6bb30a16689d3c3c54a1057d">_MaxVersionPtsSize</a> &gt; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac07c5308abfe6cdb6b242a7548fe71c5">_MaxTopLvlPtsSize</a> ? <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8c4bfeab6bb30a16689d3c3c54a1057d">_MaxVersionPtsSize</a> : <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac07c5308abfe6cdb6b242a7548fe71c5">_MaxTopLvlPtsSize</a>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;}</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_a8bf7eeabb0c390d4f5405d87ffad0492"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#a8bf7eeabb0c390d4f5405d87ffad0492">SVF::VersionedFlowSensitiveStat::_AvgTopLvlPtsSize</a></div><div class="ttdeci">double _AvgTopLvlPtsSize</div><div class="ttdoc">Average points-to set size for top-level pointers. </div><div class="ttdef"><b>Definition:</b> <a href="WPAStat_8h_source.html#l00216">WPAStat.h:216</a></div></div>
608
610
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
609
611
  <div class="ttc" id="cJSON_8cpp_html_a009ef1d888ab6dbe77e6b42b0b39f1ae"><div class="ttname"><a href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a></div><div class="ttdeci">cJSON * p</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02559">cJSON.cpp:2559</a></div></div>
610
612
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
@@ -651,8 +653,8 @@ Additional Inherited Members</h2></td></tr>
651
653
 
652
654
  <p>For all version-related statistics. </p>
653
655
 
654
- <p class="definition">Definition at line <a class="el" href="VersionedFlowSensitiveStat_8cpp_source.html#l00152">152</a> of file <a class="el" href="VersionedFlowSensitiveStat_8cpp_source.html">VersionedFlowSensitiveStat.cpp</a>.</p>
655
- <div class="fragment"><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// TODO! Need to merge yield/consume.</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a54c05a4b7ca2af66bf74a5f87cd2c416">_NumSingleVersion</a> = 0;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#aacce301a2c2613591dcd2afaccfcb380">_MaxVersions</a> = 0;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalVersionPtsSize = 0;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aa689d29ead80303b1ef1e1a91f31c296">VersionedFlowSensitive::LocVersionMap</a> *lvm :</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; &amp;<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">consume</a>, &amp;<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">yield</a></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; })</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af9a43f48b7d99cc6694f3ae3248fd8e0">VersionedFlowSensitive::ObjToVersionMap</a> &amp;lov : *lvm)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> VersionedFlowSensitive::ObjToVersionMap::value_type &amp;ov : lov)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o = ov.first;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v = ov.second;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; ++<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a7efe89e95b5989f861d934d52d0bbce0">_NumVersions</a>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="comment">// If the version was just over-approximate and never accessed, ignore.</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="comment">// TODO: with vPtD changed there is no interface to check if the PTS</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">// exists; an emptiness check is *not* an existence check.</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">vPtD</a>-&gt;<a class="code" href="classSVF_1_1VersionedPTData.html#adcba3355f96357493d8a7520ff00cc97">getPts</a>(<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a59f3dd74ed8c3e2fc48b9353ba2452aa">atKey</a>(o, v)).empty()) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;ovPts = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">vPtD</a>-&gt;<a class="code" href="classSVF_1_1VersionedPTData.html#adcba3355f96357493d8a7520ff00cc97">getPts</a>(<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a59f3dd74ed8c3e2fc48b9353ba2452aa">atKey</a>(o, v));</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (!ovPts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>()) ++<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a59f2b0ca53d3b94ce596cd2a934e6976">_NumNonEmptyVersions</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a585f952ecdbd9fb559d2a5754a77d7b4">_NumEmptyVersions</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a5ae1833ae26af8bcb819dad24e2390de">_TotalPtsSize</a> += ovPts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; totalVersionPtsSize += ovPts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (ovPts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() &gt; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8c4bfeab6bb30a16689d3c3c54a1057d">_MaxVersionPtsSize</a>) <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8c4bfeab6bb30a16689d3c3c54a1057d">_MaxVersionPtsSize</a> = ovPts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac938f088c33346ad01ace37160ea8e81">_NumUsedVersions</a> = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a59f2b0ca53d3b94ce596cd2a934e6976">_NumNonEmptyVersions</a> + <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a585f952ecdbd9fb559d2a5754a77d7b4">_NumEmptyVersions</a>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a59f2b0ca53d3b94ce596cd2a934e6976">_NumNonEmptyVersions</a> != 0) <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a2e3c24fbb1faaf345e6806e99a07f782">_AvgVersionPtsSize</a> = (double)totalVersionPtsSize / (<span class="keywordtype">double</span>)<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac938f088c33346ad01ace37160ea8e81">_NumUsedVersions</a>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a5ae1833ae26af8bcb819dad24e2390de">_TotalPtsSize</a> += totalVersionPtsSize;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;}</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aa689d29ead80303b1ef1e1a91f31c296"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aa689d29ead80303b1ef1e1a91f31c296">SVF::VersionedFlowSensitive::LocVersionMap</a></div><div class="ttdeci">std::vector&lt; ObjToVersionMap &gt; LocVersionMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00039">VersionedFlowSensitive.h:39</a></div></div>
656
+ <p class="definition">Definition at line <a class="el" href="VersionedFlowSensitiveStat_8cpp_source.html#l00153">153</a> of file <a class="el" href="VersionedFlowSensitiveStat_8cpp_source.html">VersionedFlowSensitiveStat.cpp</a>.</p>
657
+ <div class="fragment"><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;{</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">// TODO! Need to merge yield/consume.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a54c05a4b7ca2af66bf74a5f87cd2c416">_NumSingleVersion</a> = 0;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#aacce301a2c2613591dcd2afaccfcb380">_MaxVersions</a> = 0;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalVersionPtsSize = 0;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#aa689d29ead80303b1ef1e1a91f31c296">VersionedFlowSensitive::LocVersionMap</a> *lvm :</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; &amp;<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a2e4e6a84cbfd553ad9cca8fdf9fd4a8d">consume</a>, &amp;<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a16224ee60494bb1fdf1c8a1026fbe7ab">yield</a></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; })</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html#af9a43f48b7d99cc6694f3ae3248fd8e0">VersionedFlowSensitive::ObjToVersionMap</a> &amp;lov : *lvm)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> VersionedFlowSensitive::ObjToVersionMap::value_type &amp;ov : lov)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o = ov.first;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a9ec7a8dc63411ee3724a25a59191be0c">Version</a> v = ov.second;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; ++<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a7efe89e95b5989f861d934d52d0bbce0">_NumVersions</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="comment">// If the version was just over-approximate and never accessed, ignore.</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">// TODO: with vPtD changed there is no interface to check if the PTS</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">// exists; an emptiness check is *not* an existence check.</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">vPtD</a>-&gt;<a class="code" href="classSVF_1_1VersionedPTData.html#adcba3355f96357493d8a7520ff00cc97">getPts</a>(<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a59f3dd74ed8c3e2fc48b9353ba2452aa">atKey</a>(o, v)).empty()) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;ovPts = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">vPtD</a>-&gt;<a class="code" href="classSVF_1_1VersionedPTData.html#adcba3355f96357493d8a7520ff00cc97">getPts</a>(<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a19bde64f7e0ac99a2a6b49e78aa2e70f">vfspta</a>-&gt;<a class="code" href="classSVF_1_1VersionedFlowSensitive.html#a59f3dd74ed8c3e2fc48b9353ba2452aa">atKey</a>(o, v));</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span> (!ovPts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>()) ++<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a59f2b0ca53d3b94ce596cd2a934e6976">_NumNonEmptyVersions</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a585f952ecdbd9fb559d2a5754a77d7b4">_NumEmptyVersions</a>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a5ae1833ae26af8bcb819dad24e2390de">_TotalPtsSize</a> += ovPts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; totalVersionPtsSize += ovPts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (ovPts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() &gt; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8c4bfeab6bb30a16689d3c3c54a1057d">_MaxVersionPtsSize</a>) <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a8c4bfeab6bb30a16689d3c3c54a1057d">_MaxVersionPtsSize</a> = ovPts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac938f088c33346ad01ace37160ea8e81">_NumUsedVersions</a> = <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a59f2b0ca53d3b94ce596cd2a934e6976">_NumNonEmptyVersions</a> + <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a585f952ecdbd9fb559d2a5754a77d7b4">_NumEmptyVersions</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a59f2b0ca53d3b94ce596cd2a934e6976">_NumNonEmptyVersions</a> != 0) <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a2e3c24fbb1faaf345e6806e99a07f782">_AvgVersionPtsSize</a> = (double)totalVersionPtsSize / (<span class="keywordtype">double</span>)<a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#ac938f088c33346ad01ace37160ea8e81">_NumUsedVersions</a>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="classSVF_1_1VersionedFlowSensitiveStat.html#a5ae1833ae26af8bcb819dad24e2390de">_TotalPtsSize</a> += totalVersionPtsSize;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;}</div><div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aa689d29ead80303b1ef1e1a91f31c296"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aa689d29ead80303b1ef1e1a91f31c296">SVF::VersionedFlowSensitive::LocVersionMap</a></div><div class="ttdeci">std::vector&lt; ObjToVersionMap &gt; LocVersionMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00039">VersionedFlowSensitive.h:39</a></div></div>
656
658
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a59f3dd74ed8c3e2fc48b9353ba2452aa"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a59f3dd74ed8c3e2fc48b9353ba2452aa">SVF::VersionedFlowSensitive::atKey</a></div><div class="ttdeci">static VersionedVar atKey(NodeID, Version)</div><div class="ttdoc">Return key into vPtD for address-taken var of a specific version. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00024">VersionedFlowSensitive.cpp:24</a></div></div>
657
659
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
658
660
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitiveStat_html_a7efe89e95b5989f861d934d52d0bbce0"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitiveStat.html#a7efe89e95b5989f861d934d52d0bbce0">SVF::VersionedFlowSensitiveStat::_NumVersions</a></div><div class="ttdeci">u32_t _NumVersions</div><div class="ttdoc">Total number of versions across all objects. </div><div class="ttdef"><b>Definition:</b> <a href="WPAStat_8h_source.html#l00191">WPAStat.h:191</a></div></div>